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
- No top, pressione k.
- Insira o PID do processo que deseja finalizar.
- 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
- No top, pressione r.
- Insira o PID do processo.
- 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!
Escreva um comentário