Os 7 principais comandos de desempenho do Linux para administradores de sistema

Existem vários comandos principais do Linux que os administradores de sistema usam diariamente para monitorar o desempenho de seus computadores e servidores, depurar problemas de desempenho e prever e evitar gargalos de desempenho.

Neste artigo, veremos sete comandos que ajudarão você a monitorar o uso de CPU e memória, operações de I/O de disco, atividade de rede, configuração de porta e muito mais. Esses comandos permitem identificar e eliminar facilmente processos que consomem mais recursos do que o esperado e causam problemas de desempenho. Também daremos uma olhada mais de perto na sintaxe e nas várias opções disponíveis para que possamos entender melhor esses comandos.

Mesmo que você não seja administrador de sistema, aprender esses comandos pode ajudá-lo a entender melhor o que está acontecendo com seu computador.

1. Top

Top é um dos comandos usados com mais frequência pelos administradores de sistema. Em um nível muito alto, o comando mostra o tempo de atividade do sistema, uso da CPU, número de threads, uso de memória (total, usado, livre, etc.), uma lista de processos em execução e muito mais. A Figura 1 mostra uma captura de tela da interface de usuário superior tirada no Ubuntu 18.04.

interface de usuário superior no Ubuntu Fig. 1: interface de usuário superior no Ubuntu

A Figura 1 mostra que há muitas informações aqui e muitas opções para filtrar a lista de tarefas, encerrar processos, classificar a lista e muito mais. Por exemplo, podemos classificar a lista de tarefas pelas colunas %CPU ou %MEM para descobrir facilmente quais processos estão consumindo mais CPU ou mais memória. Use estes comandos para classificar tarefas por memória ou porcentagem de CPU:

top -o +%MEM
top -o +%CPU

A Figura 2 mostra os processos classificados pela porcentagem de memória utilizada em ordem decrescente.

Área de tarefas classificada por porcentagem de memória usada Fig. 2: Área de tarefas classificada por porcentagem de memória usada

A classificação por uso da CPU ou consumo de memória nos permite identificar os processos que podem estar causando problemas de desempenho. Podemos, então, eliminar facilmente esses processos a partir da mesma interface de usuário superior.

2. vmstat

vmstat nos conta tudo o que precisamos saber sobre memória virtual. O sistema começa a usar memória virtual quando fica sem memória física. Portanto, para começar, a memória virtual sempre será zero. Junto com estatísticas de memória virtual, vmstat nos fornece muito mais informações sobre processos do sistema, interrupções, operações de I/O de bloco, discos, paginação, agendamento de CPU e muito mais.

A Figura 3 mostra o output do vmstat sem nenhuma opção passada. O comando é:

vmstat
saída vmstat Fig. 3: saída vmstat

Como você pode ver, não é tão denso quanto o melhor IU. Mas com apenas algumas opções, ainda podemos obter todas as informações de que precisamos. Por exemplo, passar a opção A nos dá as informações da memória ativa e inativa, conforme mostrado na figura 4. O comando é:

vmstat -a
vmstat -a saída Fig. 4: vmstat -a saída

Passar a opção S nos dará todas as informações que precisamos sobre o escalonamento da CPU, conforme visto na figura 5. O comando é:

vmstat -s
saída vmstat -s Fig. 5: saída vmstat -s

3. lsof

No Linux, tudo depende dos arquivos. Por exemplo, os adaptadores de rede – e até mesmo qualquer acessório USB que conectamos – são todos controlados por meio de arquivos. Portanto, qualquer problema de hardware ou mesmo software em uma máquina Linux deve ser depurado usando arquivos. lsof (ou lista de arquivos abertos) é um comando útil para ver rapidamente a lista de arquivos abertos e processos associados.

A Figura 6 mostra uma lista truncada do output do comando lsof. Esta tabela nos fornece muitas informações, incluindo o comando usado para executar o processo proprietário do arquivo, o PID, o usuário proprietário do processo, o tipo e tamanho do arquivo e muito mais.

saída lsof Fig. 6: saída lsof

Podemos usar várias opções com o comando para filtrar arquivos para um determinado usuário, ou por arquivos usados por uma determinada porta, e assim por diante. Esses incluem:

  • Comando para filtrar arquivos por proprietário: lsof -u root
  • Comando para filtrar arquivos de processos que escutam uma determinada porta: lsof -i TCP:22

A Figura 7 mostra a lista de arquivos abertos e pertencentes ao usuário root.

lsof com filtro de usuário Fig. 7: lsof com filtro de usuário

4. tcpdump

Para depurar problemas de rede ou verificar o tráfego de qualquer aplicativo ou serviço específico nas máquinas, use o comando tcpdump. A Figura 8 mostra uma captura de tela do output do comando.

saída tcpdump Fig. 8: saída tcpdump

Como fica evidente na captura de tela, tcpdump fornece IP de origem, IP de destino, tipo de protocolo usado, quantidade de bytes transferidos e muito mais. Essas informações são úteis ao tentar rastrear uma chamada de rede ou verificar atividades incomuns na rede.

