Linux 中的 top 命令
Nilesh Katuwal
2023年1月30日
Linux 中的 top
命令旨在幫助使用者確定哪些程序處於活動狀態以及哪些應用程式消耗的記憶體或處理能力超出了應有的水平。
top 命令使用起來很簡單,但你應該知道具體細節。平均負載是評估伺服器效能的一個有問題的指標。
Linux 中 top
命令的詳細說明
在終端中輸入 top
:
$ top
輸出:
top - 00:04:54 up 3:30, 1 user, load average: 1.84, 3.02, 2.50
Tasks: 233 total, 2 running, 231 sleeping, 0 stopped, 0 zombie
%Cpu(s): 38.5 us, 9.5 sy, 0.0 ni, 51.6 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 3840.9 total, 277.3 free, 2286.3 used, 1277.3 buff/cache
MiB Swap: 2048.0 total, 1447.0 free, 601.0 used. 777.7 avail Mem
top - 00:04:54 up 3:30, 1 user,
:該命令顯示當前系統時間,然後是uptime
,在本例中為 3 小時 30 分鐘,最後是登入到系統的使用者數,在本例中為 1。通過 SSH,這可以在本地、空閒、螢幕等上完成。load average: 1.84, 3.02, 2.50
:此部分顯示平均負載,這可能是一個令人費解的概念,尤其是在處理虛擬機器和雲時。第一個數字是當前負載平均值,第二個數字是 5 分鐘平均值,第三個數字是 15 分鐘負載平均值。Tasks: 233 total, 2 running, 231 sleeping, 0 stopped, 0 zombie
:當你鍵入ps aux
或其使用的變體時會出現應用程式的數量
正在進行的程序數表明你的 CPU 當前正在使用多少。由於非多執行緒應用程式一次只能使用一個 CPU,因此在四核伺服器上通常會看到兩種方法佔用 50% 的 CPU,平均負載為 2。
休眠程序數表示正在執行但未主動使用;這通常包括許多後臺作業、系統軟體、印表機驅動程式和其他此類專案。
除非你向程序傳送 SIGSTOP
或 kill-STOP
以進行故障排除,否則停止的程序數應為 0
。不同於 0
的值可能會引起生產系統的關注。
涉及殭屍程序的程序表示多執行緒應用程式建立的子程序突然銷燬或終止,留下殭屍程序。
如果發生了可怕的事情,Apache 很可能會採取報復行動。在大多數情況下,這也應該是 0
。
關於 CPU 的資訊
%Cpu(s): 38.5 us, 9.5 sy, 0.0 ni, 51.6 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
- 每個處理器使用最多 100% 的時間百分比。因此,在一個程序佔用一個 CPU 100% 的四核上,這將表示 25% 的使用率。在 8 核系統上,12.5% 意味著 1 個核心被固定。
- 術語
系統 CPU 利用率百分比
是指使用了多少系統 CPU。此處較高的數字可能表明核心配置存在問題、驅動程式問題或任何其他原因。 - 百分比
ni
表示受nice
或renice
命令影響的使用者程序使用的 CPU 百分比,即它們的優先順序已從排程程式的預設值修改為更高或更低。正數表示優先順序較低,負數表示優先順序較高。預設值為 0,這表明排程程式做出決定。 - 從 100.0% 減去前三個數字的結果是百分比
id
,它衡量空閒
處理能力。 wa
是 CPU 等待的% of I/O
。當一個程序或程式需要資料時,它首先檢查處理器快取,然後是記憶體,最後是磁碟。它通常必須等待 IO 執行緒完成將資訊讀取到 RAM 中,然後才能在它碰到磁碟時再次處理它。磁碟越慢,每個程序的 IO 等待百分比就越高。如果等待時間始終大於 100/(CPU 數 * 程序數),則可能存在需要監控的儲存問題。如果你檢測到高負載平均值,請首先檢查此數字。如果此值很高,則磁碟上的程序會出現瓶頸。si
是服務軟體中斷所花費的時間。與在主機板的中斷線上請求中斷的硬體或裝置(驅動程式)不同,Linux 核心在 2.4 版中包含一個功能,允許軟體請求中斷,核心通過其中斷處理程式處理它。這意味著應用程式可以請求優先順序狀態,核心可以確認收到請求,軟體將耐心等待中斷被處理。st
指的是被虛擬機器竊取的時間。我們不使用 VM 來限制 CPU,因此偶爾讓一兩個 VM 使用 8 個 CPU 不會損害整個池。如果虛擬機器的虛擬 CPU 使用的物理 CPU(或超執行緒至強處理器中的邏輯 CPU)CPU 的數量大於物理 CPU 的數量,則竊取時間
將增加。
在 Linux 中使用 top
命令
顯示 top
命令語法:
$ top -h
輸出:
procps-ng 3.3.16
Usage:
top -hv | -bcEHiOSs1 -d secs -n max -u|U user -p pid(s) -o field -w [cols]
你可以在安全模式下使用 top
命令。
$ top -s