Memory

為什麼 top CPU 編號與 System Monitor 和 Conky Process Panel 的 CPU 編號不同?

  • February 25, 2020

當我的筆記型電腦在較重的處理過程中變慢了片刻時,我希望看到的數字(用於 CPU 使用)比我在桌面系統監視器上的 conky 程序面板中實際看到的數字更高。

在終端中使用top我看到的數字證明了電腦的瞬間緩慢是合理的。例如,當 Firefox 執行一些使用相對較高 CPU 資源(顯示為“Web 內容”)的外掛時,conky 腳本(就像 Gnome 系統監視器)顯示大約 25% 的 CPU 資源使用,而top顯示大約 71%,這鑑於 PC確實變慢了,這似乎更“真實”。

在此處輸入圖像描述

我怎樣才能在我使用的 conky 中獲得那些“真實”數字?為什麼top與系統監視器不同?

conky 腳本中重要的部分是:

${top name 1} $alignr ${top cpu 1}%
${top name 2} $alignr ${top cpu 2}%
${top name 3} $alignr ${top cpu 3}%

等等

這是因為top將值顯示為單個 CPU 核心conky的百分比,同時顯示總可用 CPU 功率的百分比。如果您執行top並按下I,您應該會看到相同的(幾乎相同,總會有一個競爭條件:top輪詢 CPU 的時間不會完全相同conky)數字。

這記錄在man top(強調我的):

  1. %CPU – CPU 使用率

自上次螢幕更新以來任務佔用的 CPU 時間份額,以佔總 CPU 時間的百分比表示。

在真正的 SMP 環境中,如果一個程序是多執行緒的,並且 top 沒有線上程模式下執行,則可能會報告大於 100% 的數量。您可以使用“H”互動命令切換執行緒模式。

同樣對於多處理器環境,如果 Irix 模式關閉,top 將在 Solaris 模式下執行,其中任務的 cpu 使用率將除以 CPU 總數。您可以使用“I”互動命令切換 Irix/Solaris 模式。

因此,您在範例中看到的top是在 Irix 模式下,並將 %CPU 值報告為單個 CPU 的百分比,同時conky將其報告為所有可用 CPU 的百分比。

而且,為了說明,這是top我的 8 核筆記型電腦在 Irix 模式下執行時的樣子,pigz它可以使用多個執行緒:

PID     USER      PR  NI    VIRT    RES  %CPU  %MEM     TIME+ S COMMAND                                                               
1090509 terdon    20   0  657.6m   4.5m 605.3   0.0   0:33.18 R pigz                                                                  

看看 %CPU 是如何遠高於 100 的?現在,在 Solaris 模式下,同樣的情況顯示:

PID     USER      PR  NI    VIRT    RES  %CPU  %MEM     TIME+ S COMMAND                                                               
1100171 terdon    20   0  657.6m   4.5m  82.0   0.0   1:24.08 S pigz                                                                  

這些數字不完全匹配,因為我執行了兩次命令以獲得輸出,但是您應該能夠看到一般的想法。

引用自:https://unix.stackexchange.com/questions/569618