CPU zamanı ve CPU kullanımı nasıl aynıdır?


23

CPU süresi için Wikipedia sayfasında yazıyor

CPU zamanı saat tik veya saniye cinsinden ölçülür. Genellikle, CPU süresini, CPU kullanımı adı verilen CPU kapasitesinin yüzdesi olarak ölçmek faydalı olur.

Bir zaman süresinin yüzde olarak nasıl değiştirilebileceğini anlamıyorum. Ben baktığınızda top, yok %CPUsöyle MATLABbenim çekirdeklerinin 2.17 kullanıyor?

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
18118 jasl      20   0 9248400 261528  78676 S 217.2  0.1   8:14.75 MATLAB      

Soru

CPU kullanımının ne olduğunu daha iyi anlamak için CPU kullanımını kendim nasıl hesaplarım?


Çekirdek bazında daha fazla ayrıntı düzeyi toplamak için 'üst' açıkken '1'e basın.
Peter,

Bu bir numara ( 1).
Michael Hampton

Linux size her bir İşlemcinin bu Komut Satırı isteğiyle ne kadar meşgul olduğunu göstereyim. mpstat -P ALL 5 3 çok işlemcili durum için 5 saniye 3 aralık girer. Ortalama CPU Meşgul% değerini almak için, çekirdek sayınız tarafından bildirilen% CPU'yu bölün. iostat -xm 5 3, size kaç tane çekirdek / işlemci kullanabileceğinizi söyleyecektir.
Wilson Hauck

Yanıtlar:


32

CPU zamanı ayrık zaman dilimlerinde ayrılır (tıklamalar). Belli bir zaman dilimi için, CPU meşgul, diğer zamanlarda ise (boşta işlem tarafından temsil edilir). Aşağıdaki resimde CPU, 10 CPU diliminden 6'sı için meşgul . 6/10 = .60 = meşgul zamanın% 60'ı (ve bu nedenle boşta kalma süresi% 40 olacaktır).

görüntü tanımını buraya girin

Bir yüzdesi "bir sayı ya da 100 parçaya bölünmüş bir şey parçalarının belirli bir sayı olarak ifade edilir oranı" olarak tanımlanır. Bu durumda, bu kısımlar ayrı zaman dilimleridir ve bir şey meşgul zaman dilimleri ile boş zaman dilimleridir - meşgul ile boş zaman dilimleri arasındaki oran.

CPU'lar GHz'de çalıştığından (saniyede milyarlarca döngü). İşletim sistemi, o zaman kene denilen daha küçük birimler halinde dilimler. Gerçekten saniyenin 1 / 10'u değiller. Pencerelerde kene hızı saniyede 10 milyon kene ve Linux'ta ise sysconf(_SC_CLK_TCK)(genellikle saniyede 100 kene).

Gibi bir şey top, meşgul CPU döngüleri daha sonra kullanıcı ve sistem zamanı gibi şeylerin yüzdelerine ayrılır. In topLinux ve Windows perfmon, genellikle toplam% 100 * the_number_of_cpu_cores çünkü olduğunu% 100'ün üzerinde giden bir ekran, alacak.

Bir işletim sisteminde, bu değerli dilimleri işlemlere ayırmak zamanlayıcının işidir, yani zamanlayıcı bunu bildiren şeydir.


1
Zaman dilimleri, saniyenin milyarda biri cinsinden ölçülmez. O kadar kısa değiller. 0.1 ms ile 10 ms arasında bir yerde daha muhtemeldir. API'lerde zaman değerlerinin çözünürlüğü, zamanlayıcı kesintilerinin oranı ile aynı değildir. Linux'taki bazı API çağrıları nanosaniye cinsinden belirtilen zamanlara sahiptir, ancak bu sıklıkta zamanlayıcı kesintilerini istemezsiniz. Saniyede bir milyon kesinti varsa, tüm CPU zamanını bağlamsal anahtarlara harcarsınız.
kasperd

2
1000 kene mi demek istiyorsun? Tüm Linux sistemlerim 1000 tik (EL5 ve EL6) veya 1000 tik + tickless (EL7). Yoksa başka bir şey mi demek istiyorsun?
Michael Hampton

1
Man sayfası: “İlgili değişken eski.” Diyor. Buna güvenebileceğini sanmıyorum. Ben ... bu ay /boot/config-2.6.32-whatever içinde çekirdek konfigürasyonunu kontrol
Michael Hampton

1
Aha, hayır, aynı rapor edilmedi. CLK_TCK, kullanıcı alanı için açıkça ölçeklendirilmiş bir değerdir ve görünüşe göre çekirdeğin gerçekte kaç tane kullandığına bakılmaksızın her zaman 100'dür. SO ( 1 , 2 ) hakkında bazı açıklamalar bulundu
Michael Hampton

2
Ayrıca, Windows'un bu API çağrısının Windows zamanlayıcı kesme sıklığı ile aynı olmadığını ve bu nedenle gerçekten karşılaştırılabilir olmadığını "işaretlediğini" düşünüyorum .
Michael Hampton

15

CPU zamanı, işlemin CPU kullandığı zamandır - onu bir yüzdeye dönüştürmek, geçen gerçek zaman miktarına bölünerek yapılır.

Öyleyse, 2 saniyelik bir süre boyunca 1 saniyelik CPU süresini kullanan bir işlem varsa, bir CPU'nun% 50'sini kullanıyor.

MATLAB işleminizde% 217, son örnekleme süresi boyunca saniyede 2.17 saniye CPU zamanı kullanıldığını gösterir - etkili bir şekilde, 2 CPU çekirdeğini tekelleştirerek ve üçte birinden birazını alarak.


5
Veya 8 işlemcinin% 25'ini ve dokuzuncu bölümün bir bölümünü kullanıyor olabilir.
Bob Jarvis - Monica
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.