Table of Contents

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`

Nível Intermediário

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
 
  1. 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
 
  1. 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
 
  1. 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
 
  1. 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
 
  1. 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
 
  1. 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
 
  1. 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
 
  1. 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
 
  1. 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
 
  1. 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
 
  1. 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
 
  1. 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.