如何获取系统ioWait?最好是在/proc接口中使用信息(我猜它写在那里的某个地方),这样应用程序就可以检测到这一点,但是从我的应用程序对exec()的外部调用也是可以接受的。
发布于 2009-08-27 08:17:03
这在/proc/stat中可用。
来自内核源代码中的文档:
第一个"cpu“行将所有其他"cpuN”行的数字相加。这些数字标识CPU执行不同类型的工作所花费的时间。时间单位为USER_HZ (通常为百分之一秒)。各列的含义从左到右如下:
softirqs
:在用户模式下执行的nice进程
发布于 2021-10-27 05:22:32
另一种获取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
}
}
]
}
]
}
}在这里,iowait与top、glances等报告的百分比相同。
注意:
如果你运行一次,你每次都会得到相同的值,所以一种“修复”它的方法是至少运行2次,并使用最后的值:
iostat -c 1 2
这意味着:运行2次,间隔1秒
在bash中,您只能使用以下命令获取iowait值:
iostat -c 1 2 | awk 'NF { print $4 }' | tail -n 1
在JSON的情况下,它将返回statistics下的两个子级(使用最后一个)。
https://stackoverflow.com/questions/1339584
复制相似问题