Soru CPU I / O'nun Linux üzerinde değerlendirilmesi


Yapmak top io bekle kontrol etmek için, bu rakamları alırım:

Cpu(s):  6.7%us,  1.4%sy,  1.2%ni, 85.5%id,  5.0%wa,  0.0%hi,  0.3%si,  0.0%st

Bu rakamlara bakıldığında (% us ~ =% wa) şu anlama gelir:

  1. çalışmaktan çok daha fazla CPU süreci var mı? (=> kötü)
  2. Çalışma süreçleri icra planlarının% 5,0'unu bekliyor? (=> bu durumda tamam)
  3. başka bir şey

4
2017-11-19 16:27


Menşei


yakın kopya serverfault.com/questions/396443/diagnosing-high-cpu-waiting - Andrew Domaszek


Cevaplar:


Bu rakamları değerlendirirken dikkatli olmanız gerekir.

  1. IOWait ilişkilidir, ancak disk etkinliği ile mutlaka doğrusal olarak ilişkili değildir.
  2. Kullandığınız CPU'ların sayısı yüzdesini etkiler.
  3. Yüksek bir IOWait (uygulamanıza bağlı olarak) zorunlu olarak sizin için bir sorun olduğunu belirtin. Alternatif olarak küçük bir IOWait sizin için bir soruna dönüşebilir. Temel olarak hangi görevin beklediğine bağlı.

Bu bağlamda IOWait, belirli bir süre boyunca bir CPU'nun (veya tüm CPUS'ın) boşta harcadığı zamanın ölçüsüdür, çünkü tüm çalıştırılabilir görevler bir IO işleminin gerçekleştirilmesini beklemektedir.

Örneğinizde, 20 CPU'unuz varsa, bir diski gerçekten çekiçle vururken, bu görev (gerçekte) zamanının% 100'ünü IOWait'te harcıyor, daha sonra bu görevin uyguladığı CPU, zamanının neredeyse% 100'ünü geçiriyor. IOWait. Ancak, diğer 19 CPU daha etkin bir şekilde boşsa ve bu diski kullanmıyorsa,% 0 IOWait rapor eder. Bu, disk kullanımınıza bakacak olursanız,% 100'lük bir orana sahip olabilirse, ortalama% 5'luk bir IOWait yüzdesiyle sonuçlanır. Diskte bekleyen uygulama sizin için çok önemliyse - bu% 5 biraz yanıltıcıdır çünkü darboğazdaki görev,% 5 yavaş gitmekten çok daha yüksek performans sorunları görmektedir.

çalışmaktan çok daha fazla CPU süreci var mı? (=> kötü)

Muhtemelen, çoğu zaman CPU'ların görevlerini ve görevlerini çalıştırdığını hatırlayın. İki ayrı görevde aynı diski sorgulamak için iki ayrı görev meşgulse, bu her iki CPU'yu% 100 IOWait'e (ve 20 CPU örneğinde% 10 genel ortalama IOWait'e) koyar.

Temel olarak, özellikle de aynı diskten IO'yu isteyen çok fazla göreviniz varsa, artı disk% 100 kullanılır (bkz. iostat -mtx) o zaman bu kötü.

Çalışma süreçleri icra planlarının% 5,0'unu bekliyor? (=> bu durumda tamam)

