Linux性能监控命令_top & 实时监控主机信息

描述

        顶部的程序提供了一个运行系统的动态实时视图。它可以显示系统摘要信息以及进程列表或当前由Linux内核管理的线程。显示的系统汇总信息的类型以及信息的类型、顺序和大小为进程播放的所有配置都是用户可配置的,并且该配置可以在重新启动时持久化。

目录

1. 语法

1.1. 常用参数

1.2. 交互命令

2. 关键字解释

2.1. 头部解释

2.2. 内容解释

3. TOP 基本使用方法

3.1. top 常用命令

3.2. CPU简单分析

3.3. 内存简单分析

4. 其他常用性能监控命令


1. 语法

top  [ 选项 ]

 

1.1. 常用参数

-c:显示程序完整命令路径

-p:指定查看某个PID状态(最多指定20个PID,以逗号分割)

-u:执行查看某个用户状态

-b:批处理模式操作

-d:延迟时间间隔(秒)

-n:迭代次数限制

 

 

1.2. 交互命令

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)

 

 

 

2. 关键字解释

Linux性能监控命令_top & 实时监控主机信息_第1张图片

 

2.1. 头部解释

第 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:交换区可用的内存

 

 

2.2. 内容解释

Linux性能监控命令_top & 实时监控主机信息_第2张图片

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:进程名

 

 

 

3. TOP 基本使用方法

3.1. top 常用命令

************ 常用参数 ************
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使用情况

 

 

3.2. 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

 

 

3.3. 内存简单分析

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 只能看出小部分问题,想要完整的分析出性能问题,还需要配合其他命令一起使用。

 

 

4. 其他常用性能监控命令

Linux性能监控命令_sar & 自动保存30天历史信息

Linux性能监控命令_iostat & 监控I/O状态

Linux性能监控命令_vmstat & 同时监控cpu、内存、磁盘、分页

Linux性能监控命令_pidstat & 统计进程信息

你可能感兴趣的:(性能笔记,服务器,linux,运维,性能优化)