1,5 MB / sn disk yazma gösteren iotop, ancak tüm programlarda 0,00 B / sn


18

iotopÇıktıyı anlamıyorum : ~ 1.5 MB / s disk yazma (sağ üstte) gösterir, ancak tüm programlarda 0.00 B / s bulunur. Neden?

resim açıklamasını buraya girin

Ben dosyaların birkaç milyonlarca bir klasörün içeriğini silme gibi görüntü alındı kullanarak perl -e 'for(<*>){((stat)[9]<(unlink))}' Kubuntu 14.04.3 LTS x64 üzerinde,.

iotopkullanılarak başlatıldı sudo iotop.

Yanıtlar:


22

İotop tarafından gösterilen bilgiler, bireysel süreçler ve bir bütün olarak sistem için aynı şekilde toplanmaz. “Gerçek” küresel rakamlar süreç başına rakamların toplamı değildir (“toplam” budur).

Tüm bilgiler proc dosya sisteminden toplanır .

  • Her işlem için iotop , ve ve değerlerinden gelen verileri okur . Bu geçirilen bit sayısını ifade etmektedir ve sistem çağrıları dahil (örneğin, varyantları , , , , vs.)./proc/PID/iorcharwcharreadwritereadvwritevrecvsend
  • Global “gerçek” değerler /proc/vmstat, özellikle pgpginve pgpgoutdeğerlerinden okunur . Bunlar, çekirdek ve donanım arasında değiş tokuş edilen verileri ölçer (daha kesin olarak, bu, çekirdekteki blok aygıt katmanı tarafından karıştırılan verilerdir).

İşlem başına verilerin ve blok cihazı katmanı verilerinin farklı olmasının birçok nedeni vardır. Özellikle:

  • Önbellekleme ve arabelleğe alma, bir katmanda gerçekleşen G / Ç'nin diğer katmanda aynı anda veya aynı sayıda gerçekleşmeyebileceği anlamına gelir. Örneğin, önbellekten okunan veriler, ona erişen işlemden bir okuma olarak hesaplanır, ancak donanımdan karşılık gelen bir okuma yoktur (daha önce gerçekleşmiş, muhtemelen başka bir işlem adına).
  • Proses seviyesi verileri, borular, soketler ve altta yatan bir diski veya başka bir blok cihazı içermeyen diğer giriş / çıkışlarla değiştirilen verileri içerir.
  • İşlem düzeyi verileri meta verileri değil, yalnızca dosya içeriğini dikkate alır.

Bu son fark burada ne gördüğünüzü açıklıyor. Dosyaları kaldırmak yalnızca verileri değil meta verileri etkiler, dolayısıyla işlem hiçbir şey yazmaz. Silinecek dosyaları listelemek dizin içeriğini okumak olabilir, ancak fark edilmeden kaydırılabilecek kadar küçüktür.

Linux'un dosya meta veri güncellemelerini izlemek için herhangi bir yol sunduğunu düşünmüyorum. Dosya sistemi başına G / Ç'yi /sys/fsbazı dosya sistemleri altındaki girişler üzerinden izleyebilirsiniz . Meta veri G / Ç'sini belirli işlemlere karşı hesaplayabileceğinizi sanmıyorum, birden çok işlem aynı meta verilerin okunmasına veya değiştirilmesine neden olabileceğinden genel durumda yapılması çok karmaşık olacaktır.


1
Oldukça güzel bir cevap, teşekkür ederim. Çıktının gelişimini takip etmenin daha güvenilir bir yolunu önerir misiniz?
Rui F Ribeiro

1
@RuiFRibeiro Şu rm -randa hangi dosyanın işlendiğini izleyebilirsiniz strace, ancak her dizindeki geçiş sırası biraz tahmin edilemez olduğundan, tamamlanma yüzdesi hakkında çok yararlı bir tahmin vermez. Bu dosya sisteminde yalnızca bir büyük işlem varsa ve çok fazla sabit bağlantı df -iyoksa , izlemek size kaç dosyanın işlendiğini söyler.
Gilles 'SO- kötü olmayı bırak
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.