程序员大本营 加入小组

519个成员 1423个话题 创建时间:2011-10-16

linux下面vmstat 命令主要用法

发表于 2011-11-06 4470 次查看

很多人经常用 top 命令来查看系统的LOAD状况,但是 这个不一定准确,因为老的操作系统版本针对于多核支持性并不是那么好,所以很多时候TOP查看出来的并不准确,当然用vmstat  就是可以了

vmstat介绍及用途

通过STATSPACK收集服务器信息,主要通过收集VMSTAT的信息来展现服务器状况。VMSTAT工具是最常见的UNIX监控工具,可以展现给定时间间隔的服务器的状态值。主要用来报告虚拟内存的统计信息

语法

vmstat [ -f ] [ -i ] [ -s ] [ -I ] [ -t ] [ -v ] [ PhysicalVolume ... ] [ Interval [ Count ] ]

一般VMSTAT工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数

我们每一秒看下状况

看下情况发现 目前系统空闲率基本是100%

对于服务器监控有用处的度量主要有:
r(运行队列)

pi(页导入)

us(用户CPU)

sy(系统CPU)

id(空闲)
(如果r经常大于4 ,且id经常少于40,表示cpu的负荷很重。)

(如果bi,bo 长期不等于0,表示内存不足)

当然通过VMSTAT也可以识别CPU瓶颈
r(运行队列)展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现CPU瓶颈了

获取CPU的个数

针对于LINUX环境截图如下:

当然针对像AIX的一些小型机 就是用

prtconf 来获取了

如果当r值超过了CPU个数,就会出现CPU瓶颈,解决办法大体几种:

1.找出消耗CPU增长的原因 比如NFS的压力 中间件设置不当

2. 最简单的就是增加CPU个数(一般小型机方便增加)

3.调正任务的优先级 

4.调整下任务的执行时间,主要是为了平衡任务从而降低CPU的压力

通过VMSTAT识别CPU满负荷

一般情况是你几个CPU的占用都达到100% 算是满负荷的状态,LINUX本身的机制是让CPU尽可能繁忙,达到高的吞吐量的,这个基本还是需要看队列的状况

通过VMSTAT识别RAM频颈


当内存的需求大于RAM的数量,服务器启动了虚拟内存机制,通过虚拟内存,可以将RAM段移到SWAP DISK的特殊磁盘段上,这样会 出现虚拟内存的页导出和页导入现象,页导出并不能说明RAM瓶颈,虚拟内存系统经常会对内存段进行页导出,但页导入操作就表明了服务器需要更多的内存了, 页导入需要从SWAP DISK上将内存段复制回RAM,导致服务器速度变慢。

解决办法:

1.加大RAM

2.识别出是否中间件或者程序有内存泄漏

3.查看那个进程占用比较高的内存

通过以下命令查看:(找出消耗内存最多的前10名进程)

[superme@PC_stmhtest01 ~]$ ps -auxf | sort -nr -k 4 | head -10


vmstat 一般LINUX操作系统内存,至于有些人说用额外的HTOP这些命令 都是需要安装包的不建议采用



2回复
  • 2楼 kent 2011-11-14

      这个工具,对于分析系统作用还是不小的。

  • 3楼 myth 2011-11-14

    据我的经验判断 如果一个队列单纯占用 50% 以上 肯定是有问题的 ,而且当用

    free -t 

    发现free  列少于3% 也是肯定有问题的 

    大家可以通过swapon -s 可以看出页的上下文交换

发表回复
功能维护升级中,维护完成完后将再次开放,非常抱歉给您学习造成的不便。