Come posso monitorare l'I / O del disco in una directory particolare?


10

Ho alcuni processi con un nome noto che tutti scrivono su file in una singola directory. Vorrei registrare il numero di letture e scritture di blocchi su disco per un periodo ( non solo l'accesso ai file) per verificare se una modifica dei parametri riduce significativamente la quantità di I / O. Attualmente sto usando iostat -d -p, ma questo è limitato all'intera partizione.



1
Questo è diverso da quelle domande, perché non sono interessato ai file stessi ma piuttosto alla quantità di I / O.
10

Risposte:


10

Mi rendo conto che sembrerà sia semplicistico che assurdo, ma se hai il controllo delle app in questione (forse in un ambiente di test) potresti montare SOLO quella directory su una sua partizione, quindi iostat, ecc. a riguardo, e nient'altro in quel punto.

Se sono coinvolte unità fisiche, è possibile falsificarle con un montaggio loopback à la

dd if=/dev/zero of=/bigdisk/LOOPFILE bs=1024m count=1024m # 1gb loopback file
mke2fs -j /bigdisk/LOOPFILE
mkdir /tmpcopy
mount -o loop /tmpcopy /bigdisk/LOOPFILE
cp -r -p $SPECIALDIR2MONITOR /tmpcopy
umount /tmpcopy
mount -o loop $SPECIALDIR2MONITOR  /bigdisk/LOOPFILE,

Ciò non eliminerebbe completamente tutti gli I / O su disco concorrenti, ma sono abbastanza sicuro che iostatl'output sarebbe più specifico per le tue esigenze.


3

Non penso che ci sia un modo diretto. Un modo per ottenere i dati desiderati sarebbe quello di accedere all'albero delle directory attraverso un filesystem virtuale che registra gli accessi. Loggedfs è uno di questi filesystem, anche se non so se sia in grado di mostrare tutti i dati che ti interessano.

mkdir /tmp/replica
loggedfs /path/to/directory /tmp/replica
mycommand --root=/tmp/replica
fusermount -u /tmp/replica

2

Puoi usare inotifywait -m DIRNAMEda inotify-tools .


-dnon esiste in inotifywait 3.13. Intendi -m?
10

@ l0b0: oh, utilizzo 3.14 dal repository git. scusate. Ma la manpage afferma che è lo stesso -mcon l'eccezione di essere eseguito in background e richiedere un file di output.
Tobias Kienzler,

-rpotrebbe anche essere utile
Tobias Kienzler il

1
Testato. Mi dispiace per l'incomprensione, ma non sono interessato a quali file (o anche quanti file) sono stati raggiunti, ma piuttosto alla quantità di I / O.
10

2
Nota, questo è specifico di Linux. I BSD hanno chiamate di sistema kqueue e pnotify, ma non so se fanno esattamente ciò che l'autore richiede.
Shawn J. Goff,
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.