描述
顶部的程序提供了一个运行系统的动态实时视图。它可以显示系统摘要信息以及进程列表或当前由Linux内核管理的线程。显示的系统汇总信息的类型以及信息的类型、顺序和大小为进程播放的所有配置都是用户可配置的,并且该配置可以在重新启动时持久化。
目录
1. 语法
1.1. 常用参数
1.2. 交互命令
2. 关键字解释
2.1. 头部解释
2.2. 内容解释
3. TOP 基本使用方法
3.1. top 常用命令
3.2. CPU简单分析
3.3. 内存简单分析
4. 其他常用性能监控命令
top [ 选项 ]
-c:显示程序完整命令路径
-p:指定查看某个PID状态(最多指定20个PID,以逗号分割)
-u:执行查看某个用户状态
-b:批处理模式操作
-d:延迟时间间隔(秒)
-n:迭代次数限制
h :帮助文档
f :视图设置
q :退出
1 :显示各个 CPU 使用情况
P :按 CPU 使用率排序
M:按内存使用率排序
e :切换进程使用内存单位(K/M/G/T/P/E/)
E :切换第 4 行总内存单位(K/M/G/T/P/E/)
i :忽略闲置进程和僵尸进程
T :按使用时间排序
c :显示 COMMAND 完整命令
s :指定刷新时间(单位:s)
U:指定用户
k :kill 某个进程(输入PID)
第 1 行:查看负载情况
top - 02:51:14:当前时间
up 4:48 :系统运行时间
5 users :当前用户连接数
load average :平均负载。分别显示1/5/15分钟的负载情况
第 2 行:查看进程状态
272 total :当前进程总数为 272
1 running :正在运行的进程数为 1
271 sleeping:睡眠的进程数为 271
0 stopped :停止的进程数为 0
0 zombie :僵尸进程数为 0
第 3 行:查看 CPU 占用情况
0.0 us :用户空间占用的 cpu%
0.0 sy :内核空间占用的 cpu%
0.0 ni :用户进程空间内改变过优先级的进程,占用的 cpu%
100 id :空闲的 cpu%
0.0 wa :正在等待中的 cpu%
0.0 hi :硬中断占用的 cpu%
0.0 si :软中断占用的 cpu%
0.0 st :管理程序(hypervisor)为另一个虚拟进程提供服务而等待的虚拟CPU占比
第 4 行:查看物理内存使用情况(默认单位 KB)
1865308 total :物理内存总量
407288 free :剩余的物理内存
848376 used :使用的物理内存
609644 buff/cache:缓冲区正在使用的内存
第 5 行:查看交换分区使用情况(默认单位 KB)
2097148 total :交换区总内存
2097148 free :交换区剩余的内存
0 used :交换区使用的内存
775584 avail Mem:交换区可用的内存
PID :进程的PID
USER :进程的用户
PR :优先级(rt 表示实时调度优先级)
NI :nice值(负数表示优先级高,正数表示优先级低)
VIRT :进程分配虚拟内存总量(VIRT=SWAP+RES)
RES :进程使用的、未被换出的物理内存大小(RES=CODE+DATA)
SHR :共享内存大小
S :进程状态(D:不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
%CPU :进程的 cpu 占用情况
%MEM :进程的物理内存占用情况
TIME+ :进程累计的CPU使用时间(单位1/100秒)
COMMAND:进程名
************ 常用参数 ************
top -b -d 1 -n 3 > top_file.log # 将监控输出到文件,每1秒输出一次,共3次
top -p [pid1],[pid2] # 查看PID进程状态,最多20个PID
************ 常用交互 ************
P # 按CPU占用排序
M # 按内存占用排序
U # 查看某个用户所有进程
k # kill 某个进程
s # 设置刷新频率
1 # 查看各个CPU使用情况
1、检查CPU逻辑数:cat /proc/cpuinfo |grep "processor" |wc -l(这里举例CPU个数为32)
2、查看负载使用情况。top 第一行分别显示 1/5/15 分钟平均负载。
如果负载没有超过32,那么说明CPU负载不是很严重;如果接近32,说明CPU已经处于饱和状态(每个CPU都在运行着,并且都有一个在后面等待,肯定饱和);如果负载是32的好几倍,说明严重负载(这个和线程数有关系。若线程并发小于等于32,那么说明这个线程非常消耗CPU性能或者系统CPU运行能力差,负载会持续增加。当并发大于32,负载没有持续增加的情况,可能并发的线程不是很消耗CPU或者本身系统CPU性能好)。
除了看负载数与CPU逻辑数对比外,还需要看 1/5/15 分钟的负载情况。当1分钟负载高于5/15分钟,说明CPU消耗在持续增加;当1分钟负载低于5/15分钟,说明CPU消耗正在减少。
3、除了从负载可以判断CPU使用情况,另外一种更直观的方式就是看CPU使用率。top第三行,主要以这4个为主:us用户空间的占用、sy内核空间的占用、wa等待cpu、id空闲cpu,
id 需要达到25%以上,若是低于25%,可能造成进程响应慢,影响服务正常功能。
wa 等待过高会造成负载的增加,这时候需要 top -c 显示命令情况,一般等待进程在COMMAND 列会有 waiting 字样,再去根据等待进程的PID分析它在干嘛(可以使用 perf top 命令分析)。这个时候需要用到 iostat 或者 sar 查看IO情况,有可能因为 IO 使用饱和所导致。
top 命令:top -o %CPU,也可以使用交互命令 P
1、查看物理内存 top 第四行。
若 free 剩余内存过低,used 使用内存并不高,那么大部分内存存放在 buff/cache(存放要写到磁盘的数据和从磁盘读取的数据),这时候不用担心内存不足,不足时系统会自动将 buff/cache 不用的内存调出来使用。
2、查看交换分区。若 top 第五行交换分区 free 在持续减少,说明物理内存已经使用完,系统自动调取虚拟内存。这时候需要注意,若频繁调用swap内存,swap 剩余内存为0,那么系统直接卡死导致无法使用,只能重启
3、查看进程内存使用情况。top 交互命令M 以内存使用排序,查看 %MEM 内存使用率。一般服务在启动是就分配了虚拟内存,可以在 VIRT 看到。
当运行业务时,VIRT 持续增加且没有停下的意思,可能出现内存泄漏;若 VIRT 上升一个阶段后再次下降,属于一直周期性运作,那么进程处于正常情况。
top 命令:top -o %MEM,也可以使用交互命令 M
当然,top 只能看出小部分问题,想要完整的分析出性能问题,还需要配合其他命令一起使用。
Linux性能监控命令_sar & 自动保存30天历史信息
Linux性能监控命令_iostat & 监控I/O状态
Linux性能监控命令_vmstat & 同时监控cpu、内存、磁盘、分页
Linux性能监控命令_pidstat & 统计进程信息