Linux-top命令詳解
top命令算是最直觀、好用的檢視伺服器負載的命令了。它實時動態重新整理顯示伺服器狀態資訊,且可以通過互動式命令自定義顯示內容,非常強大。
在終端中輸入top
,回車後會顯示如下內容:
top - 21:48:39 up 8:57, 2 users, load average: 0.36, 0.24, 0.14 Tasks: 322 total, 2 running, 320 sleeping, 0 stopped, 0 zombie %Cpu(s): 5.0 us, 1.7 sy, 0.0 ni, 93.0 id, 0.0 wa, 0.3 hi, 0.0 si, 0.0 st KiB Mem: 1010504 total, 937416 used, 73088 free, 23708 buffers KiB Swap: 1046524 total, 280708 used, 765816 free. 365556 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 8096 root 20 0 320624 38508 21192 S 1.7 3.8 0:41.03 Xorg 13536 tabalt 20 0 697336 104272 56776 S 1.7 10.3 0:08.29 gnome-langu+ 9426 tabalt 20 0 1213228 72976 16860 S 1.0 7.2 2:07.27 compiz 197 root 20 0 0 0 0 S 0.3 0.0 0:36.13 kworker/0:2 1009 root 20 0 303112 3392 1500 S 0.3 0.3 0:00.93 polkitd 9670 tabalt 20 0 325932 4300 2256 S 0.3 0.4 0:40.27 vmtoolsd 14016 root 25 5 43940 2408 2000 S 0.3 0.2 0:01.12 http 14149 tabalt 20 0 591180 19504 12820 S 0.3 1.9 0:00.45 gnome-termi+ 1 root 20 0 33648 1972 744 S 0.0 0.2 0:01.79 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:02.80 ksoftirqd/0 4 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 7 root 20 0 0 0 0 S 0.0 0.0 0:05.55 rcu_sched 8 root 20 0 0 0 0 R 0.0 0.0 0:03.43 rcuos/0 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuos/1 10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuos/2
一、系統資訊統計
前五行是系統整體狀態的統計資訊展示區域。下面分別介紹每一行中的內容:
1、第一行顯示伺服器概況
如下所示,第一行列出了伺服器運行了多長時間,當前有多少個使用者登入,伺服器的負荷情況等,使用uptime
命令能獲得同樣的結果。
top - 21:48:39 up 8:57, 2 users, load average: 0.36, 0.24, 0.14 / / / \ 當前時間 執行時長 當前登入使用者數 平均負載(1分鐘、5分鐘、15分鐘)
平均負載的值越小代表系統壓力越小,越大則代表系統壓力越大。通常,我們會以最後一個數值,也就是15分鐘內的平均負載作為參考來評估系統的負載情況。
對於只有單核cpu的系統,1.0
是該系統所能承受負荷的邊界值,大於1.0則有處理需要等待。
一個單核cpu的系統,平均負載的合適值是0.7
以下。如果負載長期徘徊在1.0,則需要考慮馬上處理了。超過1.0的負載,可能會帶來非常嚴重的後果。
當然,多核cpu的系統是在前述值的基礎上乘以cpu核心的個數。如對於多核cpu的系統,有N個核則所能承受的邊界值為N.0
。
可以使用如下命令來檢視每個處理器的資訊:
cat /proc/cpuinfo
如果只想計算有多少個cpu核心,可以使用如下命令:
cat /proc/cpuinfo | grep 'model name' | wc -l
2、第二行是程序資訊:
Tasks: 322 total, 2 running, 320 sleeping, 0 stopped, 0 zombie
/ / / / /
程序總數 正執行程序數 睡眠程序數 停止程序數 殭屍程序數
3、第三行是CPU資訊:
%Cpu(s):
5.0 us 使用者空間CPU佔比
1.7 sy 核心空間CPU佔比
0.0 ni 使用者程序空間改過優先順序的程序CPU佔比
93.0 id 空閒CPU佔比 0.0 wa 待輸入輸出CPU佔比 0.3 hi 硬中斷(Hardware IRQ)CPU佔比 0.0 si 軟中斷(Software Interrupts)CPU佔比 0.0 st -
4、第四行是記憶體資訊:
KiB Mem: 1010504 total, 937416 used, 73088 free, 23708 buffers / / / / 實體記憶體總量 使用中總量 空閒總量 快取的記憶體量
5、第五行是swap交換分割槽資訊:
KiB Swap: 1046524 total, 280708 used, 765816 free, 365556 cached Mem / / / / 交換區總量 使用中總量 空閒總量 快取的記憶體量
使用中的記憶體總量(used)指的是現在系統核心控制的記憶體數,空閒記憶體總量(free)是核心還未納入其管控範圍的數量。納入核心管理的記憶體不見得都在使用中,還包括過去使用過的現在可以被重複利用的記憶體,核心並不把這些可被重新使用的記憶體交還到free中去,因此在linux上free記憶體會越來越少,但不用為此擔心。
如果出於習慣去計算可用記憶體數,這裡有個近似的計算公式:第四行的free + 第四行的buffers + 第五行的cached,按這個公式此臺伺服器的可用記憶體:73088+23708+365556 = 451M。
對於記憶體監控,在top裡我們要時刻監控第五行swap交換分割槽的used,如果這個數值在不斷的變化,說明核心在不斷進行記憶體和swap的資料交換,這是真正的記憶體不夠用了。
二、程序(任務)狀態監控
第七行及以下顯示了各程序(任務)的狀態監控。各列所代表的含義如下:
PID 程序id
USER 程序所有者
PR 程序優先順序
NI nice值。負值表示高優先順序,正值表示低優先順序
VIRT 程序使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES
RES 程序使用的、未被換出的實體記憶體大小,單位kb。RES=CODE+DATA
SHR 共享記憶體大小,單位kb
S 程序狀態。D=不可中斷的睡眠狀態 R=執行 S=睡眠 T=跟蹤/停止 Z=殭屍程序
%CPU 上次更新到現在的CPU時間佔用百分比
%MEM 程序使用的實體記憶體百分比
TIME+ 程序使用的CPU時間總計,單位1/100秒
COMMAND 程序名稱(命令名/命令列)
Cpu(s)表示的是 所有使用者程序佔用整個cpu的平均值,由於每個核心佔用的百分比不同,所以按平均值來算比較有參考意義。
%CPU顯示的是程序佔用一個核的百分比,而不是整個cpu(12核)的百分比,有時候可能大於100,那是因為該程序啟用了多執行緒佔用了多個核心,所以有時候我們看該值得時候會超過100%,但不會超過總核數*100。
三、與top互動
-
按鍵
b
開啟或關閉 執行中程序的高亮效果 -
按鍵
x
開啟或關閉 排序列的高亮效果 -
shift + >
或shift + <
可以向右或左改變排序列 -
f
鍵,可以進入編輯要顯示欄位的檢視,有 * 號的欄位會顯示,無 * 號不顯示,可根據頁面提示選擇或取消欄位。