实时动态地查看系统的整体运行情况,两个命令都是查看运行状况,但是htop更加易用,top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.
top视图分为两部分:操作系统资源概况信息和进程信息。首先分析资源概况中各个参数的含义,再来分析下进程信息中各个参数含义。
up 2:02 系统运行时间,格式为时:分
1 users 当前登录用户数
load average: 0.00, 0.01, 0.05 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值
total: 系统当前的进程数
running: 当前正在运行的进程数
sleeping 当前睡眠中的进程数
us: 用户空间占用CPU时间百分比,如果是多核,这个数值表示占用的平均百分比,可以按1进行多核统计和平均统计切换
sy: 内核空间占用CPU时间百分比,如果是多核,同上
ni 用户进程空间内改变过优先级的进程占用CPU时间百分比
id: 空闲时间占用CPU百分比
wa: 等待输入输出的CPU时间百分比
hi: CPU服务于硬件中断的CPU时间百分比
si: CPU服务于软件中断的CPU时间百分比
注:时间占用百分比=该种类型操作消耗CPU时间/top刷新间隔时间。top 3s刷新一次,用户空间进程在这3s内使用了CPU 1.5s,那么us等于50%=1.5s/3s
total: 内存总量
free: 剩余的内存数量
used: 内存使用数量
buff/cache: 用于缓冲的内存数量
total: 交换区总量
free: 空闲的交换区数量
used: 使用的交换区数量
进程概况的统计从多维度参数进行展示的,其中最重要的参数:
PID 进程ID,唯一标识
USER 进程所属用户
%CPU 自上一次top刷新该进程占用CPU的时间百分比
%MEM 进程消耗内存百分比
TIME+ 自进程开始以来,消耗CPU时间,单位1/100秒
交互命令:在执行top命令的视图中,执行特定命令与结果视图进行交互
全局:
按键 | 说明 |
---|---|
Enter/space | 刷新视图 |
h | 帮助信息,查询各个交互式命令的含义 |
0 | 是否展示在进程区域中的0值,比如%CPU是0的将全部隐藏 |
A | 在全屏模式和多窗口选择模式之间切换 |
d | 设置刷新的时间间隔 |
E | 切换内存和交换区单位 |
H | 开启/关闭线程模式,以线程的方式展示 |
k | kill掉指定进程或者线程 |
Z | 改变颜色配置 |
q | 退出 |
概要区域
按键 | 说明 |
---|---|
1 | 显示CPU平均状态/分开显示各个逻辑CPU状态 |
m | 切换显示内存统计的数据 |
进程区域
按键 | 说明 |
---|---|
x | 切换高亮行的排序位置 |
z | 切换颜色 |
b | 块状标记高亮行 |
c | 切换显示命令/程序名和参数 |
f | 显示field管理 |
u | 按照指定用户显示进程 |
i | 显示所有进程或者活跃的进程 |
n | 设置显示的进程数 |
iostat 命令主要通过观察物理磁盘的活动时间以及他们的平均传输速度,监控系统输入 / 输出设备负载。
根据 iostat 命令产生的报告,用户可确定一个系统配置是否平衡,并据此在物理磁盘与适配器之间更好地平衡输入 / 输出负载。iostat 工具的主要目的是通过监控磁盘的利用率,而探测到系统中的 I/O 瓶颈。不同操作系统命令格式输出格式略有不同,管理员可以通过查看用户手册来确定它的用法。
iostat [参数] [时间] [次数]
参数 | 说明 |
---|---|
-c | 显示CPU使用情况 |
-d | 显示磁盘使用情况 |
-k | 以K为单位显示 |
-m | 以M为单位显示 |
-N | 显示磁盘阵列(LVM) 信息 |
-n | 显示NFS使用情况 |
-p | 可以报告出每块磁盘的每个分区的使用情况 |
-t | 显示终端和CPU的信息 |
-x | 显示详细信息 |
最后,除了关注指标外,我们更需要结合部署的业务进行分析。对于磁盘随机读写频繁的业务,比如图片存取、数据库、邮件服务器等,此类业务吗,tps才是关键点。对于顺序读写频繁的业务,需要传输大块数据的,如视频点播、文件同步,关注的是磁盘的吞吐量。
[root@localhost ~]# iostat -x #显示详细信息
%user:CPU处在用户模式下的时间百分比
%nice:CPU处在带NICE值的用户模式下的时间百分比
%system:CPU处在系统模式下的时间百分比
%iowait:CPU等待输入输出完成时间的百分比
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比
%idle:CPU空闲时间百分比
当然了,iostat命令的重点不是用来看CPU的,重点是用来监测磁盘性能的。
Device:设备名称
rrqm/s:每秒合并到设备的读取请求数
wrqm/s:每秒合并到设备的写请求数
r/s:每秒向磁盘发起的读操作数
w/s:每秒向磁盘发起的写操作数
rkB/s:每秒读K字节数
wkB/s:每秒写K字节数
avgrq-sz:平均每次设备I/O操作的数据大小
avgqu-sz:平均I/O队列长度
await:平均每次设备I/O操作的等待时间 (毫秒),一般地,系统I/O响应时间应该低于5ms,如果大于 10ms就比较大了
r_await:每个读操作平均所需的时间;不仅包括硬盘设备读操作的时间,还包括了在kernel队列中等待的时间
w_await:每个写操作平均所需的时间;不仅包括硬盘设备写操作的时间,还包括了在kernel队列中等待的时间
svctm:平均每次设备I/O操作的服务时间 (毫秒)(这个数据不可信!)
%util:一秒中有百分之多少的时间用于I/O操作,即被IO消耗的CPU百分比,一般地,如果该参数是100%表示设备已经接近满负荷运行了
[root@localhost ~]# iostat -d 2 3 #每隔2秒显示一次IO信息,显示3次
tps:每秒I/O数(即IOPS。磁盘连续读和连续写之和)
kB_read/s:每秒从磁盘读取数据大小,单位KB/s
kB_wrtn/s:每秒写入磁盘的数据的大小,单位KB/s
kB_read:从磁盘读出的数据总数,单位KB
kB_wrtn:写入磁盘的的数据总数,单位KB
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写, 是实时系统监控工具。该命令通过使用knlist子程序和/dev/kmen伪设备驱动器访问这些数据,输出信息直接打印在屏幕。vmstat反馈的与CPU相关的信息包括:
(1)多少任务在运行
(2)CPU使用的情况
(3)CPU收到多少中断
(4)发生多少上下文切换
参数 | 说明 |
---|---|
-a, --active | 显示活跃和非活跃内存 |
-f, --forks | 显示从系统启动至今的fork数量 |
-m, --slabs | 显示slabinfo |
-n, --one-header | 只在开始时显示一次字段名称 |
-s, --stats | 显示内存相关的统计信息及多种系统活动数量 |
-d, --disk | 显示磁盘相关统计信息 |
-D, --disk-sum | 显示磁盘的总计信息 |
-p, --partition < dev > | 显示指定磁盘分区统计信息 |
-S, --unit < char > | 使用指定单位显示。参数有 k 、K 、m 、M |
-w, --wide | 更宽的显示信息 |
-t, --timestamp | 显示时间 |
proces 进程:
r: 运行队列中进程数量
b: 等待IO的进程数量
memory内存:
swpd: 使用虚拟内存大小
free: 可用内存大小
buff: 用作缓冲的内存大小
cache: 用作缓存的内存大小
swap:
si: 每秒从交换区写到内存的大小
so: 每秒写入交换区的内存大小
IO:
bi: 每秒读取的块数
bo: 每秒写入的块数
system 系统:
in:每秒中断数,包括时钟中断
cs:每秒上下文切换数
cpu百分比表示:
us: 用户进程执行时间(user time)
sy: 系统进程执行时间(system time)
id: 空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示。
wa: 等待IO时间
st:Steal time 虚拟 CPU 等待实际 CPU 的时间的百分比
inact: 非活跃内存大小(当使用-a选项时显示)
active: 活跃的内存大小(当使用-a选项时显示)
这些信息主要来自于/proc/diskstats.
merged:表示一次来自于合并的写/读请求,一般系统会把多个连接/邻近的读/写请求合并到一起来操作。
[root@localhost ~]#ps -auxf | sort -nr -k 4 | head -10