Entenda as Médias de Carga do Linux e Monitore o Desempenho do Linux

Neste artigo, vamos explicar uma das tarefas administrativas críticas do sistema Linux – o monitoramento de desempenho em relação ao carregamento do sistema/CPU e às médias de carregamento.

Antes de avançarmos, vamos entender essas duas frases importantes em todos os sistemas Unix-like:

  • Carregamento do sistema/Carregamento do CPU – é uma medição de sobreutilização ou subutilização do CPU em um sistema Linux; o número de processos que estão sendo executados pelo CPU ou em estado de espera.
  • Média de carregamento – é a média de carregamento do sistema calculada em determinado período de tempo de 1, 5 e 15 minutos.

No Linux, a média de carregamento é tecnicamente considerada ser a média de processos na fila de execução do kernel marcados como executando ou não interrompíveis.

Observe que:

  • Quase todos os sistemas abastecidos por Linux ou outros sistemas Unix-like mostrarão os valores de média de carregamento em algum lugar para o usuário.
  • A downright idle Linux system may have a load average of zero, excluding the idle process.
  • Quase todos os sistemas Unix-like contam apenas processos em estado executando ou em espera. Mas não é o caso com o Linux, que inclui processos em estados de sono não interrompível; aqueles que estão esperando por outros recursos de sistema, como I/O de disco, etc.

Como monitorar a Média de Carregamento do Sistema Linux

Existem muitas formas de monitorar a média de carregamento do sistema, incluindo o uptime, que mostra quanto tempo o sistema estava rodando, o número de usuários juntamente com as médias de carregamento:

$ uptime

07:13:53 up 8 days, 19 min,  1 user,  load average: 1.98, 2.15, 2.21

Os números são lidos da esquerda para a direita, e a saída acima significa que:

  • a média de carregamento no último 1 minuto é de 1,98.
  • média de carga no último 5 minutos é 2.15
  • média de carga no último 15 minutos é 2.21

Médias de carga altas implicam que um sistema está sobrecarregado; muitos processos estão esperando por tempo de CPU.

Nós descobriremos isso na próxima seção em relação ao número de núcleos de CPU. Além disso, podemos usar também outras ferramentas bem conhecidas, como o top e o glances, que mostram o estado em tempo real de um sistema Linux em execução, além de muitas outras ferramentas:

Comando Top

$ top
Display Running Linux Processes
top - 12:51:42 up  2:11,  1 user,  load average: 1.22, 1.12, 1.26
Tasks: 243 total,   1 running, 242 sleeping,   0 stopped,   0 zombie
%Cpu(s): 17.4 us,  2.9 sy,  0.3 ni, 74.8 id,  4.6 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8069036 total,   388060 free,  4381184 used,  3299792 buff/cache
KiB Swap:  3906556 total,  3901876 free,     4680 used.  2807464 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                        
 6265 tecmint   20   0 1244348 170680  83616 S  13.3  2.1   6:47.72 Headset                                                                                                                                        
 2301 tecmint    9 -11  640332  13344   9932 S   6.7  0.2   2:18.96 pulseaudio                                                                                                                                     
 2459 tecmint   20   0 1707692 315628  62992 S   6.7  3.9   6:55.45 cinnamon                                                                                                                                       
 2957 tecmint   20   0 2644644 1.035g 137968 S   6.7 13.5  50:11.13 firefox                                                                                                                                        
 3208 tecmint   20   0  507060  52136  33152 S   6.7  0.6   0:04.34 gnome-terminal-                                                                                                                                
 3272 tecmint   20   0 1521380 391324 178348 S   6.7  4.8   6:21.01 chrome                                                                                                                                         
 6220 tecmint   20   0 1595392 106964  76836 S   6.7  1.3   3:31.94 Headset                                                                                                                                        
    1 root      20   0  120056   6204   3964 S   0.0  0.1   0:01.83 systemd                                                                                                                                        
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd                                                                                                                                       
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.10 ksoftirqd/0                                                                                                                                    
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H   
....

Ferramenta Glances

$ glances
Glances – Linux System Monitoring Tool
TecMint (LinuxMint 18 64bit / Linux 4.4.0-21-generic)                                                                                                                                               Uptime: 2:16:06

CPU      16.4%  nice:     0.1%                                        LOAD    4-core                                        MEM     60.5%  active:    4.90G                                        SWAP      0.1%
user:    10.2%  irq:      0.0%                                        1 min:    1.20                                        total:  7.70G  inactive:  2.07G                                        total:   3.73G
system:   3.4%  iowait:   2.7%                                        5 min:    1.16                                        used:   4.66G  buffers:    242M                                        used:    4.57M
idle:    83.6%  steal:    0.0%                                        15 min:   1.24                                        free:   3.04G  cached:    2.58G                                        free:    3.72G

NETWORK     Rx/s   Tx/s   TASKS 253 (883 thr), 1 run, 252 slp, 0 oth sorted automatically by cpu_percent, flat view
enp1s0     525Kb   31Kb
lo           2Kb    2Kb     CPU%  MEM%  VIRT   RES   PID USER        NI S    TIME+ IOR/s IOW/s Command 
wlp2s0        0b     0b     14.6  13.3 2.53G 1.03G  2957 tecmint      0 S 51:49.10     0   40K /usr/lib/firefox/firefox 
                             7.4   2.2 1.16G  176M  6265 tecmint      0 S  7:08.18     0     0 /usr/lib/Headset/Headset --type=renderer --no-sandbox --primordial-pipe-token=879B36514C6BEDB183D3E4142774D1DF --lan
