Entenda as médias de carga do Linux e monitore o desempenho do Linux
Neste artigo, explicaremos uma das tarefas críticas de administração do sistema Linux – monitoramento de desempenho em relação à carga do sistema/CPU e às médias de carga.
Antes de prosseguirmos, vamos entender estas duas frases importantes em todos os sistemas do tipo Unix:
- Carga do sistema/Carga da CPU – é uma medida de excesso ou subutilização da CPU em um sistema Linux; o número de processos que estão sendo executados pela CPU ou em estado de espera.
- Média de carga – é a carga média do sistema calculada durante um determinado período de 1, 5 e 15 minutos.
No Linux, acredita-se tecnicamente que a média de carga seja uma média em execução de processos em sua fila de execução (kernel) marcada como em execução ou ininterrupta.
Observe que:
- Todos, se não a maioria dos sistemas alimentados por Linux ou outros sistemas semelhantes ao Unix, possivelmente mostrarão os valores médios de carga em algum lugar para um usuário.
- Um sistema Linux totalmente ocioso pode ter uma média de carga zero, excluindo o processo ocioso.
- Quase todos os sistemas do tipo Unix contam apenas processos nos estados de execução ou espera. Mas este não é o caso do Linux, ele inclui processos em estados de suspensão ininterruptos; aqueles que aguardam outros recursos do sistema, como E/S de disco, etc.
Como monitorar a média de carga do sistema Linux
Existem inúmeras maneiras de monitorar a média de carga do sistema, incluindo o tempo de atividade, que mostra há quanto tempo o sistema está em execução, o número de usuários juntamente com as médias de carga:
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 carga no último 1 minuto é de 1,98
- a média de carga nos últimos 5 minutos é de 2,15
- a média de carga nos últimos 15 minutos é de 2,21
Médias de carga altas implicam que um sistema está sobrecarregado; muitos processos estão aguardando o tempo da CPU.
Descobriremos isso na próxima seção em relação ao número de núcleos da CPU. Além disso, também podemos usar outras ferramentas conhecidas, como top e sights, que exibem o estado em tempo real de um sistema Linux em execução, além de muitas outras ferramentas:
Comando superior
top
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 Olhares
glances
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 lidas no arquivo /proc/loadavg, que você pode visualizar usando o comando cat conforme 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 codificado por cores da média de carga do Linux no terminal
Em máquinas desktop, existem ferramentas de interface gráfica do usuário que podemos usar para visualizar as médias de carga do sistema.
Compreendendo a carga média do sistema em relação ao número de CPUs
Não podemos explicar a carga ou o desempenho do sistema sem esclarecer o impacto do número de núcleos da CPU no desempenho.
Multiprocessador versus multinúcleo
- Multiprocessador – é onde duas ou mais CPUs físicas são integradas em um único sistema de computador.
- Processador multi-core – é uma CPU física única que possui pelo menos dois ou mais núcleos separados (ou o que também podemos chamar de unidades de processamento) que funcionam em paralelo. Isso significa que um dual-core possui 2 unidades de processamento, um quad-core possui 4 unidades de processamento e assim por diante.
Além disso, existe também uma tecnologia de processador que foi introduzida pela primeira vez pela Intel para melhorar a computação paralela, conhecida como hyper threading.
No hiperthreading, um único núcleo físico da CPU aparece como dois núcleos lógicos da CPU para um sistema operacional (mas, na realidade, há um componente físico de hardware).
Observe que um único núcleo de CPU só pode realizar uma tarefa por vez, portanto, tecnologias como múltiplas CPUs/processadores, CPUs multi-core e hyper-threading ganharam vida.
Com mais de uma CPU, vários programas podem ser executados simultaneamente. As CPUs Intel atuais usam uma combinação de múltiplos núcleos e tecnologia 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 conforme mostrado.
grep 'model name' /proc/cpuinfo | wc -l
4
Agora, para entender melhor a carga do sistema, faremos algumas suposições. Digamos que temos 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 núcleo único, isso significaria:
- A CPU foi totalmente utilizada (100%) em média; 1 processo estava em execução na CPU (1,00) no último 1 minuto.
- A CPU ficou ociosa em média 60%; nenhum processo estava aguardando o tempo de CPU (0,40) nos últimos 5 minutos.
- A CPU ficou sobrecarregada em média 235%; 2,35 processos aguardaram tempo de CPU (3,35) nos últimos 15 minutos.
Em um sistema dual-core isso significaria:
- A única CPU estava 100% ociosa em média, uma CPU estava sendo usada; nenhum processo estava aguardando o tempo de CPU (1,00) no último minuto.
- As CPUs ficaram ociosas em média 160%; nenhum processo estava aguardando o tempo da CPU. (0,40) nos últimos 5 minutos.
- As CPUs ficaram sobrecarregadas em média 135%; 1.35 processos aguardavam tempo de CPU. (3,35) nos últimos 15 minutos.
Você pode gostar também:
- 20 ferramentas de linha de comando para monitorar o desempenho do Linux – Parte 1
- 13 Ferramentas de monitoramento de desempenho do Linux – Parte 2
- Perf- Uma ferramenta de monitoramento e análise de desempenho para Linux
- Nmon: Analise e monitore o desempenho do sistema Linux
Concluindo, se você é um administrador de sistema, é real uma preocupação com altas médias de carga. Quando estão altos, acima do número de núcleos de CPU, significa alta demanda pelas CPUs, e médias de carga baixas abaixo do número de núcleos de CPU nos indicam que as CPUs estão subutilizadas.