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
, iostat
e 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'