busybox的top顯示和linux 桌面版本的top顯示有些細微的區別
summary區域--概要區域

Mem: 23018544K used, 1485568K free, 1307440K shrd, 676K buff, 7422896K cached
這一行顯示了memory的總體使用情況,這個信息是通過讀取/proc/meminfo獲取的。
used(23018544K)是當前已用的內存
free(1485568K)是當前可用的內存
shrd(1307440K)是tmpfs使用的內存數量,一般用於shmem
buff(676K)是直接訪問塊設備時的緩沖區的總大小。
cached(7422896K): 從disk讀文件的時候用的內存緩存。
CPU0: 9% usr 1% sys 0% nic 86% idle 1% io 0% irq 0% sirq
CPU1: 5% usr 3% sys 0% nic 91% idle 0% io 0% irq 0% sirq
CPU2: 9% usr 2% sys 0% nic 87% idle 0% io 0% irq 0% sirq
CPU3: 11% usr 1% sys 0% nic 87% idle 0% io 0% irq 0% sirq
CPU4: 13% usr 1% sys 0% nic 85% idle 0% io 0% irq 0% sirq
CPU5: 23% usr 1% sys 0% nic 75% idle 0% io 0% irq 0% sirq
CPU6: 36% usr 0% sys 0% nic 62% idle 0% io 0% irq 0% sirq
CPU7: 23% usr 2% sys 0% nic 72% idle 0% io 0% irq 1% sirq
CPU8: 5% usr 2% sys 0% nic 92% idle 0% io 0% irq 0% sirq
CPU9: 6% usr 4% sys 0% nic 88% idle 0% io 0% irq 0% sirq
CPU10: 5% usr 3% sys 0% nic 90% idle 1% io 0% irq 0% sirq
CPU11: 3% usr 1% sys 0% nic 94% idle 0% io 0% irq 0% sirq
CPU12: 4% usr 1% sys 0% nic 93% idle 0% io 0% irq 0% sirq
CPU13: 3% usr 1% sys 0% nic 94% idle 0% io 0% irq 0% sirq
CPU14: 4% usr 1% sys 0% nic 93% idle 0% io 0% irq 0% sirq
CPU15: 5% usr 1% sys 0% nic 92% idle 0% io 0% irq 0% sirq
這一行則顯示了CPU的負載情況,多核CPU要查看每個核的負載情況,可以按1,再按1回到總的CPU負載情況。
usr 指的是用戶進程空間未改變過優先級的進程占用CPU百分比
sys 指內核空間占用CPU百分比
nic 指用戶進程空間改變過優先級的進程占用CPU百分比
idle 指空閑時間百分比
io 也就是iowait,指的是空閑&等待I/O的時間百分比
irq 指的是硬中斷占用的CPU時間百分比
sirq 指的是軟中斷占用的CPU時間百分比
Load average: 0.66 0.55 2.60 2/2517 127
這一行顯示了整體系統負載,整體負載是CPU負載,Disk負載,網絡負載和其它外設負載的綜合反饋。
前面三個數分別對應過去1分鍾,5分鍾,15分鍾的負載。在linux中,Load是處於可執行態(TASK_RUNNING)和不可中斷睡眠態(TASK_UNINTERRUPTIBLE)的進程數。
第三個值(1/50)分別表示當前運行進程(1,包括LWP)和總的進程(50,同樣包括LWP)。
第四個值顯示的是最后一個線程ID
task區域顯示了每個進程的負載情況
8 1 root S 12711m 50% 11 0% java -javaagent:/home/app/agent/skywalking-agent.jar -Djava.security.egd=file:/dev/./urandom -server -Dfile.encoding=utf-8 -cp .:*:lib/*
1 0 root S 1596 0% 1 0% {start.sh} /bin/sh /home/app/start.sh --spring.profiles.active=dev --server.servlet.context-path=/i6000-ics-service --server-web.host=http://172.
其中:
PID是進程ID
PPID是父進程ID
USER是進程的用戶
STAT是進程的狀態
VSZ是映射到進程地址空間中的內存量,這個虛擬內存有可能大於實際物理內存(部分被swap out)。
%MEM 是這個進程使用的物理內存的頁數乘以100除以物理內存的總頁數。初略地看,就是值越高,進程耗費的內存越高。
CPU 多核中,這個進程最后運行所在的核
%CPU 進程使用的CPU的占比,視實現情況,多核有的是指某一單核的占比,有的是所有核CPU的占比。
COMMAND 進程運行的指令。
分析經驗
通常第一步可以觀察Load和CPU負載,如果Load高且CPU負載高,說明Load高很可能是CPU負載高引起的,反之則可能是其它負載(I/O等)。
如果CPU負載高,可以進一步分析CPU的幾個核心指標,以及各個核的情況。
如果是usr高,說明cpu確實消耗在進程里,可以檢查進程是否有死循環或者CPU密集計算,頻繁發生FullGC等
如果sys高,說明CPU消耗在系統內核,可以檢查驅動,排查是否存在I/O,內存等系統資源瓶頸。
如果sirq高,可以排查下網絡I/O瓶頸。
負載很重要的是要觀察趨勢,不管是CPU負載還是mem使用,都觀察下趨勢,是上漲還是下降,再結合系統情況作出猜測。
Load則直接可以從三個數值看出趨勢來。
