Bir programın disk G / Ç kullanımını ölçme


12

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, iostatve 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'

Yanıtlar:


9

Hangi işletim sistemini kullandığınızı belirtmediniz.

Linux

time foo(Genellikle) yerleşik bir kabuk kullanmak yerine harici komutu deneyebilirsiniz /usr/bin/time foo. Dosya sistemi giriş ve çıkışlarının sayısı gibi bazı ek bilgiler verir (ancak önbellek isabet veya bayt miktarları hakkında bilgi yoktur). Daha fazla talimat için man timeve bölümüne bakın man getrusage.

Bu özelliğin Linux çekirdek 2.6.22 veya daha yeni bir sürümünü gerektirdiğini unutmayın.

FreeBSD

Kullanın /usr/bin/time -l foo. Giriş ve çıkışların sayısını verir. Daha fazla talimat için man timeve bölümüne bakın man getrusage.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.