Cpustat - Linux'ta İşlemleri Çalıştırarak CPU Kullanımını İzler


Cpustat, Go programlama dili kullanılarak yazılmış, Linux için güçlü bir sistem performansı ölçüm programıdır. Kullanım Doygunluğu ve Hatalar (USE) Yöntemini (herhangi bir sistemin performansını analiz etmeye yönelik bir metodoloji) kullanarak CPU kullanımını ve doygunluğunu etkili bir şekilde ortaya çıkarmaya çalışır.

Sistemde yürütülen her işlemin daha yüksek frekanslı örneklerini çıkarır ve daha sonra bu örnekleri daha düşük bir frekansta özetler. Örneğin, her işlemi 200 ms'de ölçebilir ve bu örnekleri, belirli metrikler için minimum/ortalama/maks. değerler dahil olmak üzere her 5 saniyede bir özetleyebilir.

Önerilen Okuma: Linux Performansını İzlemek için 20 Komut Satırı Aracı

Cpustat, verileri iki olası yolla çıkarır: özet aralığının saf metin listesi ve her örneğin renkli kayan kontrol paneli.

Linux'ta Cpustat Nasıl Kurulur

Cpustat'ı kullanabilmeniz için Linux sisteminizde Go (GoLang) kurulu olmalıdır, eğer GoLang kurulum adımlarını takip etmek için aşağıdaki bağlantıya tıklayın. yüklü:

  1. GoLang'ı (Go Programlama Dili) Linux'a yükleyin

Go'yu yükledikten sonra yüklemek için aşağıya go get komutunu yazın, bu komut GOBIN'inize cpustat ikili dosyasını yükleyecektir. değişken:

go get github.com/uber-common/cpustat

Linux'ta Cpustat Nasıl Kullanılır

Kurulum işlemi tamamlandığında, sistemi root olmayan bir kullanıcı olarak kontrol ediyorsanız, sudo komutunu kullanarak cpustat'ı root ayrıcalıklarıyla aşağıdaki gibi çalıştırın, aksi halde gösterilen hatayı alırsınız:

$GOBIN/cpustat
This program uses the netlink taskstats interface, so it must be run as root.

Not: cpustat'ı ve sisteminize yüklediğiniz diğer tüm Go programlarını diğer komutlar gibi çalıştırmak için GOBIN'i ekleyin değişkenini PATH ortam değişkeninizde kullanın. Linux'ta PATH değişkeninin nasıl ayarlanacağını öğrenmek için aşağıdaki bağlantıyı açın.

  1. Linux'ta ` PATH Değişkenlerinizi Kalıcı Olarak Nasıl Ayarlayacağınızı Öğrenin

cpustat bu şekilde çalışır; /proc dizini, her aralık için geçerli işlem kimlikleri listesini almak üzere sorgulanır ve:

  • her PID için /proc/pid/stat'ı okuyun ve ardından önceki örnekten farkı hesaplayın.
  • yeni bir PID olması durumunda /proc/pid/cmdline adresini okuyun.
  • Her PID için görev istatistiklerini almak ve önceki örnekten farkı hesaplamak için bir netlink mesajı gönderin.
  • Genel sistem istatistiklerini almak için /proc/stat'u getirin.

Yine her uyku aralığı, tüm bu istatistiklerin alınmasında harcanan süreyi hesaba katacak şekilde ayarlanır. Ayrıca her numune, her ölçümü numuneler arasında geçen gerçek süreye göre ölçeklendirmek için gereken süreyi de kaydeder. Bu, cpustat'ın kendisindeki gecikmeleri hesaba katmaya çalışır.

Herhangi bir bağımsız değişken olmadan çalıştırıldığında, cpustat varsayılan olarak aşağıdakileri görüntüler: örnekleme aralığı: 200 ms, özet aralığı: 2 saniye (10 örnek), ilk 10 işlemi gösterir, kullanıcı filtresi: tümü, pid filtresi: tümü olarak aşağıdaki ekran görüntüsünde gösterilmiştir:

sudo $GOBIN/cpustat 

Yukarıdaki çıktıya göre alanlardan önce görüntülenen sistem genelindeki özet metriklerin anlamları aşağıda verilmiştir:

  • usr – CPU yüzdesi olarak min/avg/maks kullanıcı modu çalışma süresi.
  • sys – CPU yüzdesi olarak min/ortalama/maks sistem modu çalışma süresi.
  • güzel – CPU yüzdesi olarak min/ortalama/maks kullanıcı modu düşük öncelikli çalışma süresi.
  • boşta – CPU yüzdesi olarak min/ortalama/maks kullanıcı modu çalışma süresi.
  • iowait – disk GÇ'sini bekleyen min/ortalama/maks gecikme süresi.
  • prun – çalıştırılabilir durumdaki minimum/ortalama/maksimum işlem sayısı (yük ortalamasıyla aynı).
  • pblock – disk GÇ'sinde engellenen minimum/ortalama/maksimum işlem sayısı.
  • pstart – bu özet aralığında başlatılan işlemlerin/iş parçacığının sayısı.

