Linux'taki sabit disk yükünü nasıl izleyebilirim?


101

Linux üzerindeki sabit disk yükünü izlemek için iyi bir komut satırı yardımcı programı var mı? Bir şey topama sonra disk etkinliği iso cpu kullanımını izleyerek.

Daha spesifik olarak, üzerinde çalışan programların çeşitli bölümlerinde birkaç optimizasyondan sonra bazı (ağır yük) sunucular için, şu anda tıkanıklığın yalnızca diskteki dosyalara giriş yapmasından şüpheleniyorum. Ancak sunucuların ne kadar trafik alabileceğini değerlendirmek çok zor.

İdeal aracım, şu anda “Şu anda disk bant genişliğinin% 35'ini kullanıyorsunuz” yazan bir şey olabilir. Herhangi bir fikir?


1
Mükemmel bir soru, tam olarak aradığım
şeydi

Doğrudan sysfs okumak mümkündür /sys/block/sda/stat. Alan # 1 toplam okuma sayısını verir, alan # 5 toplam yazma sayısıdır, # 9 alan devam eden I / O işlemlerinin sayısıdır. Daha fazla bilgi için kernel.org/doc/Documentation/iostats.txt adresini ziyaret edin .
sastanin

Bu çok iyi bir soru çünkü biz hep Plesk sunucularında bu problemle mücadele ediyoruz. Ancak, eksik olan şey how do you do it with SNMP?. Giriş yapmak ve bir şeyleri kontrol etmek sorun değil, ancak birinin gerçekten geçmiş verilere ihtiyacı var.
Eugene van der Merwe,

Yanıtlar:


83

Bu iostataracı kullanarak oldukça iyi bir önlem alabilirsiniz .

% iostat -dx /dev/sda 5

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.78    11.03    1.19    2.82    72.98   111.07    45.80     0.13   32.78   1.60   0.64

Disk kullanımı son sütunda listelenmiştir. Bu tanımlanır

Cihaza G / Ç isteklerinin gönderildiği CPU süresinin yüzdesi (cihaz için bant genişliği kullanımı). Bu değer% 100'e yakın olduğunda cihaz doygunluğu oluşur.


3
Varsa, bu Debian'da hangi pakette bulunur? apt-cache dumpiostat için bir şey açmadı
hBy2Py

9
@Brian: Bu sysstat paketinde (her neyse yum aracılığıyla ...)
Joe,

Bunu RHEL 6.5'te bulamadım. Bu RHEL için uygun mu?
Hazok

Bu gecikmeye devam etmek zorunda kalmadan çalışabilir mi? Veri almak için tek bir örnek çalıştırmayı denemek, muhtemelen örnek alamayacağınız gibi aynı sayıyı alır ???
Wilf,

@Hazok RHEL 6.5'teki sysstat RPM'nin bir parçasıdır.
TheGeneral

81

iotop , her bir işlemin ne kadar GÇ kullandığını gösteren bir üst versiyonudur. Standart ubuntu depolarında; RHEL'de mi yoksa Fedora'da mı bilmiyorum ama öyle olmalı.

görüntü tanımını buraya girin

İotop'u desteklemeyen daha yaşlı çekirdekler için (örneğin CentOS 5.x veya RHEL 5.x), bunun yerine topio kullanın (burada belgelenmiştir: http://yong321.freeshell.org/freeware/pio.html#linux . io istatistikleri için proc // io ve iotop ile aynı işlevselliği sağlar.Daha fazla ayrıntı için bağlantıya bakın.


1
Gerçekten de, Ubuntu'da varsayılan olarak kurulu değildir, bu nedenle bir sorun olabilir: sudo apt-get bunu almak için iotop'u kurun
Moshe 15

1
iotop, maalesef RedHat el4 ve el5’i ekarte eden 2.6.20’den daha yüksek bir çekirdeğe ihtiyaç duyuyor.
Dave Cheney

2
RedHat 5.4'ten itibaren, iotop işini yapmak için gereken bitler desteklendi. Keyfini çıkarın!
Dave Cheney

Fedora'da :).
jamie

13

Yorumlarda sastanin tarafından önerildiği gibi, /sys/block/sda/statveya içinde verilen değerleri doğrudan işleme koyabilirsiniz /proc/diskstats. Bu, bahsedilen diğer araçlardan hiçbiri mevcut olmadığında ve bunları kolayca kuramadığınızda faydalı olabilir.

Örneğin (IIUC) böyle bir şey (bash olarak) saniyede okuma sayısını vermelidir:

OLD=`awk '{print $1}' /sys/block/sda/stat` # First field is number of read I/Os processed
DT=1
for ii in `seq 1 10`
do
    sleep $DT
    NEW=`awk '{print $1}' /sys/block/sda/stat`
    echo $((($NEW-$OLD)/$DT))
    OLD=$NEW
done

Dokümantasyon için https://www.kernel.org/doc/Documentation/iostats.txt ve https://www.kernel.org/doc/Documentation/block/stat.txt adresine bakın .


7

Sen de bir göz atmalısınız tepesinde tek bir yerde, iotop / üst / iftop gücünü birleştiren, ve sisteminizde kritik parçalarını vurgular.


5

Nmon aracına bir göz atmanızı tavsiye ederim. Bir dizi sistem parametresine canlı yük göstermenin yanı sıra daha sonraki incelemeler için bir dosyaya veri kaydetmeyi gösterecektir. Bu mevcut ücretsiz bir araçtır burada :


5

toplam bant genişliğinizin ne olduğunu bulmak için, cihazın okuma performansını test hdparm -T /dev/sdaetmek için arabellek önbelleği (fileio) performansını hdparm -t /dev/sdatest etmek için kullanabileceğinizi

örnekler: dizüstü bilgisayarım SATA diskinden 82 MB / sn ve önbellekten 2 GB / sn alıyor. Masaüstüm önbellekten 12 GB / sn, HW RAID dizisinden 500 MB / sn alıyor. Bu son numaraların sunucu sınıfı donanımda iki kat olabileceğinden şüpheleniyorum.

readahead'i 256'dan yükseğe ayarla, 4096 benim için en iyisi

for i in 128 256 512 1024 2048 4096 8192 16384 32768  
do  
hdparm --setra $i  
  for j in 1 2 4 8 16 32  
  do  
  time dd if=/dev/sda of=/dev/null bs="$j"k  count=<fixthis> 1GB / blocksize  
  done  
done  

farklı blok boyutlarında ve farklı okuma kafalarında 1GB okuma kez


SF'ye hoş geldiniz. Dizelerinizin arkasına tırnak işaretleri koyarak veya paragraf girintileri koyarak kodunuzu vurgulayarak kullanabilirsiniz.
Şubat'ta

İki şey - 1) --setraşimdi -a, ve 2), hdparm -{T,t}komutlar sadece disk okumalarını veriyor strace, buna göre tahribatsız. (İnternette tavsiye hakkında standart feragatname geçerlidir)
i336_

4

Sabit disk yükünü göstermek için standart bir araçtır iostat.

Diskinizde ne kadar bant genişliği olduğunu bilmediğiniz için disk disk genişliğinin% kaçını kullandığınızı size söylemez. Her durumda, diskinizde yalnızca bitişik verilerin büyük transferleri için üreticinin alıntı şekli vardır.


3

Bence RRDtool burada istediğinizi yapmalı , sistem verilerini boşaltmak için bir arka plan programı kullanıyor ve sonra istediğiniz şekilde işlemenizi sağlıyor. Genellikle sistem yükünü ölçmek için grafikler vb. Üretmek için kullandım.

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.