首先说一下,这里将top命令展示的数据分为两部分来说,一部分是
系统统计数据
,另一部分是进程相关数据
。
top - 23:02:41 up 20 days, 4:52, 1 user, load average: 0.00, 0.04, 0.05
load average
: 0.00, 0.04, 0.05:表示系统过去1、5、15分钟内的平均负载。load average就是load的平均值,而load就是正在运行和准备运行的进程总数
,这里就表示一段时间内进程的数量。在这一行中,我们特别关注的数据是load average
。从网上看到两种说法。
(1)一种为load average / 逻辑cpu核数>5
时,系统就超负荷,常用来判断cpu性能优劣。
## 逻辑cpu个数
[root@YFF ~]# cat /proc/cpuinfo | grep 'processor' | wc -l
1
(2)另一种为load average显示的负载均值,只能作为判断系统过去某个时间段的状态的参照,与cpu的性能关系不大
。实际需要使用vmstat
命令显示的run值和blocked值,当出现明显较多的blocked的时候,就说明cpu产生了瓶颈
。
参考链接:
CPU核数和load average的关系
关于CPU的运行队列与系统负载
Tasks: 87 total, 1 running, 86 sleeping, 0 stopped, 0 zombie
第二行为进程
的数据。这里表示总共87个进程、1个正在运行、86个正在休眠、0个停止、0个处于僵尸状态的。
关于进程状态,根据查阅资料来看,有三态模型
和五态模型
两种分类方式。(1)三态模型:分为就绪、运行、阻塞
三种状态。(2)五态模型:运行、可中断、不可中断、停止、被跟踪
。
参考链接:
进程的描述与控制 进程的状态和转换 三态模型和五态模型
操作系统:进程的三种状态
Linux中进程状态
%Cpu(s): 0.7 us, 0.3 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
us
:cpu运行(未调整优先级的)用户进程
时间占比。常见的用户进程为Shells、数据库、web服务器....
。sy
:cpu运行内核进程
时间占比。常见的内核进程为分配内存、IO操作、创建子进程...
。用户进程
时间占比。wa
:CPU用于等待IO完成
的CPU时间占比(当CPU发起读写操作时,需要等待磁盘驱动器将数据读入内存,从而导致CPU在等待的这一段时间无事可做)。si
:处理软件中断
的CPU时间占比。这一行的数据为cpu使用时间百分比。其中us、sy、wa、si
是需要重点关注的数据。一般来说us>70%就高了,sy>30%就高了,wa>5%就高了
。
KiB Mem : 1881952 total, 121120 free, 708564 used, 1052268 buff/cache
纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
buffer
:缓冲区 用于写磁盘 将数据写到buffer缓冲区中,最后一次性写入cache
:缓存区 用于读磁盘 将读到的数据放到cache缓存区,后面再从缓存区中读参考链接:
Linux中Buffer和Cache的区别
linux 操作系统中buffer 和 cache 的作用
KiB Swap: 0 total, 0 free, 0 used. 1009180 avail Mem
对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了
。
在性能监控分析中,对操作系统的物理内存的使用并不关注,在大部分场景下物理内存并没有成为我们的瓶颈点,但这并不是说在内存上就没有调优的空间了。
VIRT
:进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES%CPU
:上次更新到现在的CPU时间占用百分比%MEM
:进程使用的可用物理内存百分比。参考链接:Linux命令大全——top命令
top -p 进程号 :可以将进程数据中只显示指定进程号的数据
top -d 秒数 :默认情况下,top显示的数据1s刷新一次,通过-d参数可以设置刷新时间间隔
[root@YFF home]# top -n 3 -b>/home/b.txt
-b:以批处理模式操作;
-c:显示完整的治命令;
-d:屏幕刷新间隔时间;
-I:忽略失效过程;
-s:保密模式;
-S:累积模式;
-i<时间>:设置间隔时间;
-u<用户名>:指定用户名;
-p<进程号>:指定进程;
-n<次数>:循环显示的次数。
top命令执行后,按下c
键即可。会显示命令的名称及完整命令行
h:显示帮助画面,给出一些简短的命令总结说明;
k:终止一个进程;
i:忽略闲置和僵死进程,这是一个开关式命令;
q:退出程序;
r:重新安排一个进程的优先级别;
S:切换到累计模式;
s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s;
f或者F:从当前显示中添加或者删除项目;
o或者O:改变显示项目的顺序;
l:切换显示平均负载和启动时间信息;
m:切换显示内存信息;
t:切换显示进程和CPU状态信息;
c:切换显示命令名称和完整命令行;
M:根据驻留内存大小进行排序;
P:根据CPU使用百分比大小进行排序;
T:根据时间/累计时间进行排序;
w:将当前设置写入~/.toprc文件中。