Yine yukarıdaki çıktıya göre, belirli bir süreç için farklı sütunlar şu anlama gelir:

  • ad – /proc/pid/stat veya /proc/pid/cmdline'dan ortak işlem adı.
  • pid – süreç kimliği, aynı zamanda "tgid" olarak da anılır.
  • min – /proc/pid/stat'tan ölçülen, pid için kullanıcı+sistem süresinin en düşük örneği. Ölçek CPU'nun yüzdesidir.
  • maks – bu pid için kullanıcı+sistem süresinin en yüksek örneği, ayrıca /proc/pid/stat'tan ölçülür.
  • usr – /proc/pid/stat ile ölçülen, özet dönemi boyunca pid için ortalama kullanıcı süresi.
  • sys – /proc/pid/stat ile ölçülen, özet dönemi boyunca pid için ortalama sistem süresi.
  • iyi – /proc/pid/stat'tan ölçülen, süreç için geçerli "iyi" değeri gösterir. Daha yüksek, “daha güzel” anlamına gelir.
  • runq – netlink aracılığıyla görev istatistikleriyle ölçülen, sürecin ve tüm iş parçacıklarının çalıştırılabilir ancak çalıştırılmayı beklerken geçirdiği süre. Ölçek CPU'nun yüzdesidir.
  • iow – netlink aracılığıyla görev istatistikleriyle ölçülen, sürecin ve disk IO tarafından engellenen tüm iş parçacıklarının harcanan süresi. Ölçek, özet aralığı üzerinden ortalaması alınan bir CPU yüzdesidir.
  • takas – netlink aracılığıyla görev istatistikleriyle ölçülen, sürecin ve tüm iş parçacıklarının değiştirilmeyi beklerken harcadığı süre. Ölçek, özet aralığı boyunca ortalaması alınan bir CPU yüzdesidir.
  • vcx ve icx – netlink aracılığıyla görev istatistiklerinden ölçülen, özet aralığı boyunca sürece ve tüm iş parçacıklarına göre yapılan isteğe bağlı bağlam değişikliklerinin toplam sayısı.
  • rss – /proc/pid/stat'tan getirilen mevcut RSS değeri. Bu işlemin kullandığı bellek miktarıdır.
  • ctime – /proc/pid/stat'tan ölçülen, bu özet aralığında çıkan çocuklar için beklenen kullanıcı+sys CPU süresinin toplamı.

Uzun süren alt süreçlerin genellikle bu ölçümü karıştırabileceğini unutmayın; çünkü zaman yalnızca alt süreç çıktığında raporlanır. Ancak bu, CPU zamanının genellikle birçok alt süreç tarafından tüketildiği sık cron işlerinin ve durum kontrollerinin etkisini ölçmek için kullanışlıdır.

  • üçüncü – /proc/pid/stat'tan ölçülen, özet aralığının sonundaki iş parçacığı sayısı.
  • sam – özet aralığına dahil edilen bu süreç için örnek sayısı. Yakın zamanda başlatılan veya sonlandırılan işlemler, özet aralığından daha az sayıda örnek için görünür durumda olabilir.

Aşağıdaki komut, sistemde çalışan ilk 10 kök kullanıcı işlemini görüntüler:

sudo $GOBIN/cpustat -u root

Çıkışı süslü bir terminal modunda görüntülemek için -t bayrağını aşağıdaki gibi kullanın:

sudo $GOBIN/cpustat -u roo -t

İlk x sayıda işlemi görüntülemek için (varsayılan 10'dur), -n işaretini kullanabilirsiniz; aşağıdaki komut, sistemde çalışan en iyi 20 Linux işlemini gösterir:

sudo $GOBIN/cpustat -n 20 

Ayrıca -cpuprofile seçeneğini kullanarak bir dosyaya CPU profilini aşağıdaki gibi yazabilir ve ardından dosyayı görüntülemek için cat komutunu kullanabilirsiniz:

sudo $GOBIN/cpustat -cpuprofile cpuprof.txt
cat cpuprof.txt

Yardım bilgilerini görüntülemek için -h işaretini aşağıdaki gibi kullanın:

sudo $GOBIN/cpustat -h

Cpustat Github Deposundan ek bilgi bulun: https://github.com/uber-common/cpustat

Bu kadar! Bu yazımızda sizlere Linux için kullanışlı bir sistem performansı ölçüm aracı olan cpustat'ın nasıl kurulacağını ve kullanılacağını gösterdik. Aşağıdaki yorum bölümünü kullanarak düşüncelerinizi bizimle paylaşın.