為什麼 top
CPU 編號與 System Monitor 和 Conky Process Panel 的 CPU 編號不同?
當我的筆記型電腦在較重的處理過程中變慢了片刻時,我希望看到的數字(用於 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
(強調我的):
- %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
這些數字不完全匹配,因為我執行了兩次命令以獲得輸出,但是您應該能夠看到一般的想法。