Nível Básico
1. Verificação do Uso de Memória com `free`
2. Verificação do Uso de Swap com `swapon` e `swapoff`
3. Ativação de Swap com `swapon`
4. Verificação de Processos com Uso de Memória com `ps`
1. Criação de Arquivo de Swap com `dd`
2. Configuração de Permissões do Arquivo de Swap com `chmod`
3. Inicialização do Arquivo de Swap com `mkswap`
4. Ativação do Arquivo de Swap com `swapon`
5. Montagem Permanente do Arquivo de Swap com `fstab`
sudo nano /etc/fstab
# Adicione a linha:
/swapfile none swap sw 0 0
Descrição: Configura o arquivo /swapfile para ser ativado automaticamente como swap durante a inicialização do sistema.
6. Monitoramento do Uso de Swap com `vmstat`
Nível Avançado
1. Ajuste do Desempenho de Swap com `swappiness`
sudo nano /etc/sysctl.conf
# Adicione a linha:
vm.swappiness=10
Descrição: Configura o valor de swappiness permanentemente, para ser aplicado a cada reinicialização do sistema.
2. Aumento do Tamanho do Arquivo de Swap com `dd`
sudo swapoff /swapfile
sudo dd if=/dev/zero of=/swapfile bs=1G count=4
sudo mkswap /swapfile
sudo swapon /swapfile
Descrição: Desativa o arquivo de swap atual, expande seu tamanho para 4
GB com
dd, reinicializa o swap com
mkswap e ativa o novo swap com
swapon.
3. Redimensionamento de Partições de Swap com `resize2fs` e `parted`
4. Monitoramento Detalhado com `smem`
5. Controle de Uso de Memória com `cgroups`
Nível Especializado
1. Uso de `zram` para Compressão de Memória
sudo modprobe zram
echo lz4 | sudo tee /sys/block/zram0/comp_algorithm
sudo zramctl --find --size 2G
sudo mkswap /dev/zram0
sudo swapon /dev/zram0
Descrição: Configura um dispositivo
zram com 2
GB de compressão de memória usando o algoritmo
lz4, criando uma área de swap na memória comprimida para melhorar a eficiência em sistemas com pouca RAM.
2. Gerenciamento Avançado de Swap com `systemd`
sudo apt install systemd-swap
sudo systemctl enable --now systemd-swap
Descrição: Usa o systemd-swap para configurar e gerenciar swap dinâmico, permitindo o uso de múltiplas áreas de swap e ajuste dinâmico baseado no uso de memória do sistema.
3. Otimização de Memória com `numactl` para Arquiteturas NUMA
numactl --membind=0 --cpunodebind=0 meu_programa
Descrição: Executa meu_programa com a memória e CPU ligados ao nó 0 de uma arquitetura NUMA, garantindo que o processo utilize memória local ao nó da CPU, o que pode melhorar o desempenho.
4. Criação de Dispositivos Virtuais com `tmpfs` para Swap
sudo mount -t tmpfs -o size=2G tmpfs /mnt/ramdisk
Descrição: Monta um sistema de arquivos temporário em
/mnt/ramdisk com 2
GB de RAM, útil para armazenar dados temporários que precisam de alta velocidade de acesso.
sudo swapoff -a
sudo mount -t tmpfs -o size=1G tmpfs /mnt/tmpfs_swap
sudo mkswap /mnt/tmpfs_swap
sudo swapon /mnt/tmpfs_swap
Descrição: Cria um dispositivo de swap temporário de 1
GB usando
tmpfs, ideal para ambientes que precisam de swap rápido, mas temporário.
5. Monitoramento de Memória com `perf` para Análise de Desempenho
sudo perf stat -e mem_load_uops_l3_miss_retired.local_dram ls
Descrição: Usa o perf para monitorar miss de cache L3 e acessos à DRAM local ao executar o comando ls. Este exemplo ajuda a identificar gargalos de memória em sistemas de alta performance.
6. Gerenciamento de Memória em Contêineres com `cgroups` e `Docker`
docker run --memory="1g" --memory-swap="2g" meu_container
Descrição: Executa o contêiner
meu_container limitando o uso de memória RAM a 1
GB, com até 2
GB incluindo swap, garantindo que o contêiner não ultrapasse esse limite.
7. Otimização e Controle de Desempenho com `HugePages`
echo 512 | sudo tee /proc/sys/vm/nr_hugepages
Descrição: Configura o sistema para usar 512 páginas de memória enormes (HugePages), que são mais eficientes em certos tipos de cargas de trabalho, como bancos de dados.
sudo mount -t hugetlbfs none /mnt/hugepages -o pagesize=1G
Descrição: Monta um sistema de arquivos usando HugePages de 1
GB em
/mnt/hugepages, útil para otimizar aplicações que fazem uso intensivo de memória.