Process
文件系統操作的 CPU 使用率未顯示在頂部
我在 Ubuntu Linux 終端中執行以下命令(執行
ls
10,000 次)並使用該top
命令監控 CPU 使用率。雖然top
顯示總 CPU 使用率(第 2 行)約為 48%(13.1% 使用者 + 34.9% 核心),但下面的列表並未反映正確的 CPU 使用率。只有 6.5% 的 CPU 與 bash 程序相關聯。注意:我已經關閉了 Irix 模式,因此 6.5% 與第 2 行的比例相同。for i in {1..10000}; do (ls /tmp/ >/dev/null); done
我還嘗試
htop
了未選中“隱藏核心執行緒”選項,但得到了相同的結果。
top
系統的哪個部分正在使用 CPU(核心?),為什麼它對/隱藏htop
?
您正在執行許多極其短暫的程序。您不會在頂部輸出中看到太多它們。
Top 定期測量系統活動(通常每秒一次)。每次刷新時,它都會遍歷程序列表並收集每個程序的統計資訊。根據調度抽籤的運氣,此時可能有零個或一個
ls
程序。如果top
沒有看到ls
程序,則不會顯示一個。即使top
看到一個程序ls
,獲取統計資訊也不是原子的;如果該程序在列舉程序的時間和讀取該程序的統計資訊的時間之間死亡top
,則不會顯示該程序。所以很多時候沒有任何ls
流程可以列出。即使有
ls
程序,該程序也沒有執行多久,因此它在最後一秒佔 CPU 使用率的一部分可以忽略不計。它可能位於列表底部附近。因為 CPU 使用率不是原子測量的,只是一個近似值,所以核心收集的 CPU 總使用率統計資訊並不總是與每個程序收集的使用率統計資訊的總和相匹配。總和將匹配足夠長時間執行的程序,但是當存在短暫的程序時,如本例所示,它們可能會有很大差異。