萬事多用Man
Top
What are us, sy, ni, id, wa, hi, si and st (for CPU usage)?
us: user cpu time (or) % CPU time spent in user space
sy: system cpu time (or) % CPU time spent in kernel space
ni: user nice cpu time (or) % CPU time spent on low priority processes
id: idle cpu time (or) % CPU time spent idle
wa: io wait cpu time (or) % CPU time spent in wait (on disk)
hi: hardware irq (or) % CPU time spent servicing/handling hardware interrupts
si: software irq (or) % CPU time spent servicing/handling software interrupts
st: steal time - - % CPU time in involuntary wait by virtual cpu while hypervisor is servicing another processor (or) % CPU time stolen from a virtual machine
top - 14:54:28 up 13 days, 13 min, 0 users, load average: 19.41, 13.56, 9.74
Tasks: 5 total, 1 running, 4 sleeping, 0 stopped, 0 zombie
%Cpu(s): 46.2 us, 5.0 sy, 0.4 ni, 47.9 id, 0.0 wa, 0.0 hi, 0.5 si, 0.0 st
KiB Mem : 15625000 total, 2836444 free, 8893532 used, 3895024 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 2836444 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
25618 root 20 0 8828860 4.112g 19816 S 803.0 27.6 23:20.23 java
1 root 20 0 10.955g 4.169g 13880 S 0.3 28.0 369:30.07 java
20942 root 20 0 13380 1872 1436 S 0.0 0.0 0:00.02 sh
top - 14:54:28 up 13 days, 13 min, 0 users, load average: 19.41, 13.56, 9.74
第一塊:當前系統(tǒng)時間
第二塊:系統(tǒng)已經運行了13天13分
第三塊:當前有0個用戶登錄系統(tǒng)(docker中啟動的會有這種情況硫椰?)
第四塊:load average后面的三個數(shù)分別是1分鐘雪营、5分鐘、15分鐘的負載情況握恳。load average數(shù)據(jù)是每隔5秒鐘檢查一次活躍的進程數(shù)梭纹,然后按特定算法計算出的數(shù)值。如果這個數(shù)除以邏輯CPU的數(shù)量励七,結果高于5的時候就表明系統(tǒng)在超負荷運轉
Tasks: 5 total, 1 running, 4 sleeping, 0 stopped, 0 zombie
第一塊:系統(tǒng)現(xiàn)在有5個進程
第二塊:有一個進程處于運行狀態(tài)
第三塊:4個進程處于休眠狀態(tài)
第四塊:0個進程處于stopped狀態(tài)
第五塊:0個進程處于zombie狀態(tài)
%Cpu(s): 46.2 us, 5.0 sy, 0.4 ni, 47.9 id, 0.0 wa, 0.0 hi, 0.5 si, 0.0 st
46.2 us — 用戶空間占用CPU的百分比智袭。user space
5 sy — 內核空間占用CPU的百分比。 system
0.4 ni — 改變過優(yōu)先級的進程占用CPU的百分比
47.9 id — 空閑CPU百分比
0.0 wa — IO等待占用CPU的百分比
0.0 hi — 硬中斷(Hardware IRQ)占用CPU的百分比
0.5 si — 軟中斷(Software Interrupts)占用CPU的百分比
用戶空間就是用戶進程所在的內存區(qū)域掠抬,相對的吼野,系統(tǒng)空間就是操作系統(tǒng)占據(jù)的內存區(qū)域。用戶進程和系統(tǒng)進程的所有數(shù)據(jù)都在內存中两波。
KiB Mem : 15625000 total, 2836444 free, 8893532 used, 3895024 buff/cache
15625000 total — 物理內存總量(16GB)
8893532 used — 使用中的內存總量(8.9GB)
2836444 free — 空閑內存總量(2.8G)
3895024 buffers — 緩存的內存量 (3.6G)
KiB Swap: 0 total, 0 free, 0 used. 2836444 avail Mem
Swap分區(qū):swap(類似于虛擬內存)交換分區(qū)的used瞳步,如果這個數(shù)值在不斷的變化闷哆,說明內核在不斷進行內存和swap的數(shù)據(jù)交換,這是可以判定服務器的內存不夠用了单起。
看起來docker啟動的沒有分配任何的swap分區(qū)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
PID — 進程id
USER — 進程所有者
PR — 進程優(yōu)先級
NI — nice值抱怔。負值表示高優(yōu)先級,正值表示低優(yōu)先級
VIRT — 進程使用的虛擬內存總量嘀倒,單位kb屈留。VIRT=SWAP+RES
RES — 進程使用的、未被換出的物理內存大小测蘑,單位kb灌危。RES=CODE+DATA
SHR — 共享內存大小,單位kb
S — 進程狀態(tài)碳胳。D=不可中斷的睡眠狀態(tài) R=運行 S=睡眠 T=跟蹤/停止 Z=僵尸進程
%CPU — 上次更新到現(xiàn)在的CPU時間占用百分比
%MEM — 進程使用的物理內存百分比
TIME+ — 進程使用的CPU時間總計乍狐,單位1/100秒
COMMAND — 進程名稱(命令名/命令行)
top -Hp pid
列出進程pid所有的線程信息 類似于 ps -T -p pid
ps -mp pid -o THREAD,tid,time
通過%CPU和 TIME,判斷占用的線程TID
-m Show threads after processes.
-p Select by PID
-o format. 自定義輸出格式固逗,例如 THREAD,tid,time
JPS
jps - Lists the instrumented Java Virtual Machines (JVMs) on the target system. This command is experimental and unsupported.
Jstack
jstack pid > pid.txt
查看具體的信息