Uma opção é usar o sistema audit
. Algo como:
sudo auditctl -a exit,always -F dir=/the/directory -p rw
E, em seguida, analise o audit.log
para as chamadas do sistema de E / S.
Eu tenho um problema com o monitoramento de um fluxo de E / S em um diretório específico: a quantidade de bytes lidos e escritos durante um período especificado.
Eu tenho tentado usar iostat
, inotifywait
e inotifywatch
, mas infelizmente eles medem apenas a atividade no diretório (abrir, fechar, modificar, etc), eles não fornecem informações sobre os bytes lidos e gravados .
Uma opção é usar o sistema audit
. Algo como:
sudo auditctl -a exit,always -F dir=/the/directory -p rw
E, em seguida, analise o audit.log
para as chamadas do sistema de E / S.
Até onde sei, não existe uma ferramenta padrão capaz de fazer isso. No entanto, posso pensar em várias maneiras de conseguir isso, cada uma com suas desvantagens.
Se você souber qual processo acessará o arquivo / diretório e tiver certeza de que esse processo faz apenas poucas ou nenhuma outra E / S, será possível analisar /proc/PID/io
e determinar a quantidade de bytes lidos / gravados, observando rchar
/ wchar
(qualquer E / S) ou read_bytes
/ write_bytes
(disco E / S) ou mesmo syscr
/ syscw
(número de chamadas de sistema semelhantes a leitura () / gravação ()). / p>
Se você não souber qual processo acessará o arquivo / diretório (mas tem certeza de que esses processos fazem apenas poucas ou nenhuma outra E / S), observe o local usando o recurso inotify
, determine os PIDs e então faça o mecanismo descrito no parágrafo anterior.
Se o processo determinado faz outras E / S, fica um pouco mais complicado. Você tem que strace
e somar as compensações de todas as chamadas de leitura / gravação de todos os descritores de arquivos apontando para o seu arquivo / diretório.
Todas essas soluções não são precisas para um único byte, mas podem fornecer uma boa estimativa.
Tags directory monitoring io linux