===== Nível Básico =====
=== 1. Verificação do Uso de Memória com `free` ===
* **free -h** - Exibe o uso de memória e swap de forma legível.
- Exemplo de uso: free -h
- Descrição: Mostra o uso de memória RAM e swap, exibindo o total, usado e disponível em um formato fácil de ler (MB/GB).
=== 2. Verificação do Uso de Swap com `swapon` e `swapoff` ===
* **swapon -s** - Lista as áreas de swap ativas.
- Exemplo de uso: swapon -s
- Descrição: Exibe todas as áreas de swap ativas no sistema, mostrando o dispositivo de swap e seu uso atual.
* **swapoff** - Desativa uma partição de swap.
- Exemplo de uso: sudo swapoff /dev/sda2
- Descrição: Desativa a partição de swap localizada em ''/dev/sda2'', útil para manutenção ou para redimensionamento de swap.
=== 3. Ativação de Swap com `swapon` ===
* **swapon** - Ativa uma partição de swap.
- Exemplo de uso: sudo swapon /dev/sda2
- Descrição: Ativa a partição de swap em ''/dev/sda2'', tornando-a disponível para o sistema utilizar quando necessário.
=== 4. Verificação de Processos com Uso de Memória com `ps` ===
* **ps aux --sort=-%mem** - Lista processos ordenados por uso de memória.
- Exemplo de uso: ps aux --sort=-%mem
- Descrição: Exibe todos os processos em execução, ordenados pelo uso de memória, ajudando a identificar quais processos estão consumindo mais RAM.
===== Nível Intermediário =====
=== 1. Criação de Arquivo de Swap com `dd` ===
* **dd** - Cria um arquivo de swap.
- Exemplo de uso: sudo dd if=/dev/zero of=/swapfile bs=1G count=2
- Descrição: Cria um arquivo de swap de 2 GB no diretório raiz (''/swapfile'') usando o comando ''dd'', preenchendo o arquivo com zeros.
=== 2. Configuração de Permissões do Arquivo de Swap com `chmod` ===
* **chmod 600** - Define permissões de leitura/escrita no arquivo de swap.
- Exemplo de uso: sudo chmod 600 /swapfile
- Descrição: Define permissões restritas para o arquivo de swap, garantindo que apenas o root tenha acesso para ler e escrever no arquivo, garantindo segurança.
=== 3. Inicialização do Arquivo de Swap com `mkswap` ===
* **mkswap** - Inicializa um arquivo para uso como swap.
- Exemplo de uso: sudo mkswap /swapfile
- Descrição: Inicializa o arquivo ''/swapfile'' como uma área de swap válida, tornando-o pronto para ser ativado.
=== 4. Ativação do Arquivo de Swap com `swapon` ===
* **swapon** - Ativa o arquivo de swap.
- Exemplo de uso: sudo swapon /swapfile
- Descrição: Ativa o arquivo ''/swapfile'' como swap, permitindo que o sistema o utilize quando a memória física estiver cheia.
=== 5. Montagem Permanente do Arquivo de Swap com `fstab` ===
* **fstab** - Configura a ativação automática do swap na inicialização.
- Exemplo de uso:
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` ===
* **vmstat** - Monitora a utilização de memória e swap.
- Exemplo de uso: vmstat 5
- Descrição: Exibe a utilização de memória, swap, CPU e I/O a cada 5 segundos, permitindo monitorar o uso de swap em tempo real e verificar a performance do sistema.
===== Nível Avançado =====
=== 1. Ajuste do Desempenho de Swap com `swappiness` ===
* **sysctl** - Ajusta a prioridade do uso de swap.
- Exemplo de uso: sudo sysctl vm.swappiness=10
- Descrição: Define o parâmetro ''swappiness'' para 10, o que significa que o sistema só usará swap quando a memória física estiver quase esgotada. O valor pode variar de 0 a 100, sendo que valores menores priorizam o uso de RAM.
* **/etc/sysctl.conf** - Configura o swappiness permanentemente.
- Exemplo de uso:
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` ===
* **dd** - Expande um arquivo de swap existente.
- Exemplo de uso:
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` ===
* **parted** - Redimensiona uma partição de swap.
- Exemplo de uso: sudo parted /dev/sda
- Descrição: Utiliza o ''parted'' para redimensionar a partição de swap localizada em ''/dev/sda'', ajustando o tamanho da partição conforme necessário.
* **resize2fs** - Ajusta o tamanho do sistema de arquivos em uma partição de swap.
- Exemplo de uso: sudo resize2fs /dev/sda2
- Descrição: Ajusta o sistema de arquivos da partição de swap após seu redimensionamento, garantindo que o sistema reconheça o novo tamanho.
=== 4. Monitoramento Detalhado com `smem` ===
* **smem** - Monitora o uso detalhado de memória por processo.
- Exemplo de uso: sudo smem -rs
- Descrição: Lista os processos ordenados pelo uso de memória residente (RAM), útil para identificar processos que estão consumindo mais memória do que o esperado.
=== 5. Controle de Uso de Memória com `cgroups` ===
* **cgcreate** - Cria um grupo de controle para limitar o uso de memória.
- Exemplo de uso: sudo cgcreate -g memory:/limitar_memoria
- Descrição: Cria um cgroup chamado ''limitar_memoria'' para controlar o uso de memória de processos.
* **cgset** - Define o limite de memória para o cgroup.
- Exemplo de uso: sudo cgset -r memory.limit_in_bytes=1G limitar_memoria
- Descrição: Limita o uso de memória do cgroup ''limitar_memoria'' para 1 GB, útil para evitar que processos consumam mais memória do que o permitido.
* **cgexec** - Executa um processo dentro de um cgroup com limite de memória.
- Exemplo de uso: sudo cgexec -g memory:/limitar_memoria /usr/bin/meu_programa
- Descrição: Executa o comando ''meu_programa'' dentro do cgroup ''limitar_memoria'', garantindo que ele não ultrapasse o limite de memória estabelecido.
===== Nível Especializado =====
=== 1. Uso de `zram` para Compressão de Memória ===
* **zram** - Usa a compressão de memória RAM para aumentar a eficiência.
- Exemplo de uso:
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` ===
* **systemd-swap** - Gerencia swap dinâmico com systemd.
- Exemplo de uso:
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** - Controla a afinidade de memória em sistemas com arquitetura NUMA.
- Exemplo de uso:
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 ===
* **tmpfs** - Usa RAM como um sistema de arquivos temporário.
- Exemplo de uso:
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.
* **swapoff e swapon para tmpfs** - Usa tmpfs para swap temporário.
- Exemplo de uso:
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 ===
* **perf stat** - Coleta estatísticas detalhadas de uso de memória.
- Exemplo de uso:
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** - Limita o uso de memória de contêineres.
- Exemplo de uso:
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` ===
* **HugePages** - Usa páginas de memória maiores para otimizar o uso de RAM.
- Exemplo de uso:
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.
* **Montagem de HugePages com `mnt`** - Usa HugePages em sistemas de arquivos.
- Exemplo de uso:
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.