在做性能调优的过程中,我们经常需要用到top命令来查看服务器实时的资源占用情况,通过top命令,我们可以查看到服务器的各项性能指标以及各个进行的资源使用情况。
命令格式:
top [参数]
命令参数:
-b 批处理-c 显示完整的治命令-I 忽略失效过程-s 保密模式-S 累积模式-i<时间> 设置间隔时间-u<用户名> 指定用户名-p<进程号> 指定进程-n<次数> 循环显示的次数
命令展示:
内容详解:
top命令开启后,会实时刷新服务器的资源占用情况,页面上半部分(前五行)为整体资源消耗概览,下半部分显示各个进程对应的CPU、内存和使用时间以及简单的描述。
其中第一行top-任务队列信息,具体参数含义如下:
16:09:58 — 当前系统时间up 55 days, 13:59 — 系统已经持续运行了55天13小时59分钟(2 users — 当前有2个用户登录系统load average: 0.04, 0.03, 0.00 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
第二行 task-任务进程,具体参数含义如下:
261 total —当前系统共有261个进程1 running —1个活跃进程260 sleeping — 260个进程处于休眠状态0 stopped — 0个进程被挂起0 zombie — 0个僵尸进程
第三行 CPU资源使用情况,具体参数含义如下:
0.1 us — 用户空间占用CPU的百分比。0.0 sy — 内核空间占用CPU的百分比。0.0 ni — 改变过优先级的进程占用CPU的百分比99.7 id — 空闲CPU百分比(重点关注)0.1 wa — IO等待占用CPU的百分比0.0 hi — 硬中断(Hardware IRQ)占用CPU的百分比0.0 si — 软中断(Software Interrupts)占用CPU的百分比
第四行MEN内存使用情况,具体参数含义如下:
14246.8 total — 物理内存总量304.8 free — 空闲内存总量5323.7 used — 使用中的内存总量8618.3 buff/cache — 缓存的内存量 备注:free显示的数字小并不见得就是内存快不够用了,由于服务器内核并不会把过去使用过但可以被重复使用的内存释放出来,所以free对应的值会越来越小。但若第五行swap中used的数字在不断的变化,则代表内核在不断进行内存和swap的数据交换,此时才是真正的内存不够用了。
第五行swap交换分区信息,具体参数含义如下:
7828.0 total — 交换区总量7790.5 free — 空闲交换区总量37.5 used — 使用的交换区总量8131.2 avail— 缓冲的交换区总量
下半部分为各进程列表,表头参数含义如下:
PID — 进程idUSER — 进程所有者PR — 进程优先级NI — nice值。负值表示高优先级,正值表示低优先级VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RESRES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATASHR — 共享内存大小,单位kbS — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程%CPU — 上次更新到现在的CPU时间占用百分比%MEM — 进程使用的物理内存百分比TIME+ — 进程使用的CPU时间总计,单位1/100秒COMMAND — 进程名称(命令名/命令行)
至此,相信各位对top命令中的各项参数都有所了解