“Du” programı daha az agresif hale getirilebilir mi?


21

Birkaç dualt dizinin özetini yapan, en kötü suçluları seçen ve potansiyel sorunları tespit etmek için hızla yükselen şeyler olup olmadığını bulmak için çıktıyı kullanan düzenli bir işimiz var. Bunları diffkarşılaştırmak için anlık görüntülere karşı kullanıyoruz .

Her biri 10'ar tane dosya (veya daha fazla) içerebilen birkaç (birkaç yüz) alt dizine sahip bir üst seviye dizini vardır.

du -sBu bağlamdaki bir " " çok agresif olabilir, bu da sunucumuzun önbelleğini kurtarmasına ve ardından çok istenmeyen bir yan etkisi olan büyük IO yükselmelerine neden olabilir.

İstenmeyen yan etkiler olmadan aynı verileri elde etmek için hangi strateji kullanılabilir?


9
Almanya'da "Sie" ile değiştirebilirsiniz.
Federico Poloni

Yanıtlar:


28

Bir göz atın ionice. Kimden man ionice:

Bu program, bir program için io zamanlama sınıfını ve önceliğini belirler veya alır. Herhangi bir argüman veya sadece -p belirtilmezse, ionice o zamanlama sınıfını ve bu işlem için önceliği sorgulayacaktır.

duKullanılabilir olan en düşük öncelik olan "boşta" G / Ç sınıfı ile çalıştırmak için şöyle bir şey yapabilirsiniz:

ionice -c 3 du -s

Bu du, diğer 'G / Ç işlemine müdahale etmekten vazgeçmelidir . Ayrıca CPU önceliğini düşürmek için programı yenileştirmeyi de düşünebilirsiniz.

renice -n 19 "$duPid"

Her ikisini de başlangıç ​​zamanında yapabilirsiniz:

nice -n 19 ionice -c 3 du

5
Mevcut bir programı iptal etmek için reniceyerine aramanız gerekir nice. Başlamak için duionice ve Nice ile, her iki program zincir edebilirsiniz: nice -n19 ionice -c3 du.
jofel

nicekendisi de G / Ç zamanlayıcı önceliğini etkiler, sadece CPU'yu değil.
Ürdün

1
@jordanm Bildiğim kadarıyla (en azından Linux'ta), niceyalnızca CPU güzelliğini etkiler (dolaylı olarak G / Ç'yi etkileyebilir, ancak G / Ç zamanlayıcı önceliğini etkilememelidir). Bu davranışı nerede görüyorsunuz? Bir yerde mi belgeleniyor?
Chris Down,


@ jordanm Hm, o kitabı aldım. Ben hızlı bir kayma yaptım ve sadece sayfa 263 hakkında detaylı bilgi veren buldum ve sadece niceCPU temel zaman kuantumları hakkında konuşuyor. Kitapta nerede olduğu hakkında bir fikrin var mı? Ben devletler o, bu sözü olmadığı bir yetkili kaynak okumak için ilgi duyarım man nice, man 2 nice, man 2 setpriority, info niceveya info 'nice invocation'kadarıyla ben ayrıntılı yeraldığını içine bu seferde bazı çünkü nasıl garip olan söyleyebilirim niceçağrı eserleri ve ne yapar.
Chris Down

4

Tek bir dizinde tonlarca dosyanız varsa, bu, G / Ç yükselmelerinden sorumlu olabilir, çünkü çoğu dosya sistemi büyük dosya ağaçlarını tek bir dizinde iyi işlemez. Daha fazla alt dizine bölmek orada yardımcı olabilir. Tek bir dizinde 10 binden fazla dosyanız varsa ve bu sorunlara neden oluyorsa, muhtemelen ayırmalısınız.

Disk kullanımını izlemeye gelince, ilk önce bir bakabilirdiniz df, eğer kullanım değeri hızlı bir şekilde yükselmediyse, alt dizinler de olmadı ve dutamamen atlayabilirsiniz .

Başka bir alternatif, eğer dosya sisteminiz destekliyorsa, sürekli kullanım kaydını tutan bir disk kota sistemi olabilir.


Sistem bir yapı çiftliğidir, bu nedenle bir dizindeki dosya sayısı oluşturduğumuz bileşenlerin gerçekte gerisindedir. dftam işe yaramaz - sorun şu ki temizleme komut dosyalarımız var, bu nedenle değişiklik göremeyebiliriz, ancak agresif bir şekilde disk alanını kapmak için otomatik bir iş için erken uyarıyı kaçırdık. Genel disk kullanımını izlemek için zabbix'i kullanıyoruz, ancak işlerin biraz daha çılgınca gittiği dizinleri bilmek çok önemli.
Danny Staple,

0

Ek olarak ionice, disk erişimini daha verimli hale getirmeyi deneyebilirsiniz. Bu çalıştırılarak denenebilir

find /du/root -printf ""
find /du/root -perm 777 -printf ""

ilk (belki de yoluyla ionice). Çok fazla dosya varsa işe yaramaz. Ne kadar çok olduğu, boş RAM miktarına bağlıdır.

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.