CPU sobrecarregada mas nenhum processo está usando mais de 1% [duplicado]

6

Estou monitorando um servidor Cpanel (centos) que tem uma CPU de 2 núcleos (4 núcleos de CPU virtual) e parece estar sobrecarregado porque recebi esses valores usando top :

load average: 11.80, 13.30, 13.02
Cpu(s): 42.2%us, 11.7%sy,  0.0%ni, 35.6%id, 10.1%wa,  0.1%hi,  0.3%si,  0.0%st

Mas se eu olhar para a lista de processos (usando top ou ps) nenhum processo está usando mais que 1%

Além disso, a soma do uso da CPU do processo (%) é igual a 4 e se eu assumir que os valores 0% são números arredondados e alterá-lo para 0,04 (arredondado usando 1 dígito decimal é 0) a soma é 11 ( ainda menos de 100%).

Como posso interpretar corretamente esses dados ?, existem alguns processos ocultos que estão sobrecarregando meu cpu.

    
por Pablo 07.08.2015 / 17:58

3 respostas

8

No Linux, os processos bloqueados também contribuem para as médias de carga. O comando ps -Al lista todos os processos. Na segunda coluna (S for State) de sua saída, você encontrará os estados do processo. Na maioria das vezes, tenho processos esperando pelo disco "D", que são contados para as médias de carga.

A lista completa de estados da página man do ps é

   D    Uninterruptible sleep (usually IO)
   R    Running or runnable (on run queue)
   S    Interruptible sleep (waiting for an event to complete)
   T    Stopped, either by a job control signal or because it is being
        traced.
   W    paging (not valid since the 2.6.xx kernel)
   X    dead (should never be seen)
   Z    Defunct ("zombie") process, terminated but not reaped by its
        parent.

Exemplo de saída

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0     1     0  0  80   0 -  4906 poll_s ?        00:00:23 init
1 S     0     2     0  0  80   0 -     0 kthrea ?        00:00:02 kthreadd
1 R     0     3     0 99  80   0 -     0        ?        01:00:02 runner
1 D     0     4     0  1  80   0 -     0        ?        01:00:02 loader

Se estes fossem seus únicos processos, veríamos uma carga de aproximadamente 2, 1 para o "corredor" de CPU e outro 1 para o carregador que está esperando pelo disco.

Muito precisa é a informação disponível em Wikipedia

An idle computer has a load number of 0. Each process using or waiting for CPU (the ready queue or run queue) increments the load number by 1. Most UNIX systems count only processes in the running (on CPU) or runnable (waiting for CPU) states. However, Linux also includes processes in uninterruptible sleep states (usually waiting for disk activity), which can lead to markedly different results if many processes remain blocked in I/O due to a busy or stalled I/O system.1 This, for example, includes processes blocking due to an NFS server failure or to slow media (e.g., USB 1.x storage devices). Such circumstances can result in an elevated load average, which does not reflect an actual increase in CPU use (but still gives an idea on how long users have to wait).

    
por 07.08.2015 / 19:44
1

As principais informações que você forneceu não significam necessariamente sobrecarga:

  • a CPU está 35% inativa
  • as médias de carga não são necessariamente muito grandes (depende do uso pretendido do servidor)
  • as informações sobre RAM e troca estão ausentes

Ou melhor, se sobrecarregar significa limitar alguma limitação, pode haver vários aspectos: Limitação da CPU, limitações de E / S de rede e / ou disco, limitações de uso de memória, etc.

Você não deve tentar combinar várias visualizações de carga / uso da CPU - elas geralmente significam coisas diferentes e as visualizações também são coletadas em diferentes timestamps (a coleção de estatísticas não é atômica):

  • média de carregamento significa o número de trabalhos na fila de execução, não o uso da CPU: link
  • os números de uso% da CPU no contexto do processo não precisam adicionar até 100% por vários motivos, aqui estão apenas alguns:
    • a CPU não gasta todos os seus ciclos no espaço de processo
    • vários ciclos gastos em um contexto de processo são contados de forma diferente na linha geral de uso% da CPU (o mesmo processo poderia estar em execução ou em espera nos estados de E / S durante o intervalo contábil, contribuindo para% us e% números wa na linha geral de uso% da CPU)
    • a CPU poderia ter gasto ciclos em processos que não duram mais, eles seriam contados na linha de uso geral da% de CPU, mas não presentes em nenhuma das linhas de processo
por 08.08.2015 / 14:58
-1

Peter está certo. Mas isso não respondeu às suas perguntas. Dê a ele 12 CPUs lógicas para que a carga fique abaixo do número de CPUs. Dessa forma, nenhum processo ou thread precisa aguardar ciclos adicionais da CPU para obter seu tempo de execução.

Ativar a visualização de tópicos também na parte superior.

Eu suspeito que você tenha alguns processos multi-segmentados lá.

11% A hora do sistema pode indicar um afunilamento de rede.

    
por 10.08.2015 / 23:25