zoukankan      html  css  js  c++  java
  • 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



  • 相关阅读:
    (网页)中的简单的遮罩层
    (后端)shiro:Wildcard string cannot be null or empty. Make sure permission strings are properly formatted.
    (网页)jQuery的时间datetime控件在AngularJs中使用实例
    Maven Myeclipse 搭建项目
    MyBatis 环境搭建 (一)
    java 常用方法
    XML 基础
    JS BOM
    js 事件
    js 的使用原则
  • 原文地址:https://www.cnblogs.com/ggjucheng/p/2315603.html
Copyright © 2011-2022 走看看