Vmstat 命令详细介绍

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=3wait8-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分钟后再次用vmstatr=1fre>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的负荷很重。
如果pipo 长期不等于0,表示内存不足。
如果b中的队列 大于3 表示 io性能不好。

 

更具体的参数说明

CPU 统计信息在设备中断负载很高的系统上会有一定程度的失真。这种情况是因为该工具是对定时器中断采样。定时器是优先级最低的设备,所以它很容易被其它中断抢先。为了消除失真,当操作系统版本晚于 AIX 4.3.3 , 采用了一种不同的方法来对定时器进行采样。

注:对对称多处理系统 ussyid 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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值