Misurazione dell'utilizzo dell'I / O del disco di un programma


12

time è un comando brillante se vuoi capire quanto tempo CPU impiega un dato comando.

Sto cercando qualcosa di simile che possa misurare l'I / O del disco del programma e di tutti i bambini. Preferibilmente dovrebbe distinguere tra I / O che è stato memorizzato nella cache (e quindi non ha fatto girare il disco) e I / O che non è stato memorizzato nella cache.

Quindi vorrei fare:

iomeassure my_program my_args

e ottieni un output simile a:

Cached read: 10233303 Bytes
Cached write: 33303 Bytes  # This was probably a tmp file that was erased before making it to the disk
Non-cached read: 200002020 Bytes
Non-cached write: 202020 Bytes

Ho guardato vmstat, iostate sar, ma nessuno di questi sono alla ricerca in un unico processo. Invece guardano l'intero sistema.

Ho guardato iotop, ma questo mi dà solo una visione in questo istante.

--- modificare ---

la risposta di Snap sembra vicina.

'File system input:' è la lettura non memorizzata nella cache in blocchi da 512 byte.

"File system output:" sono le scritture memorizzate nella cache in blocchi da 512 byte.

Puoi forzare lo svuotamento della cache con:

sync ; echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null

Ho provato con:

 seq 10000000 > seq
 /usr/bin/time -v bash -c 'perl -e "open(G,\">f\"); print G <>;close G; unlink \"f\";" seq'

Risposte:


9

Non hai specificato quale sistema operativo usi.

Linux

Invece di usare time fooquale (di solito) è una shell integrata, puoi provare il comando esterno /usr/bin/time foo. Fornisce alcune informazioni aggiuntive come il numero di input e output del file system (ma nessuna informazione sugli accessi alla cache o sulla quantità di byte). Vedi man timee man getrusageper ulteriori istruzioni.

Nota che questa funzione richiede il kernel Linux versione 2.6.22 o successiva.

FreeBSD

Usa /usr/bin/time -l foo. Fornisce il numero di ingressi e uscite. Vedi man timee man getrusageper ulteriori istruzioni.

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.