進程信息跟蹤:top jps jstack

萬事多用Man

Top

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

第一塊:當(dāng)前系統(tǒng)時間
第二塊:系統(tǒng)已經(jīng)運行了13天13分
第三塊:當(dāng)前有0個用戶登錄系統(tǒng)(docker中啟動的會有這種情況?)
第四塊:load average后面的三個數(shù)分別是1分鐘、5分鐘、15分鐘的負載情況。load average數(shù)據(jù)是每隔5秒鐘檢查一次活躍的進程數(shù),然后按特定算法計算出的數(shù)值。如果這個數(shù)除以邏輯CPU的數(shù)量,結(jié)果高于5的時候就表明系統(tǒng)在超負荷運轉(zhuǎn)

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 — 內(nèi)核空間占用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的百分比
用戶空間就是用戶進程所在的內(nèi)存區(qū)域,相對的,系統(tǒng)空間就是操作系統(tǒng)占據(jù)的內(nèi)存區(qū)域。用戶進程和系統(tǒng)進程的所有數(shù)據(jù)都在內(nèi)存中。

KiB Mem : 15625000 total, 2836444 free, 8893532 used, 3895024 buff/cache

15625000 total — 物理內(nèi)存總量(16GB)
8893532 used — 使用中的內(nèi)存總量(8.9GB)
2836444 free — 空閑內(nèi)存總量(2.8G)
3895024 buffers — 緩存的內(nèi)存量 (3.6G)

KiB Swap: 0 total, 0 free, 0 used. 2836444 avail Mem

Swap分區(qū):swap(類似于虛擬內(nèi)存)交換分區(qū)的used,如果這個數(shù)值在不斷的變化,說明內(nèi)核在不斷進行內(nèi)存和swap的數(shù)據(jù)交換,這是可以判定服務(wù)器的內(nèi)存不夠用了。

看起來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 — 進程使用的虛擬內(nèi)存總量,單位kb。VIRT=SWAP+RES
RES — 進程使用的、未被換出的物理內(nèi)存大小,單位kb。RES=CODE+DATA
SHR — 共享內(nèi)存大小,單位kb
S — 進程狀態(tài)。D=不可中斷的睡眠狀態(tài) R=運行 S=睡眠 T=跟蹤/停止 Z=僵尸進程
%CPU — 上次更新到現(xiàn)在的CPU時間占用百分比
%MEM — 進程使用的物理內(nèi)存百分比
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 查看具體的信息

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容