性能测试中vmstat命令的常见使用。
vmstat是Linux中常用的一个命令,尤其是在进行性能测试时,使用该命令,往往能辅助我们进行性能问题定位。
我们先看一下这个命令执行得到的数据。
[root@xxx ~]# vmstat 1 10
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 486716 2798308 586292 636208    0    0     7     9    0    0  1  1 98  0  0	
 0  0 486716 2798300 586300 636212    0    0     0   140  381  714  1  0 99  0  0	
 0  0 486716 2798448 586300 636232    0    0     0    40  378  685  1  0 99  1  0	
 0  0 486716 2798448 586300 636236    0    0     0     0  316  595  0  0 100  0  0	
 0  0 486716 2797912 586300 636236    0    0     0     0  388  662  1  0 99  0  0	
 0  0 486716 2797780 586304 636236    0    0     0    36  432  693  1  0 99  0  0	
 0  0 486716 2797912 586304 636236    0    0     0     4  407  667  1  0 99  0  0	
 0  0 486716 2798076 586304 636236    0    0     0    40  384  685  0  0 100  0  0	
 0  0 486716 2798076 586304 636236    0    0     0    28  387  672  1  0 99  0  0	
 0  0 486716 2798076 586304 636236    0    0     0     0  408  703  1  0 99  0  0
一下子看到这么多数据,这些都代表什么意思呢。我们就来详细了解一下。
r 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。
b 表示阻塞的进程,这个不多说,进程阻塞。
swpd 虚拟内存已使用的大小。
free 空闲的物理内存的大小,就是还有多少物理内存没有被使用。
buff Linux/Unix系统的缓存。
cache cache直接用来记忆我们打开的文件,给文件做缓冲,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用,当空闲的内存不足时,这些缓存的内存便可以释放出来。
si 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用,这个值一般可以真实反映当前的内存是否是一个瓶颈。
so 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。
bi 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte
bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0
in 每秒CPU的中断次数,包括时间中断
cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。
us 用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。
sy 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。
id 空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。
wa 等待IO CPU时间。
st 显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比
vmstat 还可以对disk做很多的分析
vmstat
-d prints disk statistics
              -D prints disk table
              -p prints disk partition statistics
-d可以看到磁盘读写的统计分析情况
[root@xxxxxx ~]# vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
ram0       0      0       0       0      0      0       0       0      0      0
ram1       0      0       0       0      0      0       0       0      0      0
ram2       0      0       0       0      0      0       0       0      0      0
ram3       0      0       0       0      0      0       0       0      0      0
ram4       0      0       0       0      0      0       0       0      0      0
ram5       0      0       0       0      0      0       0       0      0      0
ram6       0      0       0       0      0      0       0       0      0      0
ram7       0      0       0       0      0      0       0       0      0      0
ram8       0      0       0       0      0      0       0       0      0      0
ram9       0      0       0       0      0      0       0       0      0      0
ram10      0      0       0       0      0      0       0       0      0      0
ram11      0      0       0       0      0      0       0       0      0      0
ram12      0      0       0       0      0      0       0       0      0      0
ram13      0      0       0       0      0      0       0       0      0      0
ram14      0      0       0       0      0      0       0       0      0      0
ram15      0      0       0       0      0      0       0       0      0      0
loop0      0      0       0       0      0      0       0       0      0      0
loop1      0      0       0       0      0      0       0       0      0      0
loop2      0      0       0       0      0      0       0       0      0      0
loop3      0      0       0       0      0      0       0       0      0      0
loop4      0      0       0       0      0      0       0       0      0      0
loop5      0      0       0       0      0      0       0       0      0      0
loop6      0      0       0       0      0      0       0       0      0      0
loop7      0      0       0       0      0      0       0       0      0      0
sr0       74     31     420     110      0      0       0       0      0      0
vda   414443  55553 18904174 1090533 35245086 17395288 369987052 50346547      0  21164
dm-0   13839      0  110712   92343 134397      0 1075160 1425251      0     33
dm-1   50438      0 1589578  373204 6086424      0 48691256 13801110      0   4859
dm-2   25159      0  741386   93574 13641485      0 109131760 58280348      0   6306
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
dm-3  226921      0 12979482  374950 3402653      0 26807368 150029045      0   2094
dm-4     848      0    8290    4074 21437012      0 171496064 37658599      0   7910
dm-5   15903      0  373610   50583 1107064      0 8856472 60806220      0    300
dm-6  135554      0 3074754  677070 485621      0 3884928 26750658      0    393
vdb   4921867   7619 968706386 2063218 22670735 108363892 998454992 19180459      0   9238
dm-7  4928923      0 968701410 2144859 127417700      0 998454912 773663155      0   9277
-D 可以以汇总的方式查看到磁盘的各项读写的情况。
[root@XXXXXXXX ~]# vmstat -D
           35 disks 
            2 partitions 
     10733969 total reads
        63203 merged reads
   1975190202 read sectors
      6964518 milli reading
    231628817 writes
    125759350 merged writes
   2736845900 written sectors
   1191942088 milli writing
            0 inprogress IO
        61574 milli spent IO
