Antes de mergulharmos em médias de carga Linux, devemos explorar as diferentes maneiras pelas quais a carga é calculada e abordar a medição mais comum da carga da CPU - uma porcentagem.
O Windows calcula a carga de maneira diferente do Linux e, como o Windows tem sido historicamente mais popular na área de trabalho, a definição de carga do Windows geralmente é entendida pela maioria dos usuários de computador. A maioria dos usuários do Windows viu a carga do sistema no gerenciador de tarefas exibido como uma porcentagem que varia de 0% a 100%.
No Windows, isso é derivado examinando como "ocupado" o Processo ocioso do sistema é e usando o inverso para representar a carga do sistema. Por exemplo, se o encadeamento ocioso estiver executando 99% do tempo, a carga da CPU no Windows seria de 1%. Esse valor é fácil de entender, mas fornece menos detalhes gerais sobre o verdadeiro status do sistema.
No Linux, a média de carga é representada por um número decimal a partir de 0.00. O valor pode ser definido aproximadamente como o número de processos no último minuto que tiveram que esperar sua vez de execução. Ao contrário do Windows, a média de carga do Linux não é uma medição instantânea. A carga é dada em três valores - a média de um minuto, a média de cinco minutos e a média de quinze minutos.
Entendendo a média de carga no Linux
A princípio, essa camada extra de detalhes parece desnecessária se você simplesmente quiser saber o estado atual da carga da CPU em seu sistema. Mas como as médias de três períodos são dadas, em vez de uma medição instantânea, você pode ter uma idéia mais completa da mudança de carga do sistema ao longo do tempo em um único olhar de três números
Exibir a média de carga é simples. Na linha de comando, você pode usar uma variedade de comandos. Eu simplesmente uso o comando "W":
root@virgo [~]# w
21:08:43 Up 38 dias, 4:34, 4 usuários, Carregar Média: 3.11, 2.75, 2.70
O restante do comando exibirá quem está conectado e o que eles estão executando, mas para nossos propósitos, essas informações são irrelevantes, então eu a recortei da tela acima.
Em um sistema ideal, nenhum processo deve ser mantido por outro processo (ou thread), mas em um único sistema de processador, Isso ocorre quando a carga vai acima de 1.00.
As palavras "sistema de processador único" são incrivelmente importantes aqui. A menos que você esteja administrando um computador antigo, sua máquina provavelmente tem vários núcleos de CPU. Na máquina em que estou, tenho 16 núcleos:
root@virgo [~]# nproc
16
Nesse caso, uma média de carga de 3.11 não é alarmante. Significa simplesmente que um pouco mais de três processos estavam prontos para executar e os núcleos da CPU estavam presentes para lidar com sua execução. Nesse sistema em particular, a carga teria que atingir 16 para ser considerada em "100%".
Para traduzir isso para uma carga de sistema baseada em porcentagem, você pode usar este comando simples, se não obtusa:
gato /proc /loadavg | Corte -C 1-4 | eco "escala = 2; ($ (Esta sequência de comando isola a média de 1 minuto via corte e a ecoa, dividida pelo número de núcleos da CPU, através da BC, uma calculadora da linha de comando, para derivar a porcentagem.
Este valor não é de forma alguma científico, mas fornece uma aproximação aproximada da carga da CPU em porcentagem.
Um minuto para aprender, uma vida inteira para dominar
Na seção anterior, coloquei o exemplo "100%" de uma carga de 16.0 em um sistema de 16 CPU em citações porque o cálculo da carga no Linux é um pouco mais nebuloso que o Windows. O administrador do sistema deve ter em mente que:
- A carga é expressa em processos de espera e threads
- Não é um valor instantâneo, mas uma média, e
- Sua interpretação deve incluir o número de núcleos da CPU e
- Pode ser exagerado de E/S espera como leituras de disco
Por causa disso, obter um controle da carga da CPU em um sistema Linux não é inteiramente uma questão empírica. Mesmo que fosse, a carga da CPU sozinha não é uma medição adequada da utilização geral de recursos do sistema. Como tal, um administrador de Linux experiente considerará a carga da CPU em conjunto com outros valores, como E/S Wait e a porcentagem de kernel versus tempo do sistema.
E/S Espere
E/S Espere é mais facilmente visto através do comando “top”:
Na captura de tela acima, destaquei o valor da E/S Wait. Esta é uma porcentagem de tempo em que a CPU estava esperando nos comandos de entrada ou saída para concluir. Isso geralmente é indicativo de alta atividade de disco. Embora uma alta porcentagem de espera por si só possa não degradar significativamente as tarefas ligadas à CPU, isso reduzirá o desempenho de E/S para outras tarefas e fará com que o sistema se sinta lento.
E/S Alta Espere sem qualquer causa óbvia pode indicar um problema com um disco. Use o comando "DMESG" para ver se ocorreram algum erro.
Kernel vs. Tempo do sistema
Os valores destacados acima representam o tempo do usuário e do kernel (sistema). Este é um detalhamento do consumo geral do tempo da CPU pelos usuários (i.e. Aplicações, etc.) e o kernel (eu.e. interação com dispositivos do sistema). O tempo mais alto do usuário indicará mais uso da CPU por programas em que o tempo mais alto do kernel indicará mais processamento no nível do sistema.
Uma carga razoavelmente média
Aprender a relação da média de carga com o desempenho real do sistema leva tempo, mas em pouco tempo você verá uma correlação distinta. Armado com os meandros das métricas de desempenho do sistema, você poderá tomar melhores decisões sobre atualizações de hardware e utilização de recursos do programa.