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