Top
top
命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况
前五行是当前系统情况整体的统计信息区。下面我们看每一行信息的具体意义。
第一行: 任务队列信息
同 uptime 命令的执行结果,具体参数说明情况如下:
15:12:32
— 当前系统时间up 160 days, 1:07
— 系统已经运行了 160 天 1 小时 7 分钟(在这期间系统没有重启过的吆!)1 users
— 当前有1个用户登录系统load average: 1.15, 1.42, 1.44
load average 后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
load average
数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
第二行: Tasks — 任务(进程)
具体信息说明如下:
系统现在共有183
个进程,其中1个运行中,182
个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
第三行: cpu状态信息
具体属性说明如下:
0.5% us
— 用户空间占用CPU的百分比。
0.3% sy
— 内核空间占用CPU的百分比。
0.0% ni
— 改变过优先级的进程占用CPU的百分比
99.2% id
— 空闲CPU百分比
0.0% wa
— IO等待占用CPU的百分比
0.0% hi
— 硬中断(Hardware IRQ)占用CPU的百分比
0.2% si
— 软中断(Software Interrupts)占用CPU的百分比
备注:在这里CPU的使用比率和windows概念不同,需要理解linux系统用户空间和内核空间的相关知识!
第四行: 内存状态
具体信息如下:
7444.8 total — 物理内存总量(单位: MB)
268.2 free — 使用中的内存总量(单位: MB)
6259.8 used — 空闲内存总量(单位: MB)
916.7 buff/cache — 缓存的内存量(单位: MB)
32949016k total — 物理内存总量(32GB)
14411180k used — 使用中的内存总量(14GB)
18537836k free — 空闲内存总量(18GB)
169884k buffers — 缓存的内存量 (169M)
第五行,swap交换分区信息
具体信息说明如下:
32764556k total — 交换区总量(32GB)
0k used — 使用的交换区总量(0K)
32764556k free — 空闲交换区总量(32GB)
3612636k cached — 缓冲的交换区总量(3.6GB)
备注:
第四行: 使用中的内存总量(used)
使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached,按这个公式此台服务器的可用内存:18537836k +169884k +3612636k = 22GB左右。
对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
第六行: 空行
第七行 各进程(任务)的状态监控
项目列信息说明如下:
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
交互命令
- 按键盘数字“1”,可监控每个逻辑CPU的状况:
- 进程字段排序
默认进入top时,各进程是按照CPU的占用量来排序的
敲击键盘“x”(打开/关闭排序列的加亮效果
通过shift + >
或shift + <
可以向右或左改变排序列
其他命令
h 显示帮助画面,给出一些简短的命令总结说明
k 终止一个进程。
i 忽略闲置和僵死进程。这是一个开关式命令。
q 退出程序
r 重新安排一个进程的优先级别
S 切换到累计模式
s 改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s
f或者F 从当前显示中添加或者删除项目
o或者O 改变显示项目的顺序
l 切换显示平均负载和启动时间信息
m 切换显示内存信息
t 切换显示进程和CPU状态信息
c 切换显示命令名称和完整命令行
M 根据驻留内存大小进行排序
P 根据CPU使用百分比大小进行排序
T 根据时间/累计时间进行排序
W 将当前设置写入~/.toprc文件中
有参考 https://www.cnblogs.com/peida/archive/2012/12/24/2831353.html
Atop
atop是一个功能非常强大的linux服务器监控工具,它的数据采集主要包括:CPU、内存、磁盘、网络、进程等,并且内容非常的详细,特别是当那一部分存在压力它会以特殊的颜色进行展示,如果颜色是红色那么说明已经非常严重了。
注意:所有的信息都是反映过去10S的状态信息
atop
列出了服务器的host、当前时间、信息收集的频率
PRC
该列展示整个系统的性能状况;
sys:过去10s所有的进程在内核态运行的时间总和
usr:过去10s所有的进程在用户态的运行时间总和
#proc:进程总数
#trun:过去10s转换的进程数
#zombie:过去10s僵死进程的数量
#exit:在10s采样周期期间退出的进程数量
CPU
cpu列展示了服务器的CPU整体的一个状态信息,包括内核和用户所占的比例、处理中断所占的比例、CPU的处于空闲下比例(这里是100%*cpu核心数,CPU有时候也会因为由于磁盘性能问题出现等待的空闲)
sys
在处理进程时处于内核态的时间所占的比例usr在处理进程时处于用户态的时间所占的比例
irq在处理进程的中断请求所占的实际比例
idle处于空闲状态下的时间比例(除了本身空闲,还有比如等待磁盘io的情况下也会处于空闲状态)
cpu:每个核心的状态信息,和总的CPU信息一样,每列加起来的总和就是总的CPU的状态信息。
CPL
cpl也反应了服务器整体的性能,展示信息包括进程等待队列数,分别从过去1分钟、5分钟、15分钟的采样信息。
avg1:过去1分钟进程等待队列数
avg5:过去5分钟进程等待队列数
avg15:过去15分钟进程等待队列数
csw(context swapping):上下文交换次数
intr(interrupt):中断发生的次数
numcpu
mem:该列主要展示内存的使用信息。
tot:物理内存总量
free:空闲内存的大小(不能单单从这个字段就判断内存不足,还需要参考free -m中的-/+ buffers/cache
cache:用于页缓存的内存大小
dirty:内存中的脏页大小
buff:用于文件缓存的内存大小
slab:系统内核占用的内存大小
SWP
交换空间使用情况
tot:交换空间总量
free:交换空间剩余空间总量
PAG
虚拟内存分页情况
swin:换入内存页数
swout:换出内存页数
LVM/DSK:每个分区信息以一列来进行展示
busy:磁盘忙时所占比例
read、KiB/r 、MBr/s:每秒读的请求数和请求的kb、mb数
write、KiB/w 、MBr/w:每秒写的请求数和请求的kb、mb数
avq:磁盘平均队列长度(根据实际的监控该列好像是磁盘平均请求数avgrq)
avio:磁盘的平均io时间
NET
展示了传输层(TCP/UDP)、网络层(ip)、网络接口的网络传输信息。
transport:传输层(TCP/UDP)的数据输入输出的展示,例如在服务器的内部进程之间的数据传输就是在传输层展示,以为还不需要往下通过网络进行传输。
network:网络层(ip)的数据输入输出的展示;
eth0:默认的网络接口的数据输入输出的展示,也就是通过etho的ip的数据传输的展示,
sp:网卡的带宽(1000M)
pcki:传入的数据包的大小
pcko:传出的数据包的大小
si:每秒传入的数据大小
so:每秒传出的数据大小
coll(collisions):每秒的冲突数
mlti(MULTICAST):每秒的多路广播的数量
erri/erro:每秒输入输出的错误数
drpi/drpo:每秒的输入输出的丢包数
lo:通过127.0.0.1网络接口的数据传输的数据展示,参数和上面的eth0是一样的
进程列
m模式:内存状态模式
SYSCPU:过去10s内进程处于内核模式占用的CPU时间
USRCPU:过去10S进程处于用户模式占用的CPU时间
VSIZE:过去10S进程占用的虚拟空间大小
RSIZE:过去10S进程占用的内存空间大小
PSIZE:过去10S进程占用的页大小
VGROW:过去10S进程增长的虚拟空间大小
RGROW:过去10S进程增长的内存大小
SWAPSZ:过去10S进程使用交换空间的大小。
MEM:过去10S进程占用内存百分比
d模式:磁盘状态模式
RDDSK:过去10S进程读磁盘的数据量
WRDSK:过去10S进程写磁盘的数据量
DSK:过去10S进程所占磁盘的百分比
CMD:进程名
p模式:进程状态模式,同一个名称的进程显示一列,根据进程名进行分组显示
NPROCS:相同名称的进程数量
其它的参数上面已经有列出
v模式:线程状态模式
u模式:用户模式
根据用户进行分组显示
g模式:标准模式
s:进程当前的状态,包括:s(sleeping),R(runing)等
检测历史监控记录
/var/log/atop:atop日志文件,默认是每天0点开始会产生当天的一个日志文件,
然后可以通过atop -r file 查看信息,但是没有找到自动播放的的功能,只能通过输入b显示一个指定的时间的信息,可以写个循环来实现
atop -r /var/log/atop/atop_20220823 -b 13:00 -e 17:00