Cache de disco Linux. Vamos falar sobre cache de disco no Linux, de forma detalhada e prática, porque é um dos temas mais importantes para entender desempenho de servidores e sistemas de arquivos.
1️⃣ O que é cache de disco no Linux
O cache de disco (ou page cache) é uma camada de memória RAM usada pelo Linux para armazenar dados lidos ou escritos recentemente no disco. Ele serve para acelerar operações de I/O sem precisar ir ao disco físico toda hora.
- Quando você lê um arquivo, o Linux tenta servir os dados do cache em RAM em vez do disco.
- Quando você escreve, o Linux pode primeiro colocar os dados no cache e escrever depois no disco (write-back), melhorando performance.
2️⃣ Como o Linux organiza o cache
O Linux usa a memória RAM de forma agressiva para cache, mas não compromete o sistema. Ele mantém três categorias principais:
- Page cache – armazena blocos de arquivos lidos do disco.
- Buffer cache – usado para metadados de sistema de arquivos, como inodes e tabelas de diretórios.
- Swap cache – páginas que foram para swap, mas ainda podem estar em RAM.
Você pode visualizar a memória de cache com:
free -h
Exemplo de saída:
total used free shared buff/cache available Mem: 15G 8G 1G 0G 6G 6G Swap: 2G 0G 2G
- buff/cache mostra quanto de RAM está sendo usado para cache de disco e buffers.
Também é possível usar:
cat /proc/meminfo | grep -E 'Cached|Buffers|SwapCached'
3️⃣ Tipos de escrita
O Linux tem dois modos de escrita que afetam o cache:
- Write-back (padrão)
- Dados vão para o cache primeiro, depois são gravados no disco em segundo plano.
- Mais rápido, mas existe risco de perda de dados se o sistema travar antes do flush.
- Write-through
- Dados vão direto para o disco, sem ficar só em cache.
- Mais seguro, mas mais lento.
4️⃣ Comandos importantes
- Limpar cache (útil para testes de desempenho, não para uso normal):
# Limpar cache de página, dentries e inodes sudo sync; sudo echo 3 > /proc/sys/vm/drop_caches
- Ver estatísticas do cache de disco:
vmstat -s | grep "cache"
- Forçar flush de dados pendentes no disco:
sudo sync
5️⃣ Cache e desempenho
- Cache de disco ajuda muito em leituras repetidas.
- Sistemas de banco de dados ou aplicações I/O intensivas podem se beneficiar do ajuste do cache.
- Parâmetros importantes em
/proc/sys/vm/:
| Parâmetro | O que faz |
|---|---|
vm.swappiness | Determina quando usar swap vs RAM/cache |
vm.vfs_cache_pressure | Controla limpeza de cache de metadados |
dirty_ratio / dirty_background_ratio | Quando o kernel escreve dados sujos do cache para o disco |
Exemplo de ajuste agressivo de cache:
# Diminuir a pressão para limpar cache de metadados sudo sysctl -w vm.vfs_cache_pressure=50 # Flush automático mais cedo para evitar spikes sudo sysctl -w vm.dirty_ratio=15 sudo sysctl -w vm.dirty_background_ratio=5
6️⃣ Observações importantes
- Cache não é memória perdida: Linux libera RAM de cache automaticamente quando algum processo precisa de memória.
- Não confunda cache com swap: swap é usado quando a RAM realmente falta, cache é apenas otimização.
- Cache de disco é crítico para performance de I/O: em servidores web, bancos de dados e sistemas de arquivos grandes, ele pode fazer diferença enorme.


