首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取系统ioWait

如何获取系统ioWait
EN

Stack Overflow用户
提问于 2009-08-27 08:13:46
回答 2查看 7.5K关注 0票数 3

如何获取系统ioWait?最好是在/proc接口中使用信息(我猜它写在那里的某个地方),这样应用程序就可以检测到这一点,但是从我的应用程序对exec()的外部调用也是可以接受的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-27 08:17:03

这在/proc/stat中可用。

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

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

softirqs

  • steal:
  • user :在用户模式下执行的正常进程

:在用户模式下执行的nice进程

  • system:在内核模式下执行的进程空闲: twiddling thumbs
  • iowait: waiting to complete
  • irq: servicing interrupts
  • softirq: servicing softirqs
  • steal:
票数 9
EN

Stack Overflow用户

发布于 2021-10-27 05:22:32

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

代码语言:javascript
复制
iostat -c 5

将返回(每隔5秒):

代码语言:javascript
复制
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           8.39    0.00   11.42    4.74    0.00   75.46

或JSON格式:

代码语言:javascript
复制
iostat -o JSON -c 5
代码语言:javascript
复制
{
   "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下的两个子级(使用最后一个)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1339584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档