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'