Monitoramento de memória

Comandos avançados para monitorar e ajustar o uso de memória no Linux

Aprenda a usar comandos avançados como pidstat, sar, e cgroups para monitorar e ajustar o uso de memória no Linux, melhorando o desempenho e a estabilidade do sistema.

Instalação de memória RAM em uma placa-mãe, representando o gerenciamento de memória em sistemas Linux

O gerenciamento de memória no Linux é uma das principais ferramentas para otimizar o desempenho de servidores e máquinas com recursos limitados. Saber como monitorar o uso de memória e realizar ajustes pode garantir que seu sistema continue rodando de forma eficiente, mesmo sob carga intensa. Neste segundo tutorial, vamos explorar mais alguns comandos úteis e técnicas avançadas para gerenciar a memória no Linux, ajudando você a identificar gargalos e melhorar a performance geral do sistema.

Tutorial prático: Como monitorar e ajustar o uso de memória no Linux

1. Comando ps – Monitorar o uso de memória por processos específicos

O comando ps é uma ferramenta poderosa para listar processos em execução, e pode ser ajustado para mostrar o uso de memória de cada processo de forma detalhada.

ps aux --sort=-%mem | head

Esse comando lista todos os processos em execução, ordenados pelo uso de memória (do maior para o menor), exibindo os 10 processos que mais consomem memória. O parâmetro --sort=-%mem garante que a saída seja organizada pelo uso de memória.

2. Comando pidstat – Analisar o uso de memória e CPU por processo ao longo do tempo

O pidstat faz parte do pacote sysstat e oferece uma visão mais detalhada do uso de memória e CPU por processo ao longo do tempo, sendo ideal para diagnósticos mais profundos.

sudo apt install sysstat
pidstat -r -u 5

O parâmetro -r mostra estatísticas de uso de memória, enquanto -u exibe o uso de CPU. O valor 5 instrui o comando a atualizar as informações a cada 5 segundos.

3. Comando sar – Monitoramento histórico de uso de memória

O sar é uma ferramenta avançada que permite monitorar o uso de memória ao longo do tempo, fornecendo dados históricos detalhados. Isso é útil para detectar picos de uso de memória e padrões de comportamento.

sudo apt install sysstat
sar -r 5 10

Esse comando exibe o uso de memória (-r) a cada 5 segundos, repetindo 10 vezes. O sar é ideal para identificar como o uso de memória flutua ao longo do tempo.

4. Comando watch – Monitorar em tempo real qualquer comando

O watch é uma ferramenta poderosa para observar a saída de qualquer comando em intervalos regulares. Por exemplo, você pode monitorar o uso de memória com free a cada 2 segundos:

watch -n 2 free -h

Isso é útil para observar o uso de memória em tempo real sem a necessidade de executar o comando repetidamente.

5. Comando swapoff e swapon – Desativar e reativar a memória swap

Em alguns casos, pode ser necessário desativar temporariamente a swap para liberar recursos ou diagnosticar problemas. Isso pode ser feito com os comandos swapoff e swapon.

  • Desativar a swap:
sudo swapoff -a
  • Reativar a swap:
sudo swapon -a

Esse processo pode ser útil para realizar manutenções em discos ou durante a troca de configurações de swap.

6. Ajustando a quantidade de memória cache usada pelo Linux

O Linux usa parte da memória para cache de arquivos, o que geralmente melhora o desempenho, mas, em alguns casos, você pode desejar liberar o cache manualmente.

  • Verificar o cache atual:
free -h
  • Limpar o cache manualmente:
sudo sync; sudo sysctl -w vm.drop_caches=3

Isso limpa as páginas de cache de arquivos que não estão mais sendo usadas, sem afetar a memória ativa. Esse ajuste pode ser útil em situações em que o cache está ocupando muita memória e você deseja liberar recursos.

7. Usar o cgroups para limitar o uso de memória por grupos de processos

O Linux oferece o Control Groups (cgroups), que permite limitar o uso de recursos, como memória, para um grupo de processos. Isso é útil para garantir que processos críticos tenham sempre memória suficiente.

  • Criar um grupo de controle para memória:
sudo cgcreate -g memory:/meugrupo
  • Definir um limite de memória:
echo "500M" | sudo tee /sys/fs/cgroup/memory/meugrupo/memory.limit_in_bytes

Esse exemplo cria um grupo chamado meugrupo e define um limite de 500 MB para o uso de memória pelos processos dentro desse grupo.

  • Adicionar um processo ao grupo:
sudo cgclassify -g memory:/meugrupo <PID_do_processo>

Com isso, o processo será restrito a utilizar apenas a quantidade de memória permitida pelo cgroup, evitando que ele consuma todos os recursos do sistema.

Conclusão

Esses comandos avançados fornecem uma visão detalhada e mais profunda do uso de memória no Linux, permitindo que você monitore e ajuste o sistema de forma mais granular. Ao utilizar ferramentas como ps, pidstat, sar e cgroups, você pode diagnosticar problemas de desempenho e otimizar o uso de recursos, garantindo que seu sistema Linux funcione de maneira estável e eficiente. Para mais dicas e discussões avançadas sobre gerenciamento de memória, participe do nosso Grupo SempreUpdate no Telegram.