Como Ajustar a Memória no Linux para Jogos e Aplicações Modernas
📅 Qua, 15 mai 2024, 11:16 👤 Nerun
Este tutorial é baseado em uma fração de um material disponível no canal A1RM4X: How to optimize Linux Mint for gaming - Ultimate Full Tutorial - Linux Switching series - Part 5.
O objetivo aqui é ajustar parâmetros de gerenciamento de memória do kernel Linux para melhorar o desempenho geral do sistema — com foco em jogos.
Consultando os valores atuais
Primeiro, vamos verificar os valores padrão do sistema:
$ cat /proc/sys/vm/max_map_count
65530
$ cat /proc/sys/vm/swappiness
60
$ cat /proc/sys/vm/vfs_cache_pressure
100
Agora precisamos entender o que cada um desses parâmetros representa.
Swappiness
O swappiness define o quão agressivamente o kernel passa a usar swap em relação à memória RAM. Swap é uma área em disco usada para descarregar páginas de memória quando o kernel entende que isso é vantajoso para manter o sistema responsivo.
O valor varia de 0 a 100:
- 60 é o padrão da maioria das distribuições
- Valores baixos favorecem RAM
- Valores altos favorecem swap
⚠️ Importante:
Swappiness não é um limite rígido nem funciona como "quando X% da RAM acabar". Ele é um peso heurístico usado pelo kernel em decisões de alocação.
Na prática:
- Valores baixos (10–20) → o kernel evita swap ao máximo
- Valores altos (80–100) → o kernel troca páginas para swap mais cedo
Recomendações gerais:
- Pouca RAM (4–8 GB) → manter em 60 ou até 80 pode evitar travamentos
- Muita RAM (16 GB ou mais) → reduzir para 30 ou até 10 costuma melhorar a responsividade
max_map_count
O vm.max_map_count define quantas áreas de mapeamento de memória um único processo pode criar. Essas áreas são usadas por:
- chamadas a
malloc mmapemprotect- bibliotecas compartilhadas
- engines modernas e camadas de compatibilidade como Wine/Proton
A maioria dos programas usa poucas centenas de mapas, mas:
- jogos modernos
- engines gráficas
- aplicações Windows rodando via Proton
- debuggers e runtimes complexos
podem exigir dezenas ou centenas de milhares.
Historicamente, o valor padrão é 65530. Em abril de 2024, o Arch Linux elevou esse valor para 1048576, mudança que depois foi seguida por Debian e outras distribuições, justamente para evitar falhas e gargalos em aplicações modernas intensivas em memória.
Esse parâmetro não consome memória por si só — ele apenas remove um limite artificial.
vfs_cache_pressure
O vm.vfs_cache_pressure controla a agressividade com que o kernel descarta cache de metadados do sistema de arquivos, especificamente:
- inode cache → metadados (permissões, tamanho, timestamps)
- dentry cache → nomes de arquivos, diretórios e caminhos já resolvidos
Isso não é cache do conteúdo dos arquivos, mas da estrutura do sistema de arquivos. Sem esse cache, o kernel precisa consultar o disco constantemente apenas para resolver caminhos.
Valores comuns:
- 100 (padrão) O kernel descarta esse cache com facilidade para liberar memória.
- 50
O kernel preserva mais esses caches, resultando em:
- Navegação em diretórios mais rápida
- Menos I/O em builds, jogos e engines
- Menos acessos desnecessários ao SSD/NVMe
- 0 Evita quase totalmente o descarte — geralmente não recomendado.
Em desktops modernos com bastante RAM, 50 é um valor seguro e eficiente.
Configurando os valores permanentemente
Vamos criar um arquivo de configuração para aplicar esses ajustes de forma persistente:
$ sudoedit /etc/sysctl.d/80-gamecompatibility.conf
O arquivo estará vazio. Insira:
vm.max_map_count = 1048576
vm.swappiness = 10
vm.vfs_cache_pressure = 50
No meu caso, tenho 32 GB de RAM, então defini o swappiness em 10.
Para aplicar sem reiniciar:
$ sudo sysctl --system
Verificando novamente:
$ cat /proc/sys/vm/max_map_count
1048576
$ cat /proc/sys/vm/swappiness
10
$ cat /proc/sys/vm/vfs_cache_pressure
50