como limpar totalmente o cache do sistema de arquivos no linux?

9

Em um teste de desempenho, desejo ignorar a influência do cache do sistema linux (incluindo o cache da página / cache do inode e assim por diante).

Eu tentei o sinalizador O_DIRECT, mas verificou-se que a E / S direta ainda "aprecia" o efeito de algum cache.

Existe uma maneira completa de fechar o efeito do cache do sistema?


fonte
2
Qual é o objetivo de um teste de desempenho "irreal"? Você está tentando testar algo que nenhum sistema operacional moderno jamais permitiria que acontecesse.
Infelizmente, não é nada irreal, ainda é como o kernel aio funciona hoje. Eu queria muito que o Sr. T percebesse que a E / S e o cache assíncronos não são termos mutuamente exclusivos. É algo que os funcionários da Microsoft já perceberam há 15 anos (embora o desempenho anterior ao Vista possa ser decepcionante, especialmente sob concorrência). Um cara indiano também escreveu um patch anos atrás, mas foi recusado.

Respostas:

14

(na verdade cai assim ...) corra syncprimeiro, depois

pagecache gratuito:

echo 1 > /proc/sys/vm/drop_caches

dentões e inodes livres:

echo 2 > /proc/sys/vm/drop_caches

pagecache, dentries e inodes gratuitos:

echo 3 > /proc/sys/vm/drop_caches

Então você pode começar com um cache limpo, mas é claro que o cache ainda funcionará.

Karoly Horvath
fonte
Eu ouvi sobre esse método em algum lugar. mas não há esses arquivos no meu ubuntu 10.04. então eu falhei ao executar os comandos acima.
@ tom_cat: Você precisa de um kernel mais recente que o 2.6.16, e o Ubuntu 10.04 veio com o 2.6.32, se não me engano, então isso deve funcionar. Eu apenas verifiquei meu 11,04 instalar Por que vale a pena, que tem esta entrada proc (infelizmente nenhuma 10,04 mais aqui)
@ Damon: Sim, você está certo. Muito obrigado. Eu descobri que havia feito logon em uma máquina remota do kernel antigo.
0

não, você não pode ignorar o cache. Mas, no entanto, você pode forçar uma sincronização do sistema de arquivos (ou seja, limpar o cache e gravar os dados no disco) com a chamada adicional do sistema fsync (3).

Saudações, CK


fonte