FreeBSD vmstat详解(附例子)

top是给Linux设计的。在FreeBSD VM里面的Free概念和其他OS完全不同,使用top查看Free内存对于FreeBSD来说可以说没什么意义。正确的方法是看vmstat。

 # vmstat
  procs   memory          page                       disk   faults     cpu
  r b w   avm    fre      flt  re  pi   po   fr   sr ad0    in    sy   cs    us  sy id
  0 2 1   270512   20316  30   0   0    0    26   5  1223   1589  98   593   1   1  99

最好使用vmstat t [n]命令,例如 vmstat 5 10,表示在t(5)秒时间内进行n(10)次采样。如果只使用vmstat,无法反映真正的系统情况。

procs:
r-->在运行的进程数
  b-->在等待io的进程数(等待i/o,paging等等)
  w-->可以进入运行队列但被替换的进程
memoy(以kb为单位,包括虚拟内核和真实内存,正在运行或最近20秒在运行的进程所用的虚拟内存将被视为active)
  avm-->活动的虚拟内存
  free-->空闲的内存
pages(统计错误页和活动页,每5秒平均一下,以秒为单位给出数值)
  flt-->错误页总数
  re-->回收的页面
  pi-->进入页面数
  po-->出页面数
  fr-->空余的页面数
  sr-->每秒通过时钟算法扫描的页面
disk 显示每秒的磁盘操作(磁盘名字的前两个字母加数字,默认只显示两个磁盘,如果有多的,可以加-n来增加数字或在命令行下把磁盘名都填上。)

fault 显示每秒的中断数
  in-->设备中断
  sy-->系统中断
  cs-->cpu交换(上下文切换)
cpu 表示cpu的使用状态
  cs-->用户进程使用的时间
  sy-->系统进程使用的时间
  id-->cpu空闲的时间

如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。
如果pi,po 长期不等于0,表示内存不足。
如果disk 经常不等于0, 且在 b中的队列 大于3, 表示 io性能不好。

以下是一个繁忙批量插入MySQL数据(大概每隔20秒可以插入50万多条数据)的vmstat例子:

复制代码
 procs      memory      page                    disks     faults         cpu
 r b w     avm    fre   flt  re  pi  po    fr  sr da0 da1   in   sy   cs us sy id
 1 0 63  23302M   803M   845   0   0   0     0   0   0   0   17  124  499  6  0 94
 1 0 63  23302M   796M   837   0   0   0     2   0   1   0   18  158  505  6  0 94
 1 0 63  23302M   790M   833   0   0   0     6   0  76   0  159  143  910  6  0 94
 1 0 63  23302M   784M   868   0   0   0    16   0   8   0   34  156  550  6  0 94
 2 0 63  23456M   709M  8317   2   0   0  2383   0  95   0  295 5504 1930  8  1 91
 1 0 63  21975M  1281M 18909   3   0   0 94840   0 620   0 1893 64333 7822 10  4 87
 1 0 63  21975M  1281M   415   0   0   0   342   0   1   0   29  611  566  6  0 94
 1 0 63  22093M   978M 43503   0   0   0  5140   0 2187   0 4225  582 16279  6  2 92
复制代码

 循环插入到了后面,随着表越来越大,系统调用和上下文切换越来越频繁:

复制代码
 procs      memory      page                    disks     faults         cpu
 r b w     avm    fre   flt  re  pi  po    fr  sr da0 da1   in   sy   cs us sy id
 1 0 63  23233M   536M 28219   0   0   0   352 51252 869   0 1864 14542 11015  2  3 95
 1 0 63  23349M   834M 12457   0   0   0     4 51247 2078   0 3945  179 14926  6  2 92
 2 0 63  27343M  3130M  9295   0   0   0  2708   0   2      0   73 6988 1377   7  1 92
 ....中间比较正常,因为插入时间比较久
 1 0 63  28788M  2934M 25760   0   0   0  5860   0   620   8 5529 42712 12924 11  2 86
 0 0 63  25963M  3081M  4379   0   0   0 24049   0   3445  15 11274 97350 31798  2  7 91
 0 0 63  33689M  1801M   388   0   0   0  4492   0 4403  15 8780 135421 35502  2  5 93
复制代码

不熟悉mysql内部机制,但是很明显,随着表越来越大,表插入速度越来越慢,因为系统调用和上下文切换越来越频繁了,浪费了很多CPU时间。
到了mysql表里有六千万多条数据时,每插入五十万条记录,已经要耗时100s,整个mysql数据库变得很繁忙,一些几万数据的插入也慢慢不能及时处理。

以下是一个拷贝4G文件到远程NFS的vmstat例子:

复制代码
 procs      memory      page                    disks     faults         cpu
 r b w     avm    fre   flt  re  pi  po    fr  sr da0 da1   in   sy   cs us sy id
 2 0 63  19731M  2400M 24415   0   0   0 70077   0  14   0  591 3915 1770 12  1 87
 0 0 63  16352M  3594M   443   0   0   0 154948   0 2471   0 5067 17602 19448  1  2 96
 0 0 63  16352M  3594M     0   0   0   0     0   0 772   0 1590  134 6577  0  0 100
 0 0 63  16352M  3594M     0   0   0   0     0   0 856   0 1750  164 7135  0  0 100
 0 0 63  16361M  3594M  1112   0   0   0  1030   0 400   0  815 1248 3620  0  0 100
 0 0 63  16361M  3594M     0   0   0   0     0   0   0   0   15  116  488  0  0 100
 0 0 63  16352M  3594M   329   0   0   0   352   0 2186   0 4275  595 15809  0  2 98
 0 0 63  16352M  3594M     0   0   0   0     0   0 270   0  532  134 3186  0  0 100
 0 0 63  16352M  3594M     0   0   0   0     0   0 185   0  368  164 2062  0  0 100
复制代码

 

最后稳定下来,状态良好的vmstat例子:

 procs      memory      page                    disks     faults         cpu
 r b w     avm    fre   flt  re  pi  po    fr  sr da0 da1   in   sy   cs us sy id
 0 0 63  16292M  3564M     0   0   0   0     0   0   0   0   12  142  472  0  0 100
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值