Monitorar uso de recursos do sistema com comando top no Linux

Como monitorar o uso de recursos e processos do sistema com comando top no Linux

O comando top no Linux é uma ferramenta empregada para monitorar o uso de recursos do sistema em tempo real, como CPU, memória, e processos. Ele é muito utilizado para identificar gargalos de desempenho e gerenciar processos.

O que é o comando top?

O utilitário top exibe informações dinâmicas sobre os processos em execução, incluindo:

  • Percentual de uso da CPU.
  • Consumo de memória.
  • Estado dos processos (em execução, dormindo, etc.).
  • Tempo de execução de processos.

Sua saída é atualizada automática e periodicamente, oferecendo assim uma visão instantânea e contínua do desempenho do sistema.

Sintaxe do top

A sintaxe básica do comando top é como segue:

top [opções]

Simplesmente executar top no terminal já exibe o painel de monitoramento em tempo real. Vejamos como interpretar a interface de saída do comando.

Interface do top

1. Cabeçalho do sistema

Informações gerais sobre o estado do sistema.

Saída típica:

top - 10:00:01 up 1 day, 5:30, 3 users, load average: 0.05, 0.10, 0.15

Aqui temos:

  • Hora atual (10:00:01).
  • Tempo desde o último boot (1 dia, 5:30).
  • 3 Usuários logados (3 users).
  • Load average: Média de carga da CPU nos últimos 1, 5 e 15 minutos.

2. Resumo dos recursos do sistema

Saída típica:

Tarefas: 125 total, 2 em exec, 123 dormindo, 0 parado, 0 zumbi
%Cpu(s): 3.0 us, 2.0 sy, 0.0 ni, 95.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 4048572 total, 2048572 used, 2000000 free, 512000 buffers
KiB Swap: 2097148 total, 104857 used, 1992291 free. 1024000 cached Mem

Vamos interpretar a saída desse comando de forma detalhada.

Linha 01: Tarefas (Informações sobre as tarefas/processos)

  • 125 total: Número total de tarefas (processos) no sistema.
  • 2 em exec: Quantidade de tarefas que estão em execução ativa no momento.
  • 123 dormindo: Processos que estão aguardando eventos ou recursos para continuar.
  • 0 parado: Nenhum processo está parado (suspenso manualmente).
  • 0 zumbi: Não há processos zumbis. Um processo zumbi ocorre quando ele terminou a execução, mas o pai ainda não leu seu status.

Linha 02: %Cpu(s) (Utilização da CPU)

Os campos indicam como o tempo da CPU está sendo gasto:

  • 3.0 us: Percentual de tempo gasto em processos de usuários (não relacionados ao kernel).
  • 2.0 sy: Percentual de tempo gasto em processos do sistema (kernel).
  • 0.0 ni: Percentual de tempo gasto em processos com prioridade alterada (nice).
  • 95.0 id: Percentual de tempo em que a CPU está ociosa.
  • 0.0 wa: Percentual de tempo em que a CPU está esperando por I/O (leitura ou gravação em disco, por exemplo).
  • 0.0 hi: Percentual de tempo gasto atendendo interrupções de hardware.
  • 0.0 si: Percentual de tempo gasto atendendo interrupções de software.
  • 0.0 st: Percentual de tempo “roubado” por máquinas virtuais (caso esteja rodando em um hypervisor).

Linha 03: KiB Mem (Uso da Memória RAM)

  • 4048572 total: Memória RAM total disponível no sistema (em KiB).
  • 2048572 used: Quantidade de memória RAM usada no momento.
  • 2000000 free: Memória RAM não utilizada no momento.
  • 512000 buffers: Memória usada para buffers, que armazena temporariamente dados em trânsito para dispositivos como discos ou redes.

Linha 04: KiB Swap (Uso da memória Swap)

  • 2097148 total: Tamanho total do espaço de swap configurado (em KiB).
  • 104857 used: Quantidade de espaço de swap atualmente usada.
  • 1992291 free: Espaço de swap não utilizado.
  • 1024000 cached Mem: Parte da memória RAM usada para cache de páginas de disco. Essa memória é usada para acelerar operações e pode ser liberada pelo sistema, se necessário.

Muita informação não? Podemos resumir essa saída da seguinte forma:

  • O sistema tem 125 processos ativos, com apenas 2 em execução e a maioria (123) aguardando recursos.
  • A CPU está 95% ociosa, indicando pouca carga no sistema.
  • Cerca de 2 GB de RAM estão em uso (de um total de 4 GB), e 2 GB estão livres.
  • O espaço de swap está praticamente livre (apenas 104 MB usados de 2 GB).
  • O sistema está usando 1 GB de memória para cache, o que melhora o desempenho geral ao evitar acessos frequentes ao disco.

3. Lista de processos

Saída típica:

 PID USER PR NI VIRT   RES   SHR  S %CPU %MEM   TIME+ COMMAND
1234 user 20 0  123456 5678  1024 R  5.0 0.1  0:01.23 python
2345 user 20 0  345678 12345 2048 S  3.0 0.3  0:10.45 chrome
[TRUNCADO]

