Capítulo 2.3 - Gerenciamento de Memória e Swap
Objetivos de Aprendizagem
Ao final deste capítulo, você será capaz de:
- Compreender como o Linux gerencia a memória
- Explicar memória virtual e paginação
- Entender o swap e seu papel
- Monitorar o uso de memória
- Otimizar o uso de memória
O que é Gerenciamento de Memória?
O Linux utiliza um sistema sofisticado de gerenciamento de memória que combina memória física (RAM) e memória virtual (swap) para otimizar o desempenho e permitir a execução de mais processos do que a RAM disponível.
Memória Física vs Memória Virtual
Memória Física (RAM)
- Rápida: Acesso direto pelo CPU
- Limitada: Quantidade fixa instalada
- Volátil: Perdida ao reiniciar
- Cara: Mais cara que o armazenamento em disco
Memória Virtual
- Abstrata: Cada processo vê um espaço de memória virtual
- Paginação: Dividida em páginas (geralmente 4KB)
- Mapeamento: Páginas virtuais mapeadas para RAM ou swap
- Proteção: Isolamento entre processos
Paginação e MMU
A MMU (Memory Management Unit) gerencia a tradução de endereços:
Swap
O swap é um espaço em disco utilizado como extensão da RAM:
Funções:
- Extensão da memória disponível
- Suporte a mais processos
- Melhora da estabilidade
Tipos:
- Partição swap: Partição dedicada (recomendado)
- Arquivo swap: Arquivo de swap (mais flexível)
Configuração:
# Ver o swap
free -h
swapon --show
# Criar um arquivo swap
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# Ativar na inicialização
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Monitoramento de Memória
Comandos de Monitoramento
# Visão geral
free -h
# Detalhes por processo
top
htop
# Estatísticas detalhadas
cat /proc/meminfo
# Uso por processo
ps aux --sort=-%mem | head
Interpretação
- MemTotal: RAM total
- MemFree: RAM livre
- MemAvailable: RAM disponível (livre + cache recuperável)
- SwapTotal: Swap total
- SwapFree: Swap livre
Otimização de Memória
Boas Práticas
-
Monitorar regularmente
- Usar
free,top,htop - Identificar processos que consomem muita memória
- Usar
-
Ajustar o swap
- Tamanho recomendado: 1-2x a RAM
- Mais se for servidor com muita RAM
-
Limitar processos
- Usar
ulimitpara limitar a memória - Configurar OOM killer
- Usar
-
Limpar o cache
# Liberar o cache (se necessário)
sync
echo 3 | sudo tee /proc/sys/vm/drop_caches
Resumo
Neste capítulo, você aprendeu:
Gerenciamento de Memória: RAM + Swap para otimizar o desempenho
Memória Virtual: Abstração para cada processo
Paginação: Divisão em páginas, gerenciada pela MMU
Swap: Extensão da RAM no disco
Monitoramento: free, top, htop, /proc/meminfo
Otimização: Monitoramento, ajuste de swap, limites
Próximos Passos
Capítulo 2.4: Sistema de Arquivos Virtual (VFS)
Capítulo 2.5: Gerenciamento de Processos
Capítulo criado em: Dezembro 2024