time
to genialne polecenie, jeśli chcesz dowiedzieć się, ile czasu zajmuje procesor.
Szukam czegoś podobnego, co może zmierzyć dyskowe we / wy programu i dowolnych dzieci. Najlepiej, aby rozróżniał między operacjami we / wy, które były buforowane (a tym samym nie powodowały wirowania dysku), a operacjami we / wy, które nie były buforowane.
Więc chciałbym zrobić:
iomeassure my_program my_args
i uzyskaj dane wyjściowe podobne do:
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
Patrzyłem na vmstat
, iostat
i sar
, ale żaden z nich nie patrzy na jeden proces. Zamiast tego patrzą na cały system.
Patrzyłem na to iotop
, ale to daje mi tylko widok w tej chwili.
--- edytować ---
odpowiedź snapa wydaje się bliska.
„Wejścia systemu plików:” to niebuforowane odczyty w 512-bajtowych blokach.
„Wyjścia systemu plików:” to zapisy w pamięci podręcznej w blokach 512-bajtowych.
Możesz wymusić opróżnienie pamięci podręcznej za pomocą:
sync ; echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null
Testowałem z:
seq 10000000 > seq
/usr/bin/time -v bash -c 'perl -e "open(G,\">f\"); print G <>;close G; unlink \"f\";" seq'