Linux下vmstat结果分析

一)概述:

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 310596  24796 143780    0    0     933  89   1044  119      3    21   72     4   0
 
1)procs:
r:代表正在运行的进程数.
b:代表处在不可屏蔽中断的进程数.

2)memory:
swpd:已使用swap的空间大小.
free:空闲的内存.
buff:内存中buffer的大小.
cache:内存中cache的大小.

3)swap
si:从swap读出的内存,也就是主缺页,这个值是一个比率,即每秒读了多少KB.
so:置换到swap的内存,这个值是一个比率,即每秒写了多少KB.

4)io
bi:从磁盘读数据,这个值是一个比率,即每秒读了多少BLOCK.
bo:写数据到磁盘,这个值是一个比率,即每秒写了多少BLOCK.

5)system
in:每秒中断的次数.
cs:每秒转换上下文的次数.

6)
us:用户态进程使用CPU的百分比.
sy:内核态进程使用CPU的百分比.
id:处于空闲的CPU百分比.
wa:系统等待IO的CPU时间百分比.
st:来自于一个虚拟机偷取的CPU时间的百分比.

 

二)系统监控的实验:

实例一,大量的算术运算
本程序会进入一个死循环,不断的进行求平方根的操作,模拟大量的算术运算的环境.
测试源程序如下:
#include <stdio.h>
#include <math.h>
#include <unistd.h>
#include <stdlib.h>

void
run_status(void)
{
double pi = M_PI;
double pisqrt;
long i;
while(1){
pisqrt = sqrt(pi);
}
}

int
main (void)
{
run_status();

exit(EXIT_SUCCESS);
}

gcc run.c -o run -lm
./run&

运行:
vmstat 1
注:我们的程序不断的进行算术运算,r的值由0变成了1,而cpu的用户态利用率也达到了100%.如下:
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 304592  25244 147800    0    0     0     0 1010   31  0  1 99  0  0
 0  0      0 304592  25244 147800    0    0     0     0 1020   37  0  0 100  0  0
 1  0      0 304592  25244 147800    0    0     0    36 1016   46 69  1 30  0  0
 1  0      0 304592  25244 147800    0    0     0     0 1067   56 100  0  0  0  0
 1  0      0 304592  25244 147800    0    0     0     0 1010   31 100  0  0  0  0


实例二,大量的系统调用
本脚本会进入一个死循环,不断的执行cd命令,从而模拟大量系统调用的环境
测试脚本如下:
#!/bin/bash

while (true)
do
cd ;
done

chmod +x loop.sh
./loop.sh

运行:
vmstat 1
注:程序不断的调用cd命令,此时进程不断的进行上下文切换,所以cs的值会骤然提高,而cpu的内核态利用率也会达到98%左右.如下:
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 304592  25248 147804    0    0   111    15 1025  179 20 20 59  0  0
 0  0      0 304592  25248 147804    0    0     0     0 1013   36  0  0 100  0  0
 1  0      0 304592  25248 147816    0    0     0     0 1015  422  1 72 27  0  0
 2  0      0 304592  25248 147816    0    0     0     0 1012  544  3 97  0  0  0
 1  0      0 304592  25248 147816    0    0     0     0 1007  522  3 97  0  0  0
 1  0      0 304592  25248 147816    0    0     0    64 1015  523  3 97  0  0  0
 2  0      0 304592  25248 147816    0    0     0     0 1003  572  2 98  0  0  0
 1  0      0 304592  25248 147816    0    0     0     0 1012 1263  2 98  0  0  0
 1  0      0 304592  25248 147816    0    0     0     0 1006 1264  3 97  0  0  0
 1  0      0 304592  25248 147816    0    0     0     0 1015 1249  3 97  0  0  0


实例三,大量的io操作

我们用dd命令,从/dev/zero读数据,写入到/tmp/data文件中,如下:
dd if=/dev/zero of=/tmp/data bs=1M count=1000

运行:
vmstat 1
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 302160  25868 149004    0    0    77   116 1027  151 14 17 69  0  0
 1  0      0 302160  25868 149004    0    0     0     0 1018   35  0  1 99  0  0
 3  0      0 134884  26032 311628    0    0     0 109872 1423  102  0 100  0  0  0
 1  0      0  14596  26148 428808    0    0     0 117208 1372  120  0 100  0  0  0
 1  0      0   6224  22908 440592    0    0     4 64944 1305  322  0 98  0  2  0
 1  0      0   5976  21836 441016    0    0     4 79072 1447  162  0 51  0 49  0
 0  2      0   5716  21956 439672    0    0     4 79016 1431  374  0 81  0 19  0
 2  2      0   6180  22044 438064    0    0     0 61432 1392  285  0 61  0 39  0
 2  2      0   6912  22104 436828    0    0     4 73980 1486  253  1 59  0 40  0
 0  4      0   5876  14132 448856    0    0     8 63784 1378  313  0 69  0 31  0
 0  2      4   5980   4140 457860    0    0     0 46756 1399  274  0 65  0 35  0
 1  3      4   6060   3892 457580    0    0     8 69876 1398  214  0 46  0 54  0
 1  4      4   6120   2872 457348    0    0     0 59920 1364  327  0 71  0 29  0
 
注:dd不断的向磁盘写入数据,所以bo的值会骤然提高,而cpu的wait数值也变高,说明由于大量的IO操作,系统的瓶径出现在低速的设备上.
由于对文件系统的写入操作,cache也从149004KB提高到了457348KB,又由于大量的写中断调用,in的值也从1018提高到1364.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值