000 - Explicação do comando top em sistemas Linux
000 - Explicação do comando top em sistemas Linux

Neste artigo faremos uma explicação do comando top em sistemas Linux de forma mais detalhada, com o intuito de explicar e discutir cada opção apresentada por esta ferramenta tão importante para monitoração de sistemas Linux.


Explicação do comando top em sistemas Linux


Vamos fazer a explicação e a análise a partir da tela abaixo, por linhas, só para exemplificar:

001 - Explicação do comando top em sistemas Linux

Primeira linha – top

Na primeira linha temos um resumo geral do sistema operacional, ou seja:

Horário corrente do sistema no formato horas, minutos e segundos
Tempo que o sistema está ligado desde a última inicialização
Quantidade de usuários conectados, ou via SSH (Secure SHell, que é o acesso via rede) ou via console (TTY – TeleTYpewriter).
Carga média do sistema nos últimos 1, 5 e 15 minutos, respectivamente. Então basicamente é uma medida utilizada para calcular a média entre quantidade de processos em espera na fila de execução e CPU’s nos tempos determinados (1, 5 e 15 minutos).

Load average

Em primeiro lugar, fazendo uma analogia bem simples, vamos imaginar uma agência bancária onde temos um caixa de atendimento (1 CPU) e uma fila única (nossos processos). Portanto a quantidade de clientes que está sendo atendida ou que está na fila no período de 1, 5 e 15 minutos é o nosso load average.

Outro ponto interessante do load average é que sua interpretação é relativa: Ou seja, load average próximo de 0 pode significar que o sistema está ocioso, ou seja, recurso gastando energia elétrica à toa. Em contrapartida, se o load average está alto pode significar que o sistema está em uso e pode estar sobrecarregado ou dentro do esperado. Tudo depende de uma análise geral, portanto o load average pode ser um indicador, mas deve ser interpretado com outras medidas, tais como uso de CPU e quantidade de memória RAM utilizada.

Com o intuito de uma explicação mais aprofundada sobre o assunto, seguem mais artigos sobre o load average:

Explicando o Load Average

Linux Load Averages: Solving the Mystery

Unix Load Average: Part 1

Segunda linha – tasks

Na segunda linha temos um sumário da quantidade de tarefas ou processos com os seus respectivos status, por exemplo:

Total de tarefas no sistema
Total de tarefas que estão em processamento
Total de tarefas em modo de espera. Estes processos estão em uso pelo sistema mas não estão em processamento
Total de tarefas paradas. São tarefas paralisadas ou com o atalho “Ctrl+c” durante uma execução no terminal ou utilizando o comando “kill -2 PID_do_processo” durante a execução de uma tarefa
Total de tarefas em modo zumbi, que também são conhecidos como processo defunto (defunct). Portanto são processos que não existem mais no sistema operacional, mas por algum motivo (normalmente erros de software, processos finalizados de maneira abrupta) ainda permanecem na listagem dos processos.

 

Terceira linha – %CPU(s)

Na terceira linha temos informações de uso da CPU em percentagem. Visto que esta percentagem pode ser a média da quantidade que o seu sistema possui (sistemas com mais de 1 CPU).

user
É a percentagem de uso de CPU por processos de usuários
system
É a percentagem de uso de CPU por processos exclusivos do Kernel
nice
É a percentagem de uso de CPU de processos que tiveram sua prioridade modificada pelos comandos nice ou renice.
idle
É a percentagem de CPU que está livre para uso.
wait
É a percentagem de uso de CPU em operações de entrada e saída, por exemplo leitura de disco
hardware interrupt
É a percentagem de uso de CPU por interrupções de hardware. Portanto são interrupções físicas dos periféricos, tais como disco físico e placa de rede
system interrupt
É a percentagem de uso de CPU utilizada por interrupções de software. Portanto são interrupções de softwares que ocorrem diretamente para o Kernel
steal
Esta percentagem de uso só funciona em ambientes de máquinas virtuais. Então quando uma máquina Linux virtual está rodando em cima de um hospedeiro físico (hypervisor), a percentagem mostra quanto tempo a CPU virtual está gastando esperando disponibilização da CPU do hospedeiro físico.

 

