Vmstat 命令详细介绍
前几天观察系统的负载状况,其中用到vmstat命令查看内存的使用情况
P560Q:/> vmstat 5 5
System Configuration: lcpu=4 mem=7744MB
kthr memory page faults cpu
----- ----------- ------------------------ ------------ -----------
r b avm fre re pi po fr sr cy in sy cs us sy id wa
1 1 1254534 120 0 5 6 51 231 0 840 6671 888 7 1 90 2
3 1 1254430 100 0 1 171 2763 4149 0 927 7419 686 72 3 16 9
3 1 1254430 100 0 0 221 2540 4750 0 875 7151 665 73 3 15 9
3 1 1254430 128 0 0 90 2760 4496 0 833 7010 639 73 3 16 8
3 1 1254430 100 0 0 102 2427 3649 0 813 7575 652 73 3 15 9
r=3,wait在8-9之间,block=1 fre<120,此时系统正好在跑大量的报表数据,用topas查看,系统现在读写很频繁
P560Q:/> vmstat 5 5
System Configuration: lcpu=4 mem=7744MB
kthr memory page faults cpu
----- ----------- ------------------------ ------------ -----------
r b avm fre re pi po fr sr cy in sy cs us sy id wa
1 1 1219016 6092 0 5 6 51 231 0 840 6670 888 7 1 90 2
1 0 1219020 6078 0 0 0 0 0 0 540 4208 83 24 1 75 0
1 0 1219020 6072 0 0 0 0 0 0 542 4288 90 24 1 75 0
1 0 1219020 6066 0 0 0 0 0 0 540 4174 82 24 1 75 0
1 0 1219020 6066 0 0 0 0 0 0 539 4226 81 24 1 75 0
20分钟后再次用vmstat,r=1,fre>6000,wait=0,此时报表已经跑完,系统负载较低
下面是关于vmstat命令的详细介绍,收录在这里,以备日后参考
vmstat 是用来实时查看内存使用情况,反映的情况比用top直观一些. 作为一个 CPU 监视器,vmstat 命令比 iostat 命令优先级要高,因为 vmstat 命令是滚动的,使得它的每报告一行的输出更容易扫描,并且如果有很多磁盘连接到系统中,由此所引起的开销更少。
如果直接使用,只能得到当前的情况,最好用个时间间隔来采集vmstat T 其中T用具体的时间标示,单位是
Vmstat 命令详细解释
kthr--内核进程的状态
--r 运行队列中的进程数,在一个稳定的工作量下,应该少于5
--b 等待队列中的进程数(等待I/O),通常情况下是接近0的.
memory--虚拟和真实内存的使用信息
--avm 活动虚拟页面,在进程运行中分配到工作段的页面空间数.
--fre 空闲列表的数量.一般不少于120,当fre少于120时,系统开始自动的kill进程去释放
page--页面活动的信息
--re 页面i/o的列表
--pi 从页面输入的页(一般不大于5)
--po 输出到页面的页
--fr 空闲的页面数(可替换的页面数)
--sr 通过页面置换算法搜索到的页面数
--cy 页面置换算法的时钟频率
faults--在取样间隔中的陷阱及中断数
--in 设备中断
--sy 系统调用中断
--cs 内核进程前后交换中断
cpu--cpu的使用率
--us 用户进程的时间
--sy 系统进程的时间
--id cpu空闲的时间
--wa 等待i/o的时间
一般us+sy 在单用户系统中不大于90,在多用户系统中不大于80.
wa时间一般不大于40.
其中:
如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。
如果pi,po 长期不等于0,表示内存不足。
如果b中的队列 大于3, 表示 io性能不好。
更具体的参数说明
CPU 统计信息在设备中断负载很高的系统上会有一定程度的失真。这种情况是因为该工具是对定时器中断采样。定时器是优先级最低的设备,所以它很容易被其它中断抢先。为了消除失真,当操作系统版本晚于 AIX 4.3.3 时, 采用了一种不同的方法来对定时器进行采样。
注:对对称多处理系统 us、sy、id 和 wa 几列只是对各处理器求平均值(sar 命令可以报告每个处理器的统计信息)。一个 I/O 等待和空闲时间 只能从未决 I/O 的状态来区分。如果有一个未决磁盘 I/O,并且处理器不忙,那么这是一个 I/O 等待时间。AIX 4.3.3 和其后的系统中用一个增强的方法来计算花费在磁盘 I/O 上的 CPU 时间(wio 时间)所占的百分比。
在最佳使用时,CPU 在 100% 的时间中都在工作。在单用户系统中更是这样,这里不需要共享 CPU。总的来说,如果 us + sy 时间低于 90%,则不认为该单用户系统 CPU 受限制。但是,如果在一个多用户系统中 us + sy时间超过 80%,其中的进程将要花时间在运行队列中等待。响应时间和吞吐量会受损害。要检查 CPU 是否是瓶颈,考虑 vmstat 报告中的四个 cpu 列和两个 kthr (内核线程)列,也应该查看 faults 列。cpu列 在该时间间隔内使用 CPU 时间的百分比细分。cpu 列如下:
us 参数
us 列显示了用户模式所消耗的 CPU 时间。一个 UNIX 进程可以在用户模式下执行,也可以在系统(内核)模式下执行。当在用户模式下执行时,进程在它自己的应用程序代码中之行,不需要内核资源来进行计算、管理内存或设置变量。
sy 参数
sy 列详细显示了 CPU 在系统模式下执行一个线程所花时间的百分比。包括内核进程(kprocs )和其它需要访问内核资源的进程所消耗的 CPU 资源。如果一个进程需要内核资源,它必须执行一个系统调用,并因此被切换到系统模式从而可以使用该资源。例如,对一个文件的读或写操作需要内核资源来打开文件、寻找指定的位置和读写数据,除非使用内存映射文件。
id 参数
id 列显示了没有未决本地磁盘 I/O 时 CPU 空闲或等待时间的百分比。如果没有线程可以执行(运行队列为空)系统调度一个叫做 wait 的线程,也就是 idlekproc 。在一个对称多处理系统中,每个处理器都有一个 wait 线程可调度。由 ps 命令(带有 -k 或 -g 0 选项)将它确定为 kproc 或 wait。如果报告中 ps 显示这个线程的总计时间高,这表明存在显著的时期,没有其它线程在这个 CPU 上准备运行或等待执行。系统因此大部分时间或任务空闲和等待 新任务。
如果没有未决 I/O,所有用于等待的时间归入空闲时间中。在4.3.2版或更早的操作系统中,访问远程磁盘(安装 NFS 磁盘)被当作空闲时间(有少量 sy 时间来执行 NFS 请求),因为没有对本地磁盘的未决 I/O 请求。在 AIX 4.3.3 和以后的系统中,NFS 通过缓冲区高速缓存,在这些例程中的等待被放入 wa 中统计。
wa 参数
wa 列详细显示了有未决本地磁盘 I/O 时 CPU 空闲的时间百分比(在 AIX 4.3.3 和以后版本的系统中,对安装了NFS 的磁盘也是这样)。如果当等待正在运行时至少有一个未完成的磁盘 I/O,该时间归入等待 I/O 的时间。除非该进程使用异步 I/O,否则对磁盘的 I/O 请求使调用线程被阻塞(或睡眠)直到请求被完成。一旦进程的 I/O 请求完成,该进程被放入运行队列中。如果 I/O 很快完成,该进程可以使用更多的 CPU 时间。wa 的值如果超过 25%,就表明磁盘子系统可能没有被正确平衡,或者这也可能是磁盘工作负荷很重的结果。
Kthr 列 每秒钟在采样间隔上对各种队列中的内核线程数求得的平均值。kthr 列如下:
r 参数
可运行的内核线程平均数目,包括正在运行的线程和等待 CPU 的线程。如果这个数字大于 CPU 的数目,至少有一个线程要等待 CPU,等待 CPU 的线程越多,越有可能对性能产生影响。
b 参数
每秒 VMM 等待队列中的内核线程平均数。包括正在等待文件系统 I/O 的线程,或由于内存装入控制而被挂起的线程。如果进程由于内存装入控制而被挂起,在 vmstat 报告中的阻塞列(b)表明线程数目增加,而不是运行队列中线程数目增加。
p 参数
对与 vmstat -I ,是每秒等待原始设备 I/O 的线程数目。等待文件系统 I/O 的线程不包括在这里。
faults 列 关于进程控制的信息,如陷阱和中断率。faults 列如下:
in 参数
在该时间间隔中观测到的每秒设备中断数。额外信息可见用 vmstat 命令评估磁盘性能。
sy 参数
在该时间间隔中观测到的每秒系统调用次数。通过明确的系统调用,用户进程可以使用资源。这些调用命令内核为调用线程执行操作,并在内核和该进程之间交换数据。因为,工作负荷和应用程序变化很大,不同的调用
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10159839/viewspace-166568/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10159839/viewspace-166568/