Recentemente, descobri que nosso servidor não utiliza mais todos os 80 threads do sistema. Parece que 16 núcleos estão sempre ociosos, apesar da alta carga do sistema.
É um servidor Dell powerEdge R900, com 4 soquetes, 4 vezes um Xeon de 10 núcleos. Então 40 núcleos, com HT seus 80 threads. (CPU E7- 4850 a 2,00 GHz). A memória do sistema é de 512 GB com o Ubuntu 14.04.1 LTS. Ainda não reinicializei o servidor, esperava evitar isso.
uname -a Linux assembly 3.13.0-35-generic # 62-Ubuntu SMP sexta-feira, 15 de agosto 01:58:42 UTC 2014 x86_64 x86_64 x86_64 GNU / Linux
Vou verificar o seguinte:
Temperatura medida com i7z: (não pode exibir 4 soquetes
Velocidade da CPU a partir de cpuinfo 1994.00Mhz Frequência Verdadeira (sem contabilidade Turbo) 1994 MHz Soquete [0] - [núcleos físicos = 10, núcleos lógicos = 20, máximo de núcleos on-line sempre = 10] Multiplicador de CPU 15x || Frequência de clock do barramento (BCLK) 132,93 MHz TURBO ATIVADO em 10 núcleos, com Hyper Threading Frequência máxima sem considerar o Turbo 2126,93 MHz (132,93 x [16]) O multiplicador máximo de TURBO (se ativado) com núcleos 1/2/3/4/5/6 é 0x / 0x / 0x / 0x / 0x / 0x Frequência de Corrente Real 1994,02 MHz (Máximo de abaixo) Núcleo [id do núcleo]: Freq real (Mult.) C0% Parada (C1)% C3% C6% Temp Núcleo 1 [1]: 1994.01 (15.00x) 100 0 0 0 75 Núcleo 2 [5]: 1994,00 (15,00x) 100 0 0 0 77 Núcleo 3 [9]: 1994.02 (15.00x) 100 0 0 0 76 Núcleo 4 [13]: 1994,00 (15,00x) 100 0 0 0 77 Núcleo 5 [17]: 1994,00 (15,00x) 100 0 0 0 77 Núcleo 6 [21]: 1994,00 (15,00x) 97,7 0,404 0 1,86 77 Núcleo 7 [25]: 1994,00 (15,00x) 94,5 0 1 5,27 77 Núcleo 8 [29]: 1994,00 (15,00x) 100 0 0 0 76 Núcleo 9 [33]: 1994,00 (15,00x) 99,8 0 1 1 75 Núcleo 10 [37]: 1994,00 (15,00x) 100 0 0 0 73 Frequência máxima sem considerar o Turbo 2126,93 MHz (132,93 x [16]) O multiplicador máximo de TURBO (se ativado) com núcleos 1/2/3/4/5/6 é 0x / 0x / 0x / 0x / 0x / 0x Frequência de Corrente Real 1994,02 MHz (Máximo de abaixo) Núcleo [id do núcleo]: Freq real (Mult.) C0% Parada (C1)% C3% C6% Temp Núcleo 1 [1]: 1994.02 (15.00x) 100 0 0 0 74 Núcleo 2 [5]: 1994,00 (15,00x) 100 0 0 0 76 Núcleo 3 [9]: 1994.02 (15.00x) 100 0 0 0 76 Núcleo 4 [13]: 1994,00 (15,00x) 100 0 0 0 77 Núcleo 5 [17]: 1994,00 (15,00x) 100 0 0 0 76 Núcleo 6 [21]: 1994,00 (15,00x) 97 0 1 2,43 77 Núcleo 7 [25]: 1994,00 (15,00x) 92,9 0 1 6,81 77 C0 = Processador rodando sem parar00x) 100 0 0 0 75 C1 = Processador executando com paradas (Estados> C0 economizam energia) 1 1 75 C3 = Núcleos em execução com PLL desativado e cache de núcleo desativado 0 0 73 C6 = Tudo no estado principal do C3 + salvo no último nível de cache Os valores acima na tabela estão em porcentagem nos últimos 1 segundo [core-id] refere-se ao número do core-id em / proc / cpuinfo Mensagem 'Valores do Lixo' impressa quando os valores do lixo são lidos Ctrl + C para sair
Inativo: os últimos 16 núcleos estão 100% inativos:
mpstat -p ALL 1: Média: CPU% usr% nice% sys% iowait% irq% soft% steal% guest% gnice% ocioso Média: todos 70,69 0,00 0,70 0,00 0,00 0,00 0,00 0,00 0,00 0,00 28,61 Média: 0 92,93 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,07 Média: 1 94,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 6,00 Média: 2 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 Média: 3 83,33 0,00 2,08 0,00 0,00 0,00 0,00 0,00 0,00 0,00 14,58 Média: 4 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 Média: 5 100,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 .................................................. ........ Média: 64 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 65 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 66 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 67 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 68 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 69 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 70 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 71 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 72 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 73 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 74 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 75 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 76 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 77 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Média: 78 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 79 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Principais números de carga:
top - 17:41:48 até 35 dias, 6:28, 15 usuários, média de carga: 77.69, 70.48, 62.73 Tarefas: 1327 total, 44 em execução, 1281 em suspensão, 2 paradas, 0 zumbi % Cpu (s): 63,7 us, 13,6 sy, 0,0 ni, 22,3 id, 0,2 wa, 0,0 hi, 0,2 si, 0,0 st KiB Mem: 52837942 + total, 52553190 + usado, 2847524 grátis, 535660 buffers Troca KiB: 78124032 total, 2105608 usado, 76018416 grátis. 40637328 + Mem em cache
Às vezes, o% ocioso não é mais 100, mas um pouco menos, como você pode ver aqui, mas geralmente fica 100% ocioso.
Média: CPU% usr% nice% sys% iowait% irq% soft% steal% guest% gnice% ocioso Média: todos 70,69 0,00 0,70 0,00 0,00 0,00 0,00 0,00 0,00 0,00 28,61 Média: 64 0,13 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 99,87 Média: 65 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 66 0,00 0,00 2,63 0,00 0,00 0,00 0,00 0,00 0,00 97,37 Média: 67 0,00 0,00 0,13 0,13 0,00 0,00 0,00 0,00 0,00 99,75 Média: 68 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 69 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 70 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 71 0,00 0,00 0,12 0,00 0,00 0,00 0,00 0,00 0,00 99,88 Média: 72 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 73 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 74 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 75 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 76 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 77 0,00 0,00 0,13 0,00 0,00 0,00 0,00 0,00 0,00 99,87 Média: 78 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00 Média: 79 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 100,00
Também executei este comando para garantir que todos estejam online:
para COUNT no `seq 01 79`; faça eco 1> / sys / devices / system / cpu / cpu $ {COUNT} / online;
Com o programa HTop, eu posso visualizar uma barra de uso da CPU por thread e ver 64 barras preenchidas e 16 vazias (as últimas 16).
Quando tento iniciar um processo em um núcleo> 63, também falha ao fazê-lo:
root @ server: ~ # taskset -c 63 vez Uso: time [-apvV] [-f formato] [-o arquivo] [--append] [--verbose] [--portabilidade] [--format = formato] [- saída = arquivo] [- versão] Comando [--quiet] [--help] [arg ...] root @ server: ~ # taskset -c 64 vezes conjunto de tarefas: falha ao definir a afinidade do pid 0: argumento inválido root @ server: ~ # taskset -c 65 vezes conjunto de tarefas: falha ao definir a afinidade do pid 0: argumento inválido
Tópico relacionado: /ubuntu/536541/ubuntu-uses-only-2-out-of-4-processor-cores
Edição: Acontece que os núcleos são desligados em tempo real, mas não inicializam corretamente. Parece que existem processos em execução nesses núcleos indisponíveis, mas é impossível iniciar qualquer novo processo neles. De acordo com o log do dmesg, os núcleos são desativados e ativados rapidamente um após o outro. Devo dizer que era a intenção de desligar esses núcleos, então desativamos esse 'recurso'. Exemplo de log DMESG:
[12 de janeiro 12:42:40 2015] kvm: desativando a virtualização na CPU79 [12 de janeiro 12:42:40 2015] smpboot: CPU 79 agora está offline .... [12 de janeiro 12:43:12 2015] smpboot: Processador de inicialização 0 do nó 0 79 APIC 0xf3 [12 de janeiro 12:43:12 2015] kvm: habilitando a virtualização na CPU79
Ativando / desativando núcleos via:
para COUNT no `seq 64 79`; faça eco 1> / sys / devices / system / cpu / cpu $ {COUNT} / online; concluído
Nunca vinculamos esses comandos aos nossos 16 núcleos indisponíveis, pois normalmente os comandos acima funcionam corretamente. (também tentamos desativar o gerenciador de energia, mas isso não ajudou)
Respostas:
Nem todos os programas podem usar vários threads. php é um por exemplo. Se um processo php precisa de muita CPU, apenas 1 CPU chega ao máximo. E os outros ficarão ociosos.
fonte