time
adalah perintah yang brilian jika Anda ingin mengetahui berapa banyak waktu CPU yang diberikan perintah.
Saya mencari sesuatu yang serupa yang dapat mengukur I / O disk program dan setiap anak. Lebih disukai itu harus membedakan antara I / O yang di-cache (dan dengan demikian tidak menyebabkan disk berputar) dan I / O yang tidak di-cache.
Jadi saya ingin melakukan:
iomeassure my_program my_args
dan dapatkan output yang mirip dengan:
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
Saya telah melihat vmstat
, iostat
dan sar
, namun tidak satupun dari ini melihat sebuah proses tunggal. Sebaliknya mereka melihat keseluruhan sistem.
Saya telah melihat iotop
, tetapi itu hanya memberi saya pandangan instan ini.
--- sunting ---
jawaban snap sepertinya dekat.
'Input sistem file:' adalah non-cache yang dibaca dalam blok 512-byte.
'Keluaran sistem file:' adalah penulisan cache dalam blok 512-byte.
Anda dapat memaksa cache kosong dengan:
sync ; echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null
Saya diuji dengan:
seq 10000000 > seq
/usr/bin/time -v bash -c 'perl -e "open(G,\">f\"); print G <>;close G; unlink \"f\";" seq'