Linux命令之top命令详解

一、数据详解

首先说一下,这里将top命令展示的数据分为两部分来说,一部分是系统统计数据,另一部分是进程相关数据

在这里插入图片描述

1.1 系统统计数据

1.1.1 第一行

top - 23:02:41 up 20 days,  4:52,  1 user,  load average: 0.00, 0.04, 0.05
  • 23:02:41:表示当前时间
  • up 20 days, 4:52:表示系统运行时间,这里就是20天4小时52分钟(在这个期间没有重启过)
  • 1 user:当前系统登录用户数
  • 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的运行队列与系统负载

1.1.2 第二行

Tasks:  87 total,   1 running,  86 sleeping,   0 stopped,   0 zombie

第二行为进程的数据。这里表示总共87个进程、1个正在运行、86个正在休眠、0个停止、0个处于僵尸状态的。

关于进程状态,根据查阅资料来看,有三态模型五态模型两种分类方式。(1)三态模型:分为就绪、运行、阻塞三种状态。(2)五态模型:运行、可中断、不可中断、停止、被跟踪
在这里插入图片描述

参考链接:
进程的描述与控制 进程的状态和转换 三态模型和五态模型
操作系统:进程的三种状态
Linux中进程状态

1.1.3 第三行

%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操作、创建子进程...
  • ni:cpu运行(已调整优先级的)用户进程时间占比。
  • id:cpu处于空闲状态时间比例。
  • wa:CPU用于等待IO完成的CPU时间占比(当CPU发起读写操作时,需要等待磁盘驱动器将数据读入内存,从而导致CPU在等待的这一段时间无事可做)。
  • hi:处理硬件中断的CPU时间占比。
  • si:处理软件中断的CPU时间占比。
  • st:steal time,当数值一直特别大的时候,就可能是虚拟机被超卖了。

这一行的数据为cpu使用时间百分比。其中us、sy、wa、si是需要重点关注的数据。一般来说us>70%就高了,sy>30%就高了,wa>5%就高了

1.1.4 第四行

KiB Mem :  1881952 total,   121120 free,   708564 used,  1052268 buff/cache
  • total:物理内存总量
  • free:空闲内存总量(内核还未纳入其管控范围的数量)
  • used:使用中内存总量(系统内核控制的内存数)
  • buff/cache:缓冲(存)区内存量

纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。

  • buffer:缓冲区 用于写磁盘 将数据写到buffer缓冲区中,最后一次性写入
  • cache:缓存区 用于读磁盘 将读到的数据放到cache缓存区,后面再从缓存区中读

参考链接:
Linux中Buffer和Cache的区别
linux 操作系统中buffer 和 cache 的作用

1.1.5 第五行

KiB Swap:        0 total,        0 free,        0 used.  1009180 avail Mem
  • total:交换区总量
  • free:空闲交换区总量
  • used:使用的交换区总量
  • avail Mem:可用交换区总量

对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了

在性能监控分析中,对操作系统的物理内存的使用并不关注,在大部分场景下物理内存并没有成为我们的瓶颈点,但这并不是说在内存上就没有调优的空间了。

1.2 进程相关数据

在这里插入图片描述

  • 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时间,精确到百分之一秒。
  • COMMOND:运行进程所使用的命令。进程名称(命令名/命令行)

二、使用详解

参考链接:Linux命令大全——top命令

2.1 top命令参数选项

2.1.1 查看指定进程—— - p 进程号

top -p 进程号 :可以将进程数据中只显示指定进程号的数据

在这里插入图片描述

2.1.2 设置屏幕刷新时间—— - d 秒数

top -d 秒数 :默认情况下,top显示的数据1s刷新一次,通过-d参数可以设置刷新时间间隔

2.1.3 输出到文件—— -b>文件路径

[root@YFF home]# top -n 3 -b>/home/b.txt

在这里插入图片描述

2.1.4 其他相关命令参数

-b:以批处理模式操作;
-c:显示完整的治命令;
-d:屏幕刷新间隔时间;
-I:忽略失效过程;
-s:保密模式;
-S:累积模式;
-i<时间>:设置间隔时间;
-u<用户名>:指定用户名;
-p<进程号>:指定进程;
-n<次数>:循环显示的次数。

2.2 交互命令

2.2.1 显示进程绝对路径——c

top命令执行后,按下c键即可。会显示命令的名称及完整命令行
在这里插入图片描述

2.2.2 根据CPU使用率排序——P

top命令执行后,按下P键即可。
在这里插入图片描述

2.2.3 根据物理内存使用率排序——M

top命令执行后,按下M键即可。
在这里插入图片描述

2.2.4 显示每个核的CPU状况——1

top命令执行后,按下1键即可。
在这里插入图片描述
在这里插入图片描述

2.2.5 其他相关交互命令

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文件中。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章