Meu software de gerenciamento de documentos está executando muitas E / S e gostaria de saber quais arquivos ele está acessando mais.
Existe uma ferramenta Linux que me dê a lista dos principais arquivos que consomem IO, como iotop, mas para arquivos, a cada poucos segundos?
Isso pode ser parecido com:
$ thetool
THRPUT R/W/SWP FILE
40MB/s write /usr/alfresco/repo/1283421/1324928.doc
12MB/s read /usr/alfresco/cache/3928dh29f8if
11MB/s read /tmp/239398hf2f024f472.tmp
Olhei nas páginas man de iotop
, lsof
, strace
e eles não parecem oferecer esse recurso.
monitoring
disk-usage
Nicolas Raoul
fonte
fonte
Respostas:
Acho que sua métrica "número de bytes" é a errada. Considere dois acessos. Um lê 10MB de um arquivo. O outro lê cada 512º byte do arquivo nos primeiros 10 MB. O "número de bytes" será 512 vezes maior no primeiro acesso comparado ao segundo. No entanto, ambos colocarão exatamente a mesma carga no subsistema de E / S.
Se você pode aceitar "número de operações", que é tão bom ou tão ruim quanto "número de bytes", então você tem algo que pode realmente medir. O
inotifywatch
programa faz isso e provavelmente faz parte doinotify-tools
pacote da sua distribuição .Ele informará imediatamente quais arquivos compõem a maior parte dos acessos e provavelmente permitirá que você resolva seu problema real.
fonte
Antes de tudo, para esclarecer: Não existe "IO Consumindo Arquivos" . Arquivos são objetos passivos. São programas que acionam E / S (normalmente lendo / gravando arquivos) e podem acessar arquivos com mais ou menos frequência. Portanto, a taxa de transferência mencionada em relação aos arquivos não teria muito sentido. Uma informação útil sobre arquivos pode ser a frequência com que eles são acessados e modificados. Isso pode ser monitorado usando
notifywait -m /some/file/or/directory
(de ferramentas inotify ) ou algum sistema mais complexo como FAM ou Gamin .fonte