Neste artigo, vamos explicar uma das tarefas críticas de administração do sistema Linux – monitoramento de desempenho em relação à carga do sistema/CPU e médias de carga.
Antes de avançarmos, vamos entender essas duas frases importantes em todos os sistemas semelhantes ao Unix:
- Carga do sistema/Carga da CPU – é uma medida de super ou sub-utilizaçã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 média da carga do sistema calculada ao longo de um determinado período de 1, 5 e 15 minutos.
No Linux, a média de carga é tecnicamente considerada uma média móvel dos processos em sua fila de execução (kernel) marcados como em execução ou ininterruptível.
Observe que:
- Todos, se não a maioria, dos sistemas alimentados pelo Linux ou outros sistemas semelhantes ao Unix, possivelmente mostrarão os valores da média de carga para um usuário.
- A downright idle Linux system may have a load average of zero, excluding the idle process.
- Quase todos os sistemas semelhantes ao Unix contam apenas processos nos estados de execução ou espera. Mas esse não é o caso do Linux, ele inclui processos em estados de espera ininterruptíveis; aqueles que esperam por outros recursos do sistema como E/S de disco etc.
Como monitorar a média de carga do sistema Linux
Há inúmeras maneiras de monitorar a média de carga do sistema, incluindo o uptime 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:
- média de carga nos últimos 1 minuto é 1,98
- A carga média nos últimos 5 minutos é 2,15
- a carga média nos últimos 15 minutos é 2,21
Cargas médias altas implicam que um sistema está sobrecarregado; muitos processos estão aguardando tempo de CPU.
Nós vamos abordar 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 glances que exibem o estado em tempo real de um sistema Linux em execução, além de muitas outras ferramentas:
Comando Top
$ 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 Glances
$ 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 cargas médias mostradas por essas ferramentas são lidas no arquivo /proc/loadavg, que você pode visualizar usando o comando cat como abaixo:
$ cat /proc/loadavg 2.48 1.69 1.42 5/889 10570
Para monitorar as cargas médias em formato de gráfico, confira: ttyload – Mostra um Gráfico Colorido da Carga Média do Linux no Terminal
Em máquinas desktop, existem ferramentas de interface gráfica do usuário que podemos usar para visualizar as cargas médias do sistema.
Entendendo a Carga Média do Sistema em Relação ao Número de CPUs
Não é possível explicar a carga do sistema ou o desempenho do sistema sem destacar o impacto do número de núcleos da CPU no desempenho.
Multi-processador Vs Multi-core
- Multi-processador – é quando duas ou mais CPUs físicas são integradas em um único sistema de computador.
- Processador multi-core – é uma única CPU física que possui pelo menos dois ou mais núcleos separados (ou o que também podemos chamar de 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, há também uma tecnologia de processador que foi introduzida pela Intel para melhorar a computação paralela, chamada de hipersegmentação.
Sob a hipersegmentação, um único núcleo de CPU físico aparece como dois núcleos de CPU lógicos para um sistema operacional (mas na realidade, há um componente de hardware físico).
Observe que um único núcleo de CPU só pode executar uma tarefa de cada vez, portanto tecnologias como várias CPUs/processadores, CPUs multi-core e hipersegmentação foram criadas.
Com mais de uma CPU, vários programas podem ser executados simultaneamente. As CPUs Intel atuais usam uma combinação de vários núcleos e tecnologia de hipersegmentação.
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 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 estava totalmente (100%) utilizada em média; 1 processo estava em execução na CPU (1,00) ao longo do último 1 minuto.
- A CPU estava ociosa em 60% em média; nenhum processo estava aguardando tempo de CPU (0,40) ao longo dos últimos 5 minutos.
- A CPU estava sobrecarregada em 235% em média; 2,35 processos estavam aguardando tempo de CPU (3,35) ao longo dos últimos 15 minutos.
Em um sistema de dois núcleos, isso significaria:
- Uma CPU estava 100% ociosa em média, uma CPU estava sendo usada; nenhum processo estava aguardando tempo de CPU (1,00) ao longo do último 1 minuto.
- As CPUs estavam ociosas em 160% em média; nenhum processo estava aguardando tempo de CPU (0,40) ao longo dos últimos 5 minutos.
- As CPUs estavam sobrecarregadas em 135% em média; 1,35 processos estavam aguardando tempo de CPU (3,35) ao longo dos últimos 15 minutos.
Você também pode gostar:
- 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
Em conclusão, se você é um administrador de sistema, então as médias de carga alta são motivo real de preocupação. Quando estão altas, acima do número de núcleos da CPU, significa alta demanda para as CPUs, e médias de carga baixas, abaixo do número de núcleos da CPU, nos diz que as CPUs estão subutilizadas.
Source:
https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/