Onde:

  • PID: ID do processo.
  • USER: Usuário que iniciou o processo.
  • PR: Prioridade do processo.
  • NI: Valor do niceness (impacta a prioridade do processo).
  • VIRT: Tamanho da memória virtual total do processo.
  • RES: Memória física usada pelo processo.
  • SHR: Memória compartilhada utilizada.
  • S: Estado do processo (no caso, R = em execução e S = Dormindo.
  • %CPU: Percentual de uso da CPU.
  • %MEM: Percentual de uso da memória.
  • TIME+: Tempo acumulado de CPU.
  • COMMAND: Nome do comando/processo.

A coluna PR indica a prioridade atual do processo. Essa prioridade determina a ordem em que os processos são agendados para a CPU. Processos com valores de prioridade mais baixos recebem mais tempo de CPU.
A prioridade pode ser influenciada pelo valor NI (niceness), mostrado na coluna ao lado de PR.

A coluna NI indica o valor de “niceness” do processo. O “niceness” é usado para ajustar a prioridade de processos normais (não em tempo real). É um valor que pode ser configurado manualmente para indicar quão “agradável” (em inglês, “nice”) um processo é em relação ao consumo de CPU.

Quanto menor o valor, maior a prioridade.

Já a coluna VIRT indica o tamanho total da memória virtual utilizada pelo processo. Isso inclui:

  • Memória física em uso.
  • Memória swap em uso.
  • Memória reservada que pode não estar sendo utilizada.
  • Áreas de memória mapeadas (como bibliotecas e arquivos).

Vejamos agora alguns dos comandos interativos disponibilizados na interface do top.

Principais comandos interativos no top

Quando o top está em execução, podemos interagir com a interface usando os seguintes comandos de teclado:

Comando Descrição
q Sai do top.
h Mostra a ajuda com todos os comandos disponíveis.
k Finaliza um processo (solicita o PID).
r Altera a prioridade (niceness) de um processo (solicita o PID e o novo valor).
z Alterna o uso de cores (útil para melhor visualização).
P Ordena os processos pelo uso da CPU.
M Ordena os processos pelo uso da memória.
T Ordena os processos pelo tempo de execução acumulado.
1 Exibe o uso de cada núcleo de CPU separadamente.

Vejamos agora alguns exemplos do uso de top no Linux.

Exemplos do comando top

1. Executar o top e observar os processos em tempo real:

$ sudo top

2. Classificar processos pelo uso de memória (tecla M):

Após iniciar o top, pressionamos M para listar os processos com maior uso de memória.

3. Finalizar um processo específico (tecla k)

Após iniciar o top, pressionamos k e inserimos o PID do processo que desejamos finalizar.

4. Exibir o uso de cada núcleo de CPU separadamente (tecla 1)

Após iniciar o top, pressionamos 1 para ver o uso de cada núcleo.

5. Exibir apenas processos de um usuário específico, como o usuário fabio:

$ top -u fabio

6. Alterar a taxa de atualização do top (tecla d)

Pressionamos a tecla d e então inserimos o intervalo de atualização de tela desejado em segundos (por padrão, é 3 segundos).

A seguir temos alguns exercícios para você treinar um pouco mais o uso do comando top no Linux. A resolução sugerida de cada um se encontra após a listagem.

Exercícios: comando top

1. Liste os 5 processos que mais consomem CPU usando o top.
2. Finalize um processo de baixa prioridade usando o PID obtido no top.
3. Exiba apenas os processos pertencentes ao usuário atual.
4. Altere o niceness de um processo usando o top.
5. Ordenar os processos pelo tempo de execução acumulado.

Resolução dos exercícios

1. Liste os 5 processos que mais consomem CPU

Dentro do top, pressione P para ordenar pelo uso da CPU. Observe os 5 primeiros processos da lista.

2. Finalize um processo de baixa prioridade

  1. No top, pressione k.
  2. Insira o PID do processo que deseja finalizar.
  3. Confirme pressionando Enter.

3. Exiba apenas os processos pertencentes ao usuário atual

Execute o comando:

$ sudo top -u $USER

4. Altere o niceness de um processo

  1. No top, pressione r.
  2. Insira o PID do processo.
  3. Digite o novo valor de niceness (de -20 a 19, sendo -20 o mais prioritário).

5. Ordenar os processos pelo tempo de execução acumulado

No top, pressione a tecla T para ordenar os processos pelo tempo de execução.

Conclusão

O comando top é uma ferramenta bastante útil para monitorar o desempenho do sistema Linux em tempo real. Ele fornece informações detalhadas sobre os processos em execução, permitindo que os administradores de sistemas Linux identifiquem problemas e ajustem o uso de recursos de forma eficiente.

Nos próximos tutoriais veremos outras ferramentas também bastante úteis para esses propósitos, como o comando htop.

Até mais!

Sobre Fábio dos Reis (1223 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

Escreva um comentário

Seu e-mail não será divulgado


*