top是效能分析工具,能夠即時顯示系統中各個行程的資源佔用狀況。
ubuntu@ubuntu:~$ top top - 08:15:01 up 44 min, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 63 total, 1 running, 62 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1741400 total, 1600560 free, 73184 used, 67656 buff/cache KiB Swap: 0 total, 0 free, 0 used. 1557120 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 56816 6548 5264 S 0.0 0.4 0:00.95 systemd 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:00.02 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 6 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kworker/u2:0 7 root 20 0 0 0 0 S 0.0 0.0 0:00.03 rcu_sched 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain 11 root rt 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0 13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns 15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd 16 root 20 0 0 0 0 S 0.0 0.0 0:00.00 oom_reaper 17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback 18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kcompactd0
top上半部顯示的是系統資源使用情,下半部是系統行程的資訊。
上半部欄位說明
第1行
08:15:01:目前時間
up 44 min:主機開機時間
1 user:目前登入系統使用者數
load average: 1.00, 1.23, 0.86:系統每1分鐘、5分鐘、15分鐘的負載情況。
load average資料是每隔5秒鐘檢查一次活躍的進程數,然後按特定演算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了。
第2行
Tasks: 63 total, 1 running, 62 sleeping, 0 stopped, 0 zombie:
目前系統共63個行程,1個正在執行(running),62個休眠狀態(sleeping),0個已停止(stopped),0個僵屍狀態(zombie)
第3行
%Cpu(s): 1.1 us, 0.3 sy, 0.0 ni,100.0 id, 0.4 wa, 0.02 hi, 0.1 si, 0.0 st:
1.1%us — 用戶空間佔用CPU的百分比
0.3% sy — 內核空間佔用CPU的百分比
0.0% ni — 改變過優先順序的進程佔用CPU的百分比
0.4% wa — IO等待佔用CPU的百分比
0.1% hi — 硬中斷(Hardware IRQ)佔用CPU的百分比
0.0% si — 軟中斷(Software Interrupts)佔用CPU的百分比
第4行
KiB Mem : 1741400 total, 1600560 free, 73184 used, 67656 buff/cach
記憶體使用狀態:
1741400 total:實體記憶體容量
1600560 free:剩餘記憶體容量
73184 used:已使用的記憶體容量
67656 buff/cach:暫存記憶體容量
第5行
KiB Swap: 0 total, 0 free, 0 used. 1557120 avail Mem
swap使用狀態:
0 total:swap總容量
0 free:已使用的swap容量
0 used:剩餘swap容量
1557120 avail Mem 暫存記憶體容量
下半部欄位說明:
PID — 行程id(Process 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 — 行程名稱
按鍵 | 說明 |
1 | 顯示單一/多cpu使用情形切換 |
B | 將欄位值做粗體/一般字體切換 |
e/E | 時間顯示單位切換,可分s,ms,gs,ts,ps |
f/F | Fields Management可自行選擇要顯示的欄位 |
h | 叫出help說明 |
k | 刪除指定行程 |
l | 隱藏/顯示load average(第1行)資訊切換 |
L | 尋找字串 |
m | 依據mem用量進行排序 |
M | 隱藏/顯示memory info (第4行)資訊切換 |
P | 依據cpu用量進行排序 |
q | 離開top |
R | 修改nice值 |
S | 更改延遲時間(預設3秒) |
t | 隱藏/顯示tasks(第2.3行)資訊切換 |
T | 依據Time+時間/累計時間進行排序 |
z | 顯示顏色切換 |
Z | 更改排序方式/顏色切換時之顏色 |
除了開啟top觀察系統資訊外top也可以使用指令將資訊直接回傳至營幕,若再使用">"或">>"則可將結果匯出為檔案
參數 | 說明 |
b | Batch mode |
d | 指定更新時間(單位:秒) |
o | 指定要輸出的欄位名稱 |
p | 指定要觀察的pid |
u | 指定要觀察的使用者名稱 |
ubuntu@ubuntu:~$ top -b -d 2 -p 6164 #使用batch mode,觀察pid 6164的行程並每2秒更新一次 top - 15:25:19 up 13 days, 7:14, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.1 us, 0.2 sy, 0.0 ni, 99.6 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 602636 total, 383788 used, 218848 free, 13528 buffers KiB Swap: 524284 total, 26740 used, 497544 free. 236088 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6164 root 20 0 434960 27152 2824 S 0.0 4.5 71:22.76 mongod top - 15:25:21 up 13 days, 7:14, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.5 us, 0.0 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 602636 total, 383788 used, 218848 free, 13528 buffers KiB Swap: 524284 total, 26740 used, 497544 free. 236088 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6164 root 20 0 434960 27152 2824 S 0.0 4.5 71:22.76 mongod #畫面會每2秒更新一次 ubuntu@ubuntu:~$ top -d 2 -u ubuntu #觀察使用者ubuntu所執行的行程並每2秒更新一次 top - 15:30:25 up 13 days, 7:19, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 87 total, 2 running, 85 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 602636 total, 383908 used, 218728 free, 13540 buffers KiB Swap: 524284 total, 26740 used, 497544 free. 236088 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 12227 ubuntu 20 0 103592 4044 3048 S 0.0 0.7 0:00.51 sshd 12229 ubuntu 20 0 21332 5244 3244 S 0.0 0.9 0:00.08 bash 12230 ubuntu 20 0 12836 1916 1780 S 0.0 0.3 0:00.00 sftp-server 12662 ubuntu 20 0 23668 2980 2508 R 0.0 0.5 0:00.00 top #不加-b參數會進入top內並每2秒更新一次 ubuntu@ubuntu:~$ top -b -o +%MEM | head -n 17 #使用batch mode,以記憶體做為排序依據,並只列出前17行 top - 15:46:13 up 13 days, 7:35, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 88 total, 1 running, 87 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.1 us, 0.2 sy, 0.0 ni, 99.6 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 602636 total, 387760 used, 214876 free, 14064 buffers KiB Swap: 524284 total, 26740 used, 497544 free. 240212 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6164 root 20 0 434960 27152 2824 S 0.0 4.5 71:27.35 mongod 1376 root 20 0 52316 10520 3720 S 0.0 1.7 0:30.89 google_accounts 1374 root 20 0 49960 9692 3056 S 0.0 1.6 0:19.92 google_clock_sk 1375 root 20 0 49836 9680 3268 S 0.0 1.6 0:30.88 google_ip_forwa 12115 root 20 0 103592 6492 5524 S 0.0 1.1 0:00.00 sshd 12229 ubuntu 20 0 21332 5244 3244 S 0.0 0.9 0:00.10 bash 12227 ubnutu 20 0 103592 4044 3048 S 0.0 0.7 0:00.62 sshd 1 root 20 0 33528 3172 1996 S 0.0 0.5 0:03.47 init 12726 ubuntu 20 0 23548 2892 2548 R 0.0 0.5 0:00.00 top 1520 root 20 0 61396 2336 2224 S 0.0 0.4 0:01.62 sshd
參考資料:
每天一个linux命令(44):top命令
鳥哥的Linux私房菜 - top:動態觀察程序的變化
Linux 用 ps 與 top 指令找出最耗費 CPU 與記憶體資源的程式
留言列表