Hayır. Çalışma süreçleri neredeyse tam olarak IO için tam zamanı bekliyor. Sadece ortalama rapor durumu (“diğer CPU'lar meşgul değil”), CPU'nun çalışması için pek çok görevi olduğu, pek çoğunun IO yapması gerekmediği yüzdeyi ya da gerçeği karıştırıyor.

Genel bir kural olarak, çok CPU'lu bir sistemde, 100'e bölünmüş CPU'ların sayısına eşit olan bir IOWait yüzdesi muhtemelen araştırılacak bir şeydir.

başka bir şey

Yukarıyı görmek. Ancak, çok ağır yazma yapan uygulamaların daraldığını unutmayın (writeback'i kullanmayı bırakın, doğrudan diske yazmaya başlayın). Bu, aynı görev için aynı CPU yazmadaki diğer görevlerin yerine getirmeyeceği için, bu görevlerin yüksek IOWait üretmesine neden olur. Böylece istisnalar var.

Ayrıca 2 görev çalıştırmaya adanmış 1 CPU'nuz varsa, biri ağır bir IO okuma / yazıcısı ve diğeri ağır bir CPU kullanıcısıdır, daha sonra CPU bu durumda% 50 IOWait bildirecektir, eğer bunun gibi 10 göreviniz varsa % 10 IOWait (ve korkunç bir yük) olurdu, bu yüzden sayı aslında bir problemden çok daha düşük bir düzeyde rapor edilebilir.

Bence gerçekten bir göz atmalısın. iostat -mtx bazı disk kullanım metrikleri almak için, ve pidstat -d İşlem başına bazı ölçümler almak için, o diskleri bu şekilde bölen uygulamaların bir soruna neden olup olmayacağını veya bu disklerin bir soruna neden olması muhtemel diğer potansiyel uygulamaların olup olmadığını düşünün.

CPU metrikleri gerçekten de temel sorunlara göstergeler olarak hareket ederler, genel olarak nerede olduklarını anlarlar. çok Genel iyi bir şeydir.


14
2017-11-19 18:04





Bekleme durumu, aksi halde çalıştırılabilir olan bir işlemin IO için beklemesinin durmasıdır. Genellikle disk kaynakları için bir çekişme işareti.

Bazı süreçlerinizin olabildiğince hızlı koşmadığı anlamına geliyor, ama bu oldukça normal.


0
2017-11-19 16:37





Bu, CPU zamanının% 5'inin disk IO'nun bitmesini beklemek için harcanması ve% 6,7 CPU zamanının gerçekte kullanıcı işlemi için gereken işlemleri yapmak için harcanması anlamına gelir.

Vmstat çıkışını kontrol edin; Örneğin. vmstat 1 30 Süreç sütunda olduğu sürece b yığılmıyorsun iyisin. sütun b disk IO işlemi sona erene kadar bloke edilen, kesilemeyen durumdaki (D durumu) işlem sayısını gösterir.

Bu yüzden sorularınızı cevaplayın

  1. çalışmaktan çok daha fazla CPU süreci var mı? (=> kötü)

Hiçbir zaman kabaca aynı değil ama bu mutlaka bir problem değil. Süreçlerin D durumunda kazmaya başladığı sürece sorun yok, iyisin. İyileştirmeler, disk okumalarının sayısının azaltılması için pagecache (diskcache) için daha fazla alana sahip olmak ve daha çok bellek önbelleğinden okumak için disk zamanlayıcıyı ayarlayarak daha fazla RAM eklemeyi içerebilir.

  1. Çalışma süreçleri icra planlarının% 5,0'unu bekliyor? (=> bu durumda tamam)

Bu, kullanıcı süreçlerini ele almak için harcanan CPU zamanı kısmıdır; Burada özellikle bu kadar boşta kaygılanacak bir şey yok. 85.5%id CPU zamanı


0
2017-11-19 16:37



Endişelerim CPU aşırı yükünde değil, işlem gecikmesinde daha fazla. Yani eğer doğru anladıysam, neredeyse işlem yüzdesinin "işlenmekten" daha önce bekletildiği anlamına gelir. Bu nedenle, io metriklerini optimize edersem, gecikmeleri (web sunucusu) önemli ölçüde azaltacağım. - Toto
disk, olduğu kadar hızlıdır; Daha hızlı koşamazsın; Yapabilecekleriniz, daha fazla önbellek kullanmak için sistemi ayarlamak, kullanım düzeninize bağlı olarak okumaları veya yazma işlemlerini tercih etmek için zamanlayıcıyı ayarlamalıdır. Bir noktada% 5 beklemek gerçekten endişelenecek bir şey değildir. Ya da belki de yeniden yorumlamam gerekiyorsa, bekleme süresi% 0 olan oldukça yüklü bir web sunucusuna sahip olmak zor olacaktır. - Hrvoje Špoljar