1.简介
用jmeter进行性能测试的时候,经常会使用top 命令来实时查看服务器的当前负载量,CPU占用率,内存占用率等信息,接下来详细讲解一下top命令的使用。
2. top命令输出结果解析
直接在终端输入top命令后,会显示如下信息:
top命令显示的信息比较多,主要分为两部分:
- 第一部分:前5行,是系统整体的统计信息,包括负载、cpu、内存的信息
- 第二部分:光标及以下信息,显示的是进程信息
1. 整体统计信息
第一行
top - 10:28:42 up 4:43, 2 users, load average: 0.83, 0.61, 0.50
top
:命令名称10:28:42
:当前系统时间为10:28:42up
:机器运行了多长时间,当前已经运行了4min 43s2 users
:2个用户登录load average: 0.83, 0.61, 0.50
:系统负载,表示在一段时间内,CPU正在处理以及等待CPU处理的进程数之和,当前三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
在一行中主要关注load average
负载信息,当在压测,处理大量请求、CPU密集型计算等。都会看到这个数值升高。一般来说load average
的数值不超过这台机器的总核数。
第二行
Tasks: 120 total, 2 running, 118 sleeping, 0 stopped, 0 zombie
Tasks: 120 total
:当前有120个进程2 running
:2个正在运行的进程118 sleeping
:118个进程正在睡眠0 stopped
:0个停止进程0 zombie
:0个僵尸进程
第三行
%Cpu(s): 3.7 us, 6.8 sy, 0.0 ni, 89.1 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
%Cpu(s)
:CPU使用率3.7 us
:用户CPU使用率为3.7%,越大越好6.8 sy
:系统CPU使用率,越小越好0.0 ni
:高优先级进程占用CPU时间的百分比89.1 id
:空闲CPU占用率0.0 wa
:IO等待CPU占用率,表示 CPU 在等待 IO 操作完成所花费的时间。系统不应该花费大量的时间来等待 IO 操作,否则就说明 IO 存在瓶颈0.0 hi
:CPU硬中断率,硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息0.3 si
:CPU软件中断率,软中断是由程序发出的中断0.0 st
:强制等待占用CPU率
一般情况,我们只需要关心us
用户CPU使用率和sy
系统CPU使用率即可
第四行
KiB Mem : 995896 total, 78720 free, 793520 used, 123656 buff/cache
MiB Mem
:物理内存995896 total
:物理内存总量78720 free
:空闲内存量793520 used
:已使用内存量123656 buff/cache
:用作内核缓存的内存量
一般情况,我们只需要关心free
空闲物理内存剩了多少,userd
已用物理内存用了多少
第五行
KiB Swap: 2097148 total, 1217144 free, 880004 used. 46168 avail Mem
MiB Swap
:虚拟内存(交换空间),当内存不足的时候,把一部分硬盘空间虚拟城内存使用2097148 total
:总量1217144 free
:空闲880004 used
:使用46168 avail Mem
:可用于启动一个新应用的内存(物理内存),和free不同,它计算的是可回收的page cache和memory slab
一般来说物理内存是有限制的,但是虚拟出来的假内存是没有上限的,所以大部分情况不用关心,只需要关心物理内存即可。
第四行和第五行输出信息,也等同于使用free -m命令。
2. 进程信息
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6830 elastic+ 20 0 2839136 439488 4920 S 1.7 44.1 10:31.71 java
36749 root 20 0 159080 1684 1096 S 0.7 0.2 1:26.96 sshd
6822 kibana 20 0 1096020 238572 7944 S 0.3 24.0 5:58.23 node
6882 mysql 20 0 1341540 8624 0 S 0.3 0.9 2:17.08 mysqld
1 root 20 0 128092 2076 848 S 0.0 0.2 0:02.26 systemd
参数 | 含义 |
---|---|
PID | 进程id |
USER | 进程所属用户 |
PR | 优先级 |
NI | nice值,负值表示高优先级,正值表示低优先级 |
VIRT | 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
RES | 进程使用物理内存 |
SHR | 共享内存大小,单位kb |
S | 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 |
%CPU | 进程占用CPU率 |
%MEM | 进程占用内存率 |
TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
COMMAND | 进程的命令或名称或程序文件路径 |
一般情况我们更关心PID
进程id、RES
进程使用物理内存、%CPU
进程占用CPU率、%MEM
进程占用内存率
3. top命令选项
选项 | 功能 |
---|---|
-p | 只显示某个进程的信息 |
-d | 设置刷新时间,默认是5s |
-c | 显示产生进程的完整命令,默认只是进程名 |
-n | 指定刷新次数,例如 top -n 3,刷新输出3次后退出 |
-b | 以非交互非全屏模式运行,以批次的方式执行top,一般配合-n指定输出几次统计信息,将输出重定向到指定文件,比如 top -b -n 3 > /tmp/top.tmp |
-i | 不显示任何闲置 (idle) 或无用 (zombie) 的进程 |
-u | 查找特定用户启动的进程 |
4. top命令交互式选项
按键 功能
1键 按下1键,可以监控每个逻辑CPU的状况
u键 按下u键,然后输入用户名,则可以查看相应的用户进程
h键 按下h键,会显示帮助画面
c键 按下c键,会显示产生进程的完整命令,等同于-c参数,再次按下c键,变为默认显示
f键 按下f键,可以选择需要展示的项目
M键 按下M键,根据驻留内存大小(RES)排序
P键 按下P键,根据CPU使用百分比大小进行排序
T键 按下T键,根据时间/累计时间进行排序
E键 按下E键,切换顶部内存显示单位
e键 按下e键,切换进程内存显示单位
l键 按下l键,切换显示平均负载和启动时间信息。
t键 按下t键,切换显示CPU状态信息
m键 按下m键,切换显示内存信息
top命令的功能非常强大,在对代码是优化内存消耗,还是优化代码逻辑,或者其他地方的改进都有很大的帮助。