Come posso elencare i migliori file che utilizzano IO?


11

Il mio software di gestione dei documenti sta eseguendo molte operazioni di I / O e vorrei sapere a quali file accede di più.

Esiste uno strumento Linux che mi darebbe l'elenco dei principali file che consumano IO, come iotop ma per i file, ogni pochi secondi?

Potrebbe apparire come:

$ 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

Ho guardato nelle pagine man di iotop, lsof, stracee non sembrano offrire una tale funzione.


Potresti scrivere un post-processore per ottenere queste informazioni da 'strace', ma per quanto ne so, non esiste uno strumento del genere. (Uno strumento del genere perderebbe le operazioni avvenute tramite 'mmap'.)
David Schwartz,

Risposte:


2

Penso che la tua metrica "numero di byte" sia quella sbagliata. Considera due accessi. Uno legge 10 MB da un file. L'altro legge ogni 512 ° byte del file per i primi 10 MB. Il "numero di byte" sarà 512 volte superiore per il primo accesso rispetto al secondo. Tuttavia, entrambi caricheranno esattamente lo stesso carico sul sottosistema I / O.

Se puoi accettare il "numero di operazioni", che è buono o cattivo quanto il "numero di byte", allora hai qualcosa che puoi effettivamente misurare. Il inotifywatchprogramma fa questo ed è probabilmente parte del inotify-toolspacchetto della tua distribuzione .

Ti dirà immediatamente quali file comprendono la maggior parte degli accessi e probabilmente ti consentirà di risolvere il tuo problema reale.


iotop usa MB / s come metrica, iotop è sbagliato? +1 per il tuo suggerimento inotifywatch, l'esempio nella pagina man è ESATTAMENTE quello che mi serve e quello che ho descritto nella mia domanda. Molte grazie!
Nicolas Raoul,

Giusto, ma "iotop" non è in grado di identificare i file, ma solo di bloccare i dispositivi. Quindi potrebbe aiutarti a identificare il processo problematico e / o il filesystem / dispositivo problematico, ma non a quali file sta accedendo. Potrebbe essere necessario mettere insieme pezzi di strumenti diversi.
David Schwartz,

Hum, interessante, grazie! Ora sto giocando con inotifywatch e controllerò cosa posso fare.
Nicolas Raoul,

0

Prima di tutto, per chiarire: non esistono "file che consumano IO" . I file sono oggetti passivi. Sono programmi che attivano IO (in genere leggendo / scrivendo file) e possono accedere ai file più o meno spesso. Quindi il throughput che menzioni riguardo ai file non avrebbe molto senso. Un'utile informazione relativa ai file potrebbe essere la frequenza con cui sono accessibili e modificati. Questo può essere monitorato usando notifywait -m /some/file/or/directory(da strumenti di inotify ) o alcuni sistemi più complessi come FAM o Gamin .


Descriverei questo "throughput" (un'altra parola potrebbe essere più appropriata, scusate il mio inglese) come la quantità di byte letti / scritti da / in un determinato file durante un secondo (somma per ogni processo che ha avuto accesso al file durante quel secondo). Spero abbia più senso. inotifywait, fam, gamin purtroppo dimmi solo "Il file X è stato modificato / letto" che è interessante ma non quello che sto cercando.
Nicolas Raoul,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.