Pular para o conteúdo principal

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​

  1. Monitorar regularmente

    • Usar free, top, htop
    • Identificar processos que consomem muita memória
  2. Ajustar o swap

    • Tamanho recomendado: 1-2x a RAM
    • Mais se for servidor com muita RAM
  3. Limitar processos

    • Usar ulimit para limitar a memória
    • Configurar OOM killer
  4. 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