Eu quero comparar a velocidade desses dois comandos:
grep pattern1 files*
grep pattern2 files*
Infelizmente, o primeiro grep lê muitos arquivos * em buffers de memória, portanto o segundo grep é executado muito rapidamente, mas pelo motivo errado.
Como eu digo ao Linux (Fedora 11): "por favor, pare de armazenar em cache as leituras de disco porque estou testando alguma coisa."
Respostas:
Eu não acho que você possa facilmente dizer "pare temporariamente o cache". Mas o que você pode fazer é dizer ao sistema para eliminar o cache antes de cada execução:
Como raiz:
(Isso está documentado nos documentos do kernel em Documentation / sysctl / vm.txt , o que é útil se, como alguns de nós, você nem sempre consegue se lembrar de imediato do que os valores 1, 2 ou 3 fazem.)
Ou, como alternativa, é claro, prepare o cache e compare o desempenho em cache. (Eu acho que ambos são números úteis.)
fonte
echo 1
somente eliminará o cache da página, não os caches de disco.Ao cronometrar coisas como essa, geralmente eu a executo primeiro para preparar o cache. Em seguida, execute o comando usando o tempo. Ao testar algo assim, você deve se preocupar mais com a CPU e os tempos decorridos e menos com o tempo de E / S.
De qualquer forma, é difícil obter horários totalmente precisos. Se os arquivos de entrada excederem o tamanho da memória disponível para buffers, você provavelmente terminará o ciclo de todos os arquivos através do cache do buffer. Caso contrário, você poderá acessar todos os dados do cache do buffer. Na vida real, geralmente há uma mistura de dados em buffer e dados lidos no disco.
fonte