Como rastrear / monitorar a E / S de um comando do Linux

5

Corri find / -name abc.html e pouco tempo depois de executar este comando novamente. Desta vez foi muito rápido, então eu sei que find deve estar armazenando o resultado em algum lugar.

Como posso descobrir onde o cache está armazenado?

    
por lovespring 11.04.2015 / 18:56

2 respostas

8

De fato, como @zongfu apontou, find não armazena em cache seus resultados em um arquivo, mas o kernel está armazenando em cache os diretórios find está lendo para que possam ser lidos novamente sem tocar no disco, e é por isso É mais rápido. Se você ainda quiser ver o tipo de IO que um programa está fazendo, use strace . Este programa executa outro programa que você especifica e registra as chamadas do sistema que o programa faz. Sem nenhum argumento ele imprimirá todos eles, o que pode ser um monte de informações, então você quer limitá-lo apenas a certas chamadas, como open() , assim você pode ver quais arquivos o programa vai abrir. Isso seria parecido com:

strace -eopen someprogram
    
por psusi 11.04.2015 / 20:10
5

find não armazena nada em cache, especialmente no disco. A razão pela qual a segunda execução é muito mais rápida é porque o Linux armazena em cache os dados acessados (neste caso, listagens de diretórios) na memória (consulte free ).

    
por zhongfu 11.04.2015 / 19:34