1.1 Aix vmstat命令解析
1.1.1 概述
vmstat
命令报告内核线程、虚拟内存、磁盘、
Traps
、
CPU
活动的统计数据。
AIX 4.3.2
和更早版本中使用的方法如下:在每个处理器的每一次时钟中断(每个处理器一秒钟
100
次),确定上一个
10
毫秒时间要归入四种类别(
usr/sys/wio/idle
)中的哪一个。如果在时钟中断的时候,
CPU
正忙于
usr
方式,那么
usr
将获取该时钟周期添加到其类别中。如果在时钟中断的时候,
CPU
正忙于内核方式,那么
sys
类别获取该时钟周期。如果
CPU
不忙的话,则检测是否有磁盘
I/O
正在进行。如果有任何正在进行的磁盘
I/ O
,则累加
wio
类别。如果没有磁盘
I/O
正在进行且
CPU
不忙,则
idle
类别获取该时钟周期。由于所有的空闲
CPU
都被归入
wio
类别,而不管正在等待
I/O
的线程数量,所以会产生夸大的
wio
时间报告。例如,只有一个
I/O
线程的系统可能会报告
90%
以上的
wio
时间,而不管它拥有的
CPU
数量。
sar
(
%wio
)、
vmstat
(
wa
)和
iostat
(
% iowait
)命令报告
wio
时间。
操作系统
AIX 4.3.3
及其更新版本使用的方法如下:如果一个未完成的
I/O
在空闲的
CPU
上启动,则操作系统
AIX 4.3.3
中的更改将只把该
CPU
标记成
wio
。当只有少量线程在进行
I/O
而系统其它部分是空闲的,此方法能报告低得多的
wio
时间。例如,一个有四个
CPU
和一个正在进行
I/O
的线程的系统将报告最多
25%
的
wio
时间。有
12
个
CPU
和一个正在进行
I/O
的线程的系统只报告最大为
8%
的
wio
时间。
NFS
客户机通过
VMM
读取/写入,
biods
在
VMM
中花费的等待
I/O
完成的时间现在报告为
I/O
等待时间。
1.1.2 vmstat 命令报告输出及其解析
# vmstat 1 3
System configuration: lcpu=8 mem=32000MB
kthr memory page faults cpu
----- ----------- ------------------------ ------------ -----------
r b avm fre re pi po fr sr cy in sy cs us sy id wa
2 0 3845546 16248 0 1 0 0 0 0 1299 25203 5285 40 3 57 0
1 0 3845572 16220 0 0 0 0 0 0 966 15702 4526 25 2 73 0
0 0 3845631 16159 0 0 0 0 0 0 1199 18302 4975 31 2 66 1
#
1.1.2.1 Kthr: kernel thread state(内核线程状态,表示每秒钟在采样间隔时间上对各种队列的内核线程数求得的平均值)
r
:
取样期间可运行的内核线程的平均数,包括正在运行的线程和指准备运行但尚在等待运行的进程。如果这个数字大于
CPU
的数据,至少有一个线程要等待
CPU
,等待
CPU
的线程越多,越有可能产生性能影响
b
:表示每秒
VMM
等待队列中的内核线程平均数
(
等待资源或
I/O)
,这里参考值为
2
,大于
2
表示被阻塞列线程数目太多。
1.1.2.2 Memory(包括虚拟内存和实际内存的信息)
avm
:
活动的虚拟页面
(Active virtual pages
,以
4k
为单位
),
该值较高并不意味着性能不好。记住,虚拟内存的概念是提供给我们寻址大于实内存容量的能力(一些在
RAM
内存中,而另一些在调页空间中)。但是如果虚拟内存远大于实内存,可能造成过度的页面调度,从而导致延时。如果
avm
小于
RAM
,那么当
RAM
中填满文件页时就会引起调页空间的页面调度。这种情况下,调整
minperm
、
maxperm
和
maxclient
的值可以减少调页空间的页面调度量。
fre
:
自由表
(free list)
的大小。真实内存的大部分被用作文件系统数据的缓存。因此,自由表(
free list
)的大小保持比较小并不稀奇。
1.1.2.3 Page:页面错误和分页活动的信息。此值为指定时间周期内每秒给定单位的平均值。
re
页面调度程序
(Pager)
输入输出列表
(input/output)
列表。
pi
表示每秒钟从
Paging Space
置换到内存的页数
,
调页空间是驻留在磁盘上的虚拟内存的一部分。当内存过量使用时,它用作溢出。调页空间由用于存储从实内存中窃取到的工作组页面的逻辑卷组成。当进程访问一个窃取页时,产生了一个缺页故障,这一页必须从调页空间读入内存。这里设置
pi
的参考值为
5,
大于
5
说明内存不足。
po
表示每秒钟从内存置换到
Paging Space
的页数
,
无论什么时候窃取工作存储器的一页,如果它仍未驻留在调页空间中或已被修改,那它会被写入调页空间。如果不被再次访问,它会留在页面调度设备中直到进程终止或放弃空间。如果包含在出故障页面中的后续地址引用导致缺页故障,那么这些页面将会由系统个别调进。当一个进程正常终止,任何分配给该进程的调页空间将被释放。
[如果这两列持续大于
5
,则系统的性能瓶颈很可能是内存不足,而导致交换频繁。]
fr
表示每秒钟页面置换算法释放的页数。当
VMM
页面替换例程扫描页面帧表(
Page Frame Table
,
PFT
)时,它使用一些条件选取要窃取的页面以插入到可用内存帧的空闲列表中。
sr
表示每秒钟页面置换算法检查的页数
,
页面替换算法在可以窃取足够的页面以满足页面替换线程的需要之前可能不得不扫描许多页面帧。
cy
页面置换算法所使用的时钟周期。即表示每秒页面替换代码扫描了
PFT
多少次。因为插入空闲列表可以不需要完全扫描
PFT
,并且因为所有的
vmstat
字段报告为整数,这一字段通常为
0
。
1.1.2.4 Faults 故障列:样例时间周期中,每秒陷阱(Trap )和中断率的平均值。
in
设备中断次数
,iostat
命令输出更有参考意义。
sy
系统调用次数
,
通过明确的系统调用,用户进程可以使用资源。这些调用指示内核执行调用线程的操作,并在内核和该进程之间交换数据。因为工作负载和应用程序变化很大,不同的调用执行不同的功能,所以不可能定义每秒钟有多少系统调用才算太多。这里设置参考值为
10000
,超过
10000
,用户需要注意。
cs
内核线程上下文交换
Kernel thread context switches.
[即时间片用完后,再轮到时的上下文计算,如果太高,则要仔细观察]
1.1.2.5 CPU:CPU 使用时间百分比细目分类
us
用户进程
CPU
占用
,
一个
UNIX
进程可以在用户方式下执行,也可以在系统(内核)方式下执行。当在用户方式下时,进程在它自己的应用程序代码中执行,不需要内核资源来进行计算、管理内存或设置变量。
sy
系统进程
CPU
占用
,
这包括内核进程(
kprocs
)和其它需要访问内核资源的进程所消耗的
CPU
资源。如果一个进程需要内核资源,它必须执行一个系统调用,并由此切换到系统方式从而使该资源可用。例如,对一个文件的读或写操作需要内核资源来打开文件、寻找特定的位置,以及读或写数据,除非使用内存映射文件。这里
us + sy
的参考值为
80%
,如果
us+sy
大于
80%
说明可能存在
CPU
不足。
id
系统空闲
CPU idle time
wa
表示
IO
等待时间,即系统等待未完成的
disk/NFS I/O
请求期间的
CPU
空闲时间
,
如果
us
与
sy
之和持续超过
90%
时,
CPU
出现了瓶颈。
如果
wa
长期很高
>50
,则表示
IO
太忙,具体看是应用
IO
多,还是交换分页多,如果是后者,则显示内存不足;如果是前者,则应关注应用的
IO
性能状况,优化应用与磁盘设备
pc
消耗物理处理器的数目。只在使用共享处理器运行的分区显示(只在微分区环境中显示)
ec
消耗授权容量的百分比。只在使用共享处理器运行的分区显示(只在微分区环境中显示)