【问题标题】:How to get the system ioWait如何获取系统ioWait
【发布时间】:2009-08-27 08:13:45
【问题描述】:

如何获得系统 ioWait? 通过使用 /proc 接口的信息(我猜它写在那里的某处)会更好,因此应用程序可以检测到这一点,但是从我的应用程序对 exec() 的外部调用是可以接受的。

【问题讨论】:

    标签: linux iowait


    【解决方案1】:

    这在/proc/stat 中可用。

    来自内核源代码中的文档:

    第一个“cpu”行聚合 所有其他的数字 “cpuN”行。这些数字标识 CPU 花费的时间 执行不同类型的工作。 时间单位为 USER_HZ(通常 百分之一秒)。含义 的列如下,从 从左到右:

    • user:在用户模式下执行的正常进程
    • nice:在用户模式下执行的 niced 进程
    • 系统:在内核模式下执行的进程
    • 空闲:旋转拇指
    • iowait:等待 I/O 完成
    • irq:服务中断
    • softirq:服务软中断
    • 偷:不由自主地等待

    【讨论】:

      【解决方案2】:

      获取iowait 的另一种方法是使用iostat,例如:

      iostat -c 5
      

      将返回(每 5 秒):

      avg-cpu:  %user   %nice %system %iowait  %steal   %idle
                 8.39    0.00   11.42    4.74    0.00   75.46
      

      或 JSON 格式:

      iostat -o JSON -c 5
      
      {
         "sysstat":{
            "hosts":[
               {
                  "nodename":"host.example.com",
                  "sysname":"Linux",
                  "release":"4.15.0-159-generic",
                  "machine":"x86_64",
                  "number-of-cpus":64,
                  "date":"2021/10/27",
                  "statistics":[
                     {
                        "avg-cpu":{
                           "user":7.32,
                           "nice":0.07,
                           "system":5.60,
                           "iowait":13.59,
                           "steal":0.00,
                           "idle":73.43
                        }
                     }
                  ]
               }
            ]
         }
      }
      
      

      在这里,iowaittopglances 等报告的百分比相同。

      注意:

      如果运行一次,每次都会得到相同的值,因此“修复”它的一种方法是至少运行 2 次并使用最后的值:

      iostat -c 1 2

      这意味着:运行 2 次,间隔 1 秒

      bash 中,您只能通过以下方式获得iowait 值:

      iostat -c 1 2 | awk 'NF { print $4 }' | tail -n 1

      JSON的情况下,会返回statistics下的两个孩子(使用最后一个)。

      【讨论】:

        猜你喜欢
        • 2014-03-22
        • 1970-01-01
        • 2010-10-23
        • 1970-01-01
        • 2012-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多