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则直接可以从三个数值看出趋势来。
