time
verilen bir komutun ne kadar CPU süresine sahip olduğunu bulmak istiyorsanız mükemmel bir komuttur.
Programın ve herhangi bir çocuğun disk G / Ç'sini ölçebilen benzer bir şey arıyorum. Tercihen önbelleğe alınan (ve böylece diskin dönmesine neden olmayan) G / Ç ile önbelleğe alınmamış G / Ç arasında ayrım yapmalıdır.
Bu yüzden yapmak istiyorum:
iomeassure my_program my_args
ve aşağıdakine benzer çıktılar alın:
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
Ben baktım vmstat
, iostat
ve sar
, ancak bunların hiçbiri tek bir süreç bakıyoruz. Bunun yerine tüm sisteme bakarlar.
Baktım iotop
, ama bu bana bu anı sadece bir bakış sunuyor.
--- Düzenle ---
snap'in cevabı yakın görünüyor.
'Dosya sistemi girişleri:' 512 baytlık bloklarda önbelleğe alınmamış okumalardır.
'Dosya sistemi çıktıları:' 512 baytlık bloklar halinde önbelleğe alınmış yazmadır.
Önbelleği aşağıdakilerle boşaltmaya zorlayabilirsiniz:
sync ; echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null
Şununla test ettim:
seq 10000000 > seq
/usr/bin/time -v bash -c 'perl -e "open(G,\">f\"); print G <>;close G; unlink \"f\";" seq'