• vmstat和iostat解读

    1、vmstat

    刚启动不久,即使采集增量报告,第一行的值还是显示自系统启动以来的平均值,第二行开始展示现在正在发生的情况。

    procs
    r这列一列显示了多个进程在等待CPU,b列显示多少进程在这不可中断的休眠(通常意味着它们在等待I/O,例如磁盘、网络、用户输入等)。
    memory
    swpd列显示多少块被切换出到了磁盘(页面交换)。剩下的三个列显示了多少块是空闲的(未被使用)、多少块正诶用作缓冲,以及多少正在被操作系统的缓存。
    swap
    这些列显示页面交换活动:每秒有多少块正在被换入(从磁盘)和换出(到磁盘)。他们比健康swpd列重要多了。大部分时间我们喜欢看到si和so的列是0,并且我们明确不希望看到没秒超过10个块。突发性的高峰一样很糟糕。
    io
    这些列显示了多少块从块设备读取(bi)和写出(bo)。这通常反应了磁盘I/O。
    system
    这些列显示了没秒中断(in)和上下文切换(cs)的数量。
    cpu
    这些列显示所有的CPU时间花费在各类操作的百分比,包括执行用户代码(非内核)、执行系统代码(内核)、空闲,已经等待I/O。如果正在使用虚拟化,则第五个列可能是st,显示从虚拟机中“偷走”的百分比。这关系到那些虚拟机想运行但是系统管理程序转而运行其他的对象的时间。如果虚拟机不希望运行任何对象,但是系统管理程序运行了其他对象这不算被偷走的CPU时间。
    vmstat的输出跟系统有关,具体查看vmstat(8)。一个重要的提示是:内存、交换区,已经I/O系统是块数而不是字节,在GNU/Linux,块大小通常是1024字节。

    2、iostat

    与vmstat一样,第一行报告显示的是自系统启动以来的平均中。
    rrqm/s和wrqm/s
    每秒合并的读和写请求。“合并的”意味着操作系统从队列中拿出多少个逻辑请求合并为一个请求到实际磁盘。
    r/s和w/s
    每秒发送到设备的读和写请求。
    rsec/s和wsec/s
    每秒读和写的扇区数。游戏系统也输出为rkB/s和wkB/s,意为每秒读写的千字节数。
    avgrq-sz
    每请求的扇区数。
    avgqu-sz
    在设备队列中等待的请求数。
    await
    磁盘队列上花费的毫秒数,但是没有独立统计读和写的请求。
    svctm
    服务请求花费的毫秒数,不包括排队时间。
    %util
    至少有一个活跃请求所占用时间的百分比。如果熟悉队列理论中利用率的标准定,那么这个命令很莫名其妙。它其实不是块设备的利用率。超过一块磁盘的设备(例如raid控制器)比一块硬盘的设备可以支持更高的并非。但是%util从来不会超过100%,除非在技术时有四舍五入的错误。因此,这个指标无法真实反映设备的利用率,实际上跟文档说的相反、除非只有一块物理磁盘的特殊例子。
    可以用iostat的输出推断某些关于机器I/O子系统的实际情况。一个重要的度量标准司请求服务的并发数。因为读写的单位是每秒而服务时间的单位是千分之一秒,所有可以利用利特尔法则(Littler’s Law)得到下面的公式,计算出设备服务的并发请求:
    concurrency = (r/s + w/s)* (svctm/1000)

     

第 1 页,共 1 页1