标签: vmstat

  • 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
     1 0 0    185M   212M    49   0   0   0    46   0   0 1132  830  363  0  0 99
    
    

    参数说明
    procs

    r: 在运行的进程数
    b: 在等待io的进程数(等待i/o,paging等等)
    w: 可以进入运行队列但被替换的进程
    memory

    以”K”为单位,包括虚拟内存和真实内存,正在运行或最近20秒在运行的进程所用的虚拟内存将被视为”active”。

    avm: 活动的虚拟内存
    free: 空闲的内存
    page

    统计错误页和活动页,每5秒平均一下,以秒为单位给出数值。

    flt: 错误页总数
    re: 回收的页面
    pi: 进入页面数
    po: 出页面数
    fr: 空余的页面数
    sr: 每秒通过时钟算法扫描的页面
    disk

    显示每秒的磁盘操作。磁盘名字的前两个字母加数字,默认只显示两个磁盘,如果有多的,可以加”-n”来增加数字或在命令行下把磁盘名都填上。

    faults

    显示每秒的中断数。

    in: 设备中断
    sy: 系统中断
    cy: CPU交换
    cpu

    表示CPU的使用状态。

    cs: 用户进程使用的时间
    sy: 系统进程使用的时间
    id: CPU空闲的时间
    数值说明
    如果”r”经常大于4,且”id”经常少于40,表示cpu的负荷很重。
    如果”pi”,”po”长期不等于”0″,表示内存不足。
    如果”disk”经常不等于”0″,且在”b”中的队列大于3,表示”io”性能不好。

  • 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