(转)vmstat详解

对于CPU的使用情况,可以通过vmstat命令查看:

#vmstat 1 5 每个一秒显示一次,共显示10次系统状况。

System Configuration: lcpu=16 mem=31488MB

kthr   memory                 page                    faults         cpu

----- ----------- ------------------------ ------------ -----------

r b     avm fre        re pi po fr sr cy in            sy cs    us sy id wa

4 2 3127273 3272 0  4  8  338 937 0 2357 22962 1561 13 1 83 3

其中各项含义如下。

kthr:内核线程状态在采样间隔期间每秒钟更改一次。

r:当前在队列中等待执行的线程数,如果这个数值经常非常大(例如达到2~5倍以上的CPU数),就说明系统中等待执行的线程比较多,可能存在性能问题。注意,对于大型应用系统,需要执行的线程非常多,所以等待队列中经常有个位数的数字是很正常的情况,并不是说只有等待队列永远是0,才说明系统的CPU满足了要求,实际上0等待队列一般说明发生了“大马拉小车”的情况。
b:当前队列中处于等待状态的线程,由于IO(存储、网络)操作未完成,无法继续执行,必须挂起,此时CPU可以切换到另外一个线程操作。显然,如果有很多(大于2~5倍CPU数)线程处于b状态,系统就可能有IO瓶颈。

内存:关于使用虚拟内存和实内存的信息。如果虚拟页已经被访问的话,虚拟页可以被认为是活动的。一页为 4096 个字节。

avm:Active Memory,而不是available memory!这是经常被理解错误的一项,它等于当前使用的物理内存和使用的交换区的总和减去作为文件系统缓存的物理内存,单位为4KB,即一个内存页。
fre:空闲的物理内存,单位为4KB。
pi:在vmstat两次检查间隔期间,系统将磁盘交换区读回物理内存页的数量。通常多是内存不够的表现。
po:在vmstat两次检查间隔期间,系统将物理内存页交换到磁盘的数量。越多代表系统内存越紧张,但偶尔出现的pi, po并不能说明任何问题,而且通常系统大量文件操作(例如文件系统备份/恢复,tar操作等),往往伴随着大量的pi, po,这都是正常现象。

:关于缺页故障和调页活动的信息。这些是间隔的平均值,以秒为单位给出。

re:pi/po,数值长期趋近于1,并且pi, po都很大,说明系统可能有thrash(抖动)的现象,即刚交换出去的内存马上又需要使用,必须交换回来,物理内存可能严重不足。
fr:代表在此段时间内,有多少不使用的物理内存被释放,可能是内存页被程序释放,也可能是已经将其内存交换到了磁盘。
sr:代表在此段时间内,由于有内存使用申请,而物理内存空闲不足,进行有多内存页搜索被检查的页数。此数值越大,代表内存申请越多,也就是内存需要量比较大。
cy:进行内存搜索、清理消耗的时钟周期,此数值越大,说明内存越紧张,操作系统用了过多的时间进行内存清理。当然,也有可能系统内的程序调度(起/停)过于频繁。无论如何,cy多大都说明当前内存使用、管理方面需要仔细分析。

故障:采样间隔平均每秒的捕获和中断率。

in:中断次数,在此段时间内由各种不同原因产生的中断次数,中断的原因可能是CPU处理时间片到期、设备IO产生中断等。vmstat –i可以查看更详细的关于中断的信息
cs:上下文切换,对于一个CPU,当正在执行的线程与即将执行的线程不是同一个的时候,就会产生一个cs(Content Switch)。有三种情况会导致cs:当前线程等待资源(磁盘/网络IO完成),线程自己要求sleep或等待资源解锁;更高优先等级线程要求CPU;此线程用尽了10ms时间片。由于自然情况下,每CPU可以产生100次线程切换(10ms一次),所以cs次数除以vmstat的间隔时间,再除以CPU个数可以用来判断系统繁忙的指标之一,这个数字如果远远高于100(通常是10~20倍以内的比例,即每个CPU对应1000~2000次cs都算正常),则可能有CPU瓶颈。对于最新的P5、P6系列CPU,由于支持SMT,一个物理CPU同时支持2个线程,则可以考虑再除2或1.5,以进行合理的判断。
sy:(在faults区的sy)此时间段内系统调用次数,用户程序执行过程中发出系统执行调用申请,以便普通用户请求核心操作,例如进行磁盘IO等操作。

Cpu:CPU 使用时间故障百分比。

us:系统中用户操作所占CPU时间百分比。
sy:(在cpu区的sy)系统中系统调用所占CPU时间百分比。
id:系统中CPU的空闲时间百分比。
wa:系统等待磁盘IO所占时间百分比(此时CPU闲置)。

在进行了CPU共享(需要POWER 5、6机型,并购买微分区功能才支持)的机器上,还有另外两项,pc和ec,pc代表实际分配给此分区的CPU数量(可能是小数,以1%为单位),而ec代表授权此分区使用CPU的数量与实际使用的比例(超出100时说明当前分区临时抢占使用了超过了指派给它的CPU资源)。

 

 ===============================================================

===================================================================

在Load average 高的情况下如何鉴别系统瓶颈。是CPU不足,还是io不够快造成? 或是内存不足? 

一:查看系统负载vmstat 

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------

 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

 0  0      0 496056 889316 4065748    0    0     9    41   55   51  0  0 99  1  0

1 : procs 

procs 

 r  b

 0  0

r :运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。 

b :在等待资源的进程数,比如正在等待I/O、或者内存交换等。 

2 : memory 

-----------memory----------

swpd   free   buff  cache  

 0    496056 889316 4065748

swpd :切换到内存交换区的内存数量(k表示)。 

       如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常 

free :当前的空闲页面列表中内存数量(k表示) 

buff :作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。 

cache :作为page cache的内存数量,一般作为文件系统的cache, 

        如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。 

3 : swap 

---swap--

 si   so

 0    0 

si :由内存进入内存交换区数量。 

so :由内存交换区进入内存数量。 

4 : IO 

-----io----

 bi    bo 

 9    41

bi :从块设备读入数据的总量(读磁盘)(每秒kb)。 

bo :块设备写入数据的总量(写磁盘)(每秒kb) 

这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。 

5 : system 显示采集间隔内发生的中断数 

--system--

 in   cs

 55   51

in  :在某一时间间隔中观测到的每秒设备中断数。 

cs :每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。 

6 : cpu 表示cpu的使用状态 

 -----cpu------

cs us sy id wa st

51 0  0  99 1  0

us :用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。 

sy :内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。 

wa  :IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重, 

      这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。 

id :cpu处在空闲状态的时间百分比 

猜你喜欢

转载自cjb.iteye.com/blog/2310797
今日推荐