DISK I/O     R/s    W/s      4.9   3.9 1.63G  310M  2459 tecmint      0 R  7:12.18     0     0 cinnamon --replace
ram0           0      0      4.2   0.2  625M 13.0M  2301 tecmint    -11 S  2:29.72     0     0 /usr/bin/pulseaudio --start --log-target=syslog
ram1           0      0      4.2   1.3 1.52G  105M  6220 tecmint      0 S  3:42.64     0     0 /usr/lib/Headset/Headset 
ram10          0      0      2.9   0.8  409M 66.7M  6240 tecmint      0 S  2:40.44     0     0 /usr/lib/Headset/Headset --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=7,2
ram11          0      0      2.9   1.8  531M  142M  1690 root         0 S  6:03.79     0     0 /usr/lib/xorg/Xorg :0 -audit 0 -auth /var/lib/mdm/:0.Xauth -nolisten tcp vt8
ram12          0      0      2.6   0.3 79.3M 23.8M  9651 tecmint      0 R  0:00.71     0     0 /usr/bin/python3 /usr/bin/glances
ram13          0      0      1.6   4.8 1.45G  382M  3272 tecmint      0 S  6:25.30     0    4K /opt/google/chrome/chrome 
...

As médias de carga mostradas por essas ferramentas são lida da /proc/loadavg arquivo, que você pode ver usando o comando cat como abaixo:

$ cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

Para monitorar médias de carga em formato de gráfico, confira: ttyload – Mostra um Gráfico de Cores da Média de Carga Linux no Terminal

Em máquinas de desktop, há ferramentas de interface gráfica que podemos usar para ver médias de carga do sistema.

Entendendo a Média de Carga do Sistema em Relação ao Número de CPUs

Não podemos possivelmente explicar a carga do sistema ou o desempenho do sistema sem fazer uma luz sobre o impacto do número de núcleos de CPU no desempenho.

Multi-processador Vs Multi-núcleo

  • Multi-processador – é onde dois ou mais processadores físicos são integrados em um único sistema computacional.
  • Processador multi-núcleo – é um único processador físico que tem, pelo menos, dois ou mais núcleos separados (ou o que também podemos referir como unidades de processamento) que trabalham em paralelo. Significando que um dual-core tem 2 unidades de processamento, um quad-core tem 4 unidades de processamento e assim por diante.

Além disso, existe também uma tecnologia de processador que foi primeiro introduzida pela Intel para melhorar a computação em paralelo, referida como hyperthreading.

sob hyperthreading, um único núcleo físico de CPU aparece como dois núcleos lógicos de CPU para um sistema operacional (mas, na realidade, existe um único componente de hardware físico).

Observe que um único núcleo de CPU pode executar apenas uma tarefa por vez, portanto, tecnologias como vários CPUs/processadores, multi-núcleo de CPU e hyper-threading foram concebidas.

Com mais de um CPU, vários programas podem ser executados simultaneamente. Os CPUs Intel de hoje em dia usam uma combinação de ambos os núcleos múltiplos e tecnologia de hyper-threading.

Para encontrar o número de unidades de processamento disponíveis em um sistema, podemos usar os comandos nproc ou lscpu da seguinte forma:

$ nproc
4

OR
lscpu

Outra maneira de encontrar o número de unidades de processamento usando o comando grep como mostrado.

$ grep 'model name' /proc/cpuinfo | wc -l

4

Agora, para entender melhor a carga do sistema, faremos algumas suposições. Digamos que tenhamos as médias de carga abaixo:

23:16:49 up  10:49,  5 user,  load average: 1.00, 0.40, 3.35
Em um sistema de um único núcleo, isso significaria:
  • A CPU foi totalmente (100%) utilizada em média; 1 processo estava sendo executado na CPU (1.00) nos últimos 1 minuto.
  • A CPU ficou ociosa em 60% em média; nenhum processo estava esperando por tempo de CPU (0.40) nos últimos 5 minutos.
  • A CPU ficou sobrecarregada em 235% em média; 2.35 processos estavam esperando por tempo de CPU (3.35) nos últimos 15 minutos.
Em um sistema de dois núcleos, isso significaria:
  • Um dos CPUs estava 100% ocioso em média, um dos CPUs estava sendo usado; nenhum processo estava esperando por tempo de CPU (1.00) nos últimos 1 minuto.
  • Os CPUs ficaram ociosos em 160% em média; nenhum processo estava esperando por tempo de CPU (0.40) nos últimos 5 minutos.
  • Os CPUs ficaram sobrecarregados em 135% em média; 1.35 processos estavam esperando por tempo de CPU (3.35) nos últimos 15 minutos.

Você também pode gostar:

  1. 20 Ferramentas de Linha de Comando para Monitorar o Desempenho do Linux – Parte 1
  2. 13 Ferramentas de Monitoramento de Desempenho do Linux – Parte 2
  3. Perf- Uma ferramenta de monitoramento e análise de desempenho para Linux
  4. Nmon: Analisar e monitorar o desempenho do sistema Linux

Em conclusão, se você é um administrador de sistemas, as médias de carga alta são um motivo real de preocupação. Quando estão altas, acima do número de núcleos de CPU, isso significa alta demanda para as CPUs, e médias de carga baixas abaixo do número de núcleos de CPU nos indicam que as CPUs estão subutilizadas.

Source:
https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/