time
es un comando brillante si desea calcular cuánto tiempo de CPU tarda un comando determinado.
Estoy buscando algo similar que pueda medir la E / S de disco del programa y cualquier niño. Preferiblemente, debe distinguir entre las E / S que se almacenaron en caché (y, por lo tanto, no hicieron que el disco gire) y las E / S que no se almacenaron en caché.
Entonces me gustaría hacer:
iomeassure my_program my_args
y obtener una salida similar 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
He mirado vmstat
, iostat
y sar
, pero ninguno de ellos está mirando a un solo proceso. En cambio, miran todo el sistema.
Lo he mirado iotop
, pero eso solo me da una vista en este instante.
--- editar ---
la respuesta de snap parece cercana.
'Entradas del sistema de archivos:' son las lecturas no almacenadas en caché en bloques de 512 bytes.
'Salidas del sistema de archivos:' son las escrituras almacenadas en caché en bloques de 512 bytes.
Puede forzar el caché vacío con:
sync ; echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null
Probé con:
seq 10000000 > seq
/usr/bin/time -v bash -c 'perl -e "open(G,\">f\"); print G <>;close G; unlink \"f\";" seq'