En çok benzeyen CPU istatistiklerini kabuktan nasıl alabilirim?


12

Kullanılan CPU'umu (yüzde olarak) doğru bir şekilde okumaya çalışıyorum top. Bu test için çalıştırıyorum komut:

top -n1 | awk '/Cpu\(s\):/ {print $2}'

Bu döndürür:

10.7%us,

Bu da istediğim doğru veri parçası. Ancak, komutu her çalıştırdığımda, sistemime farklı yükler uygulasam da aynı çıktıyı alıyorum (ve bahsetmiyorum bile htopkullanımımın farklı olduğunu söylüyor). Görünüşe göre, her başlattığımda topCPU kullanımım aynı. Sadece birkaç kare sonra bana uygun değerler veriyor.

Bu şekilde topun çıktısını bu şekilde ayrıştırabileceğim gibi görünmüyor, bu yüzden bana kabuktan doğru bir okuma verecek başka güvenilir uygulamalar arıyorum. htopBana çekirdek başına okuma yapabilmeyi gerçekten seviyorum .

Denedim iostatve mpstatancak yanlış ve "değişim yavaş" değerlerini vermek gibi görünüyor.


2
Yapma. Sorulması gereken doğru soru şudur: Kabuğa en çok benzeyen CPU kullanım istatistiklerini nasıl edinebilirim?
Stéphane Gimenez

@ StéphaneGimenez teşekkürler
Sorumumu

Yanıtlar:


12

Bu komut dosyasını ( Arch panolarında bu iş parçacığından ) kullanıyorum:

#!/bin/bash
read cpu a b c previdle rest < /proc/stat
prevtotal=$((a+b+c+previdle))
sleep 0.5
read cpu a b c idle rest < /proc/stat
total=$((a+b+c+idle))
CPU=$((100*( (total-prevtotal) - (idle-previdle) ) / (total-prevtotal) ))

Linux / proc / dizininde harika bilgilere sahiptir - tüm güzellikler için linux.die.net/man/5/proc adresine bakınız . Bunların yalnızca Linux olduğunu unutmayın. Sigar gibi bir kütüphane kullanmadığınız sürece bu bilgiyi almanın gerçekten platformlar arası bir yolu yoktur .
Pat Notz

Fikir iyi, ama bazı detaylar yanlış. Boşta kalma değeri 5. sütundur ve makul bir yüzde elde etmek için iowait sütununu (6. sütun) eklemeniz gerekir. Tam olarak doğru olmak için, tüm "dinlenme" değerlerini de eklemeniz gerekir, ancak bunlar genellikle çok küçüktür.
Peter Eisentraut

"Cpu" sütununu sayıyorsanız, boşta değer beşinci sütundur. Aksi takdirde dördüncü olur.
SunSparc

6

Sar'a da göz atın . Uygulamalar nix'ten nix'e büyük ölçüde değişebilir, ancak belirli anlık görüntülerde size temel sistem istatistiklerini vermelidir. Emin değerler komutu ilk başlatıldı edildiği noktasında ne kadar doğru değilim, ama bunun karşılaştırmasını görmek için etrafında oynayabilir top, iostatvb

Çıktı üstte olduğu gibi sütun tabanlıdır, bu nedenle çıktıları borulara yönlendirebilmeniz awkveya cutsonuçları değiştirebilmeniz gerekir.


Daha önce sarkarışık sonuçlarla denedim . @ Jasonwryan'ın cevabını burada kullanacağım çünkü her iki CPU çekirdeğimle de kullanımı temsil edecek şekilde kolayca değiştirebilirim.
n0pe


0

Bulduğum şey, en azından CentOS 6'da yukarıdaki soruyu soran kişiye benziyor. Sadece tek bir yineleme için toplu modda en üste koşarsam, neredeyse aynı eğilimi, sanki eğilimi ne ile başlamak gibi görünüyor en son görüntülemeyi hatırlar. Topların size doğru yüzdeleri vermek için deltalar elde etmek için en az birkaç rakam biriktirmesi gerekiyor gibi görünüyor. 10'dan fazla yinelemeyi test ettikten sonra, ortaya çıkan ikinci figürün her çalışmada yeterli farklılaşma gösterdiğini buldum. Yani, bu hattı geçmek için yeterince kolay

top -b -n 2 | grep Cpu | tail -1

Ben yük için uptime ve postgres sorguları gibi ps seçkin süreçlerin bir grep filtre ile dahil gibi. Takma adla çok basit bir monitör ifade edilebilir:

alias postgresmon="watch -d 'uptime;top -b -n 2 | grep Cpu | tail -1;ps -ef | grep postgres\: | grep -v idle'"
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.