Este comando também é útil para verificar se um pacote ou serviço está fazendo chamadas para hosts ou endereços IP não autorizados. Se sim, ele também verifica se estão sendo compartilhados dados confidenciais não autorizados que não deveriam ou se estão sendo baixados pacotes extras que possam resultar em riscos de segurança.

tcpdump para porta 443 Fig. 9: tcpdump para porta 443

5. netstat

netstat é um comando usado para identificar portas abertas, conexões com endereços IP externos e o status da conexão. A Figura 10 mostra uma captura de tela do output do comando.

saída netstat Fig. 10: saída netstat

O comando fornece o protocolo utilizado, os endereços IP locais e externos e também o estado da conexão. Isso nos ajuda a descobrir se um processo está com todas as portas abertas e se elas estão sendo usadas ou não. Isso pode ajudar a depurar muitos problemas de rede.

Este comando também ajuda a depurar possíveis problemas de segurança de rede. Houve muitos casos relatados de violações de segurança em que uma porta de rede foi aberta na Internet pública, levando a um ataque. Assim, sempre que instalamos ou implementamos um novo serviço, precisamos garantir que não existem portas abertas desnecessariamente que possam resultar em riscos de segurança.

Usando netstat, também podemos verificar a tabela de roteamento da rede. A opção para fazer isso é nr, conforme ilustrado na figura 11.

saída netstat -nr Fig. 11: saída netstat -nr

6. iostat

Como já mencionamos, tudo em um computador Linux é controlado por meio de arquivos. Esses arquivos são gravados nos discos conectados ao computador. Sempre que um processo é executado, juntamente com CPU e memória, o processo também consome largura de banda do disco. Em outras palavras, cada processo executa uma série de operações de I/O (input/output) a cada segundo. E assim como outros recursos, há um limite para essa largura de banda.

iostat é usado para monitorar essa atividade de I/O em todos os discos e partições de um computador. Ele também fornece a utilização da CPU para tais operações. Usando iostat , podemos decidir se precisamos modificar a configuração do sistema para permitir operações de I/O melhores ou equilibradas. A Figura 12 mostra o output de iostat em um computador Ubuntu 18.04.

saída iostat Fig. 12: saída iostat

Como você pode ver, a primeira seção da saída é o uso médio da CPU dividido em seções, incluindo espaço do usuário, espaço do sistema, roubo de CPU, CPU ociosa e espera de I/O. A coluna %iowait nos informa se a CPU está perdendo muito tempo aguardando a conclusão das operações de I/O. Um número alto aqui indicaria que a I/O está lenta ou está travada em algum outro processo.

A próxima seção lista todos os dispositivos conectados ao computador e os TPS (transferências por segundo) correspondentes, números de leitura e gravação de kilobytes e muito mais. Esses números nos dirão se ajustes adicionais são necessários para melhorar o desempenho de I/O.

7. iotop

Assim como usaríamos top para monitorar processos, podemos usar iotop para monitorar todos os threads que estão executando operações de I/O e a largura de banda que eles consomem.

saída iotop Fig. 13: saída iotop

A seção superior esquerda desta tabela fornece a leitura total e real do disco, enquanto a seção superior direita fornece as gravações totais e reais do disco. Nessas seções, temos uma lista de threads em execução no computador junto com o ID do thread (TID), a prioridade do thread, o proprietário (usuário) do thread, a largura de banda de leitura e gravação do disco, a porcentagem de tempo gasto em troca, porcentagem de tempo gasto em espera de I/O, bem como o comando para o thread.

Por outro lado, você também notará que nem todos esses threads realizam operações de I/O. Para filtrar a lista para mostrar apenas esses tópicos, use a opção O ou somente, conforme mostrado abaixo:

iotop -o

ou

iotop --only

A Figura 14 abaixo mostra o output desses comandos.

saída iotop -o Fig. 14: saída iotop -o

Este comando nos ajuda a ver a lista de threads que ocupam muito da largura de banda de E/S e fazem com que outros threads esperem pela I/O, interrompendo assim outros processos ou usuários.

Conclusão

Existem comandos poderosos disponíveis no Linux para monitorar e depurar qualquer tipo de problema de desempenho. Porém, apenas conhecer a sintaxe e as opções desses comandos não é suficiente. Também precisamos saber qual comando usar em um determinado cenário. Esta lista deve fornecer uma vantagem para os administradores de sistemas Linux entenderem melhor seus computadores.

Was this article helpful?
Monitore seu ambiente Linux

Verifique a integridade e a disponibilidade de seus servidores Linux para obter desempenho ideal com a ferramenta de monitoramento Linux do Site24x7.

Write For Us

Write for Site24x7 is a special writing program that supports writers who create content for Site24x7 "Learn" portal. Get paid for your writing.

Write For Us

Write for Site24x7 is a special writing program that supports writers who create content for Site24x7 “Learn” portal. Get paid for your writing.

Apply Now
Write For Us