2016-10-18 15 views
5

Bir Python programında, ana bilgisayardaki tüm disklerin birikmiş okuma/yazma hızlarını almam gerekiyor. Aşağıdaki Linux kabuk komutu aramaya subprocess.check_output() ile yapıyordu:Python'da disk hızı nasıl okunur/yazılır?

$ sudo hdparm -t /dev/sda 

Bu sonucu verir:

/dev/sda: 
Timing buffered disk reads: 1488 MB in 3.00 seconds = 495.55 MB/sec 

sonra 495.55 ayrıştırma yapabilir. Tamam, şimdiye kadar çok iyi.

cihazın zamanlamaları okur gerçekleştirin

:

Ama hdparm adamı sayfasında ı temelde ölçümü yaparken başka hiçbir işlem okuma/aynı anda diske yazma gerektiğini söylüyor -t bayrağı için bu açıklamayı bulundu

karşılaştırma ve karşılaştırma amaçları için. Anlamlı bir sonuç için, bu işlem en az birkaç megabayt boş belleğe sahip başka bir etkin olmayan sistemde (diğer aktif işlemlerde) 2-3 kez tekrarlanmalıdır. Bu, önbelleğe alma işleminden önce arabelleğe önbellek aracılığıyla okuma hızını görüntüler. Bu ölçüm, sürücünün Linux altında, herhangi bir dosya sistemi yükü olmadan, sıralı veri okumalarını ne kadar hızlı tutabileceğinin bir göstergesidir. Doğru ölçümleri sağlamak için, tampon önbelleği BLKFLSBUF ioctl kullanılarak -t işlemi sırasında temizlenir.

soru geçerli:

nasıl ölçümleri yapılırken başka hiçbir işlem erişen diski aynı anda olduğundan emin olabiliriz?

+0

Bir dizi hdparm seçeneğinin min/medyan/avg değerini mi alıyor? –

+2

... yapamaz mısın? Kullanıcı başka süreçler çalıştırıyorsa, onları öldüremezsiniz. Ayrıca: her işletim sisteminin * her zaman * düzenli olarak bir şeyler yapması gereken bazı deamon işlemleri vardır, bu disk erişimi gerektirmese bile ... – Bakuriu

+0

@ M.T: Bu dikişler iyi bir seçenek olabilir. Bunu düşündüm, ama değeri elde etmenin başka bir yolunu umuyordum. – RichArt

cevap

3

https://unix.stackexchange.com/questions/55212/how-can-i-monitor-disk-io'a göre en kullanışlı çözüm, araç sysstat veya iostat (aynı paket) içerir.

Ancak, ciddi olarak, ana makinede sudo izinleriniz olduğu için, popüler sistem izleme araçlarından herhangi birini kullanarak yoğun bir şekilde herhangi bir yoğun görev olup olmadığını kontrol edebilirsiniz. Ölçümleriniz olmadan tüm IO'ları etkili bir şekilde öldüremezsiniz. Daha uzun bir süre boyunca ölçümler size yine de makul sonuçlar vermelidir, çünkü sapmalar sabit arka plan gürültüsüne yaklaşır.

Bunun dışında ne yapay ölçümlere ihtiyacınız var? Donanım yeteneklerini herhangi bir RL bağlamı olmadan test etmek isterseniz, disk'u monte etmeyin ve ikili modda test edin. Gerçek trafik devam ederken yapılan bir ölçüm genellikle, yükleme sürelerinde gerçekten bekleyebileceğiniz şeylere daha yakın sonuçlar verir.

+0

Cevabınız için teşekkür ederiz. 'Sar' ve 'iostats' ile birkaç test yaptıktan sonra, bunun benim aradığım şey olduğunu düşünmüyorum. Ya da en azından hdparm'dan daha iyi değildir, çünkü 'hdparm' çıktı olarak 'sar' veya 'iostats' çıkışından hesaplamak zorunda kalacağım değeri verir. MB/sn doğru değer demek. Ama mümkün olduğu kadar tarafsız olmak istedim. Yapay ölçüme ihtiyaç vardır çünkü daha fazla hesaplama için "teorik" bir temele ihtiyacım var. – RichArt