-p可以看到每个分区的情况
[root@xxxxxxxxxxxxxx ~]# vmstat -p /dev/vda1
vda1          reads   read sectors  writes    requested writes
                 879      22098        260      44044
性能测试中vmstat命令的常见使用。的更多相关文章
- Linux内存、性能诊断中vmstat命令的详解
		
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存 交换情况,IO读写情况.相比top,通过vmstat可以看到 ...
 - Linux性能测试 vmstat命令
		
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.这个命令是我查看Linux/Unix最 ...
 - Linux vmstat命令实战详解
		
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.这个命令是我查看Linux/Unix最 ...
 - linux包之procps之vmstat命令
		
概述 [root@localhost ~]# rpm -qf /usr/bin/vmstatprocps-3.2.8-25.el6.x86_64 vmstat是一个很全面的性能分析工具,可以观察到系统 ...
 - (转)Linux vmstat命令实战详解
		
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.这个命令是我查看Linux/Unix最 ...
 - Linux vmstat命令详解
		
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.这个命令是我查看Linux/Unix最 ...
 - vmstat命令参数介绍
		
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.这个命令是我查看Linux/Unix最 ...
 - Linux vmstat命令
		
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.这个命令是我查看Linux/Unix最 ...
 - [svc]Linux vmstat命令实战详解
		
vmstat输出 注:是cpu 内存 磁盘 虚拟内存交换情况 io读写情况 vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存 ...
 
随机推荐
- KNN算法--python实现
			
邻近算法 或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代 ...
 - factorOne cannot be&nb…
			
factorOne cannot be resolved or is not a field 现象描述: Eclipse的使用时会在代码处出现警告factorOne cannot be resolve ...
 - swipe和swiper的区别
			
swipe.js--移动WEB页面内容触摸滑动类库 参考http://www.jiawin.com/swipe-mobile-touch-slider 1.swipe只提供简单轮播切换,底部的圆点颜色 ...
 - websocket 70K连接测试
			
websocket 70K连接测试 最近使用socket.io做了一个实时应用,实时性.稳定性还是很让人满意的.如果拿socket.io来做小型应用,综合效率应该是最高的.但是网上少有socket.i ...
 - SpringMVC+Mybatis实现的Mysql分页数据查询
			
周末这天手痒,正好没事干,想着写一个分页的例子出来给大家分享一下. 这个案例分前端和后台两部分,前端使用面向对象的方式写的,里面用到了一些回调函数和事件代理,有兴趣的朋友可以研究一下.后台的实现技术是 ...
 - [HNOI2013]游走 期望+高斯消元
			
纪念首道期望题(虽说绿豆蛙的归宿才是,但是我打的深搜总觉得不正规). 我们求出每条边的期望经过次数,然后排序,经过多的序号小,经过少的序号大,这样就可以保证最后的值最小. 对于每一条边的期望经过次数, ...
 - 再起航,我的学习笔记之JavaScript设计模式06(抽象工厂模式)
			
我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 前两 ...
 - 一次关于mongodb性能踩坑的总结
			
发现性能问题 上一次导入数据后,发现系统十分的卡顿,但是才仅仅1000多条数据而已,怎么会让系统变得如何的卡顿呢?于是我开始走在排查系统卡顿的原因的道路上. 首先,先定位问题是出现在前端上还是后端上. ...
 - 【有意思的BUG】视频连接超时
			
最近遇到了一个BUG,但是它的出现又存在概率,所以挺有意思的. BUG的现象是:视频在播放过程中(已播放进度<已加载进度),首先出现了缓冲的动画效果其次呈现雪花背景并且抛出异常"视频连 ...
 - 在WebGL场景中使用2DA*寻路
			
这篇文章将讨论如何在一个自定义的地面网格上进行简单的2D寻路,以及确定路径后如何使用基于物理引擎的运动方式使物体沿路径到达目标地点.读者需要预先对WebGL和Babylonjs知识有一些了解,可以 ...