Quarta linha – KiB Mem

A quarta linha está relacionada a quantidade de memória RAM utilizada no sistema operacional, assim também os valores estão definidos em KiB (Kibibyte). Em outras palavras, Kibi (1024) é a medida binária do Quilo (1000) que é uma medida decimal. Só para exemplificar, no link abaixo temos uma explicação sobre a diferença entre Kibi e Quilo.

Prefixo binário – Wikipédia

Total de memória RAM no sistema
Total de memória RAM disponível no sistema
Total de memória RAM em uso por processos no sistema
Espaço de buffer ou cache são informações que foram lidas ou que precisam ser gravadas em disco, mas que ainda encontram-se na memória RAM.

Quinta linha – KiB Swap

A quinta linha está relacionada a quantidade de memória SWAP utilizada pelo sistema. Da mesma forma que a quarta linha, os valores estão em KiB (Kibibytes).

Total de memória SWAP no sistema
Total de memória SWAP disponível no sistema
Total de memória SWAP em uso pelo sistema
É uma estimativa de memória livre para inicialização de softwares, sem utilizar o swap

A saber, o avail Mem vêm do arquivo /proc/meminfo. Em suma, é a quantidade de memória livre que pode ser utilizado sem causar o uso de SWAP. No entanto cada distribuição e Kernel calcula esta “memória disponível” de forma diferente. Só para ilustrar melhor, mais informações no link abaixo (em Inglês).

How can I get the amount of available memory portably across distributions?

 

Sexta linha – Cabeçalho das colunas

Por fim, nas abas abaixo explicamos o que significa cada coluna da sexta linha apresentada pelo comando top:

Process IDentification number
Todo processo recebe um número único pelo sistema operacional para identificá-lo
USER
Nome do usuário dono do processo (owner).
PRiority
Nível de prioridade de agendamento do processo. Assim sendo, esta prioridade é definida pelo próprio agendador do Kernel do sistema operacional. Além disso, o valor pode variar de -20 (maior prioridade) até 19 (menor prioridade)
NIce
Valor definido pelos comandos nice ou renice. O valor padrão é 0.
VIRTual (em kb)
Quantidade de memória virtual em uso pelo processo
Portanto é o somatório de uso de memória SWAP com a memória resident (RES)
VIRT = SWAP + RES
RESident size (kb)>
É o uso de memória física utilizada pela tarefa, sem considerar o SWAP
SHaRed memory
Quantidade de memória compartilhada com outros processos
Status process
Estado do processo, onde pode ser:
D –Disk sleep – Também conhecido como “Uninterruptible sleep” – É um status especial onde o processo está aguardando para ser gravado em disco (i/o wait)
R – Running – Em processamento
S – Sleeping – Aguardando processamento
T – Traced or sTopped – Processo parado ou controlado pelo usuário
Z – Zumbie – Processo em modo zumbi
%CPU
Tempo da CPU utilizado pelo processo desde a sua última atualização
%MEMory
Percentagem de memória física utilizada pelo processo

+TIME
Tempo total de CPU usado pela tarefa em centésimos de segundo
COMMAND
Nome do comando ou linha de comando com as opções adicionais

Só para exemplificar, no link abaixo temos mais informações sobre como gerenciar prioridade de processos no GNU/Linux (comandos nice e renice):

Como gerenciar prioridade de processos no GNU/Linux


Em conclusão, mostramos uma explicação do comando top em sistemas Linux da forma mais detalhada e simples possível. Assim sendo, comente abaixo mais alguma curiosidade sobre este comando com tantas informações úteis para a manutenção dos sistemas Linux.

LuKazHiro
Entusiasta Linux desde a época em que as distribuições eram vendidas em CD's nas bancas de jornais. Formado em Ciência da Computação, certificado LPIC-3 e RHCE. Estudante constante de tecnologia, sempre procurando, ensinando e aprendendo com a galera!

Como corrigir erro em pacotes ou pacotes quebrados no Ubuntu, Debian, Linux Mint

Previous article

Debian 9.5 Stretch Lançado!

Next article

You may also like

More in Dicas