1 top命令介绍
top命令是Linux系统中常用的性能分析工具,可以实时地查看系统的运行情况,比如内存、CPU、负载以及各个进程的资源占用情况。
1.1 选项和参数
-d:后面接数字,代表进程界面更新的描述,默认5秒
-b:批量的方式执行
-n:与-b搭配,执行几次top的输出结果
-p:可指定某个PID进行检测
1.2 按键命令
P:按照CPU使用排序
M:以Memory排序
N:以PID排序
T:进程使用时间排序
r:基于某个PID新的nice值
1.3 输出结果
[root@host-192-168-30-156 tecs]# top -d 2
top - 14:13:30 up 11 days, 5:39, 4 users, load average: 0.21, 0.26, 0.31
Tasks: 877 total, 1 running, 876 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.3 sy, 0.0 ni, 99.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st, 99.4 id_exact, 0.0 hi_exact, 0.0 irq_exact
KiB Mem : 39436160+total, 38492886+free, 7249556 used, 2183196 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 38524627+avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7516 root 39 19 0 0 0 S 1.5 0.0 2611:24 kipmi0
112202 root 20 0 162928 3224 1616 R 1.0 0.0 0:00.16 top
16326 root 20 0 191380 9560 3632 S 0.5 0.0 131:57.06 zxdvs_guard.py
1 root 30 10 60804 13236 4200 S 0.5 0.0 265:51.96 systemd
第一行:表示当前时间14:13:30,开机11天5小时39分,以及登录系统的人数4个,系统在1,5,15分钟的平均任务负载是0.21, 0.26, 0.31(ps,一般来说Load Average的数值别超过这台机器的总核数)
第二行:代表目前进程的总数和各状态的数量
- running(运行状态)
当进程正在被cpu执行,或已经准备就绪随时可由调度程序执行.
- sleeping(睡眠状态)
当系统产生一个终断或者释放了进程正在等待的资源,可以唤醒进程转换到运行状态
- stopped(终止状态)
- zombie(僵死状态)
进程已停止运行,但其父进程还没有询问其状态,不为0最好确认是哪个process
第三行:显示CPU的整体负载,多内核可以按下【1】切换成不同CPU的负载率
- us:用户空间占用CPU时间的百分比(大部分进程都运行在用户态,通常都是希望用户空间CPU越高越好)
- sy:内核空间占用CPU时间的百分比(Linux内核态占用的CPU时间,系统 CPU占用越高,表明系统某部分存在瓶颈。通常这个值越低越好)
- ni:占用CPU时间的百分比(ni是nice的缩写,进程用户态的优先级,如果调整过优先级,那么展示的就是调整过nice值的进程消耗掉的CPU时间,如果系统中没有进程被调整过nice值,那么ni就显示为0)
- id:空闲CPU占用率,等待进程运行
- wa:等待输入输出的CPU时间百分比(wa表示 CPU 在等待 IO 操作完成所花费的时间。系统不应该花费大量的时间来等待 IO 操作,否则就说明 IO 存在瓶颈)
- hi:CPU硬中断时间百分比(硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息 )
- si:CPU软中断时间百分比(软中断是由程序发出的中断 )
- st:被强制等待(involuntary wait)虚拟 CPU 的时间
第四、五行:目前物理内存与虚拟内存(Mem/Swap)情况,swap的使用量要尽量的少,如果用的很多,说明系统的物理内存不足
第六行:进程显示的具体状态
- PID:进程id
- USER:进程所有者
- PR:进程的优先级,越小优先级越高
- NI:nice值,负值表示高优先级,正值表示低优先级
- VIRT:进程使用的虚拟内存,单位是kb
- RES:进程使用的物理内存,单位kb
- SHR:进程使用的共享内存,单位kb
- S:进程状态(S表示休眠,R表示正在运行, Z表示僵死状态,N表示该进程优先值为负数,I表示空闲状态)
- %CPU:进程占用的CPU使用率
- %MEM:进程使用的物理内存和总内存的百分比
- TIME+:进程使用的CPU时间总计,单位1/100秒
- COMMAND:命令行
2 虚拟内存VIRT、物理内存RES、共享内存SHR
- 虚拟内存VIRT
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据,以及malloc、new分配的堆空间和分配的栈空间等;
2、假如进程新申请10MB的内存,但实际只使用了1MB,那么它会增长10MB,而不是实际的1MB使用量。
- 物理内存RES
1、进程当前使用的内存大小,包括使用中的malloc、new分配的堆空间和分配的栈空间,但不包括swap out量;
2、包含其他进程的共享;
3、如果申请10MB的内存,实际使用1MB,它只增长1MB;
- 共享内存SHR
1、进程当前使用的内存大小,包括使用中的malloc、new分配的堆空间和分配的栈空间,但不包括swap out量;
2、包含其他进程的共享;
3、如果申请10MB的内存,实际使用1MB,它只增长1MB;
上述三个值是从/proc/pid/statm文件中格式化读出来的,前三个值分别是VIRT、RES、SHR,单位是页,常见的是4kb。
以上部分内容转载自https://blog.csdn.net/weixin_40734030/article/details/125558689