我如何获得系统 ioWait?通过使用 /proc 接口的信息(我猜它写在那里的某处),这将是更可取的,因此应用程序可以检测到这一点,但是从我的应用程序对 exec() 的外部调用是可以接受的。
问问题
7491 次
2 回答
9
这在/proc/stat
.
从内核源代码中的文档:
第一个“cpu”行聚合了所有其他“cpuN”行中的数字。这些数字标识了 CPU 用于执行不同类型工作的时间量。时间单位为 USER_HZ(通常为百分之一秒)。各列的含义如下,从左到右:
- user:在用户模式下执行的正常进程
- nice:在用户模式下执行的 niced 进程
- system:在内核模式下执行的进程
- 闲置:摆弄大拇指
- iowait:等待 I/O 完成
- irq:服务中断
- 软中断:服务软中断
- 偷:不自觉的等待
于 2009-08-27T08:17:03.443 回答
1
另一种获取方法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
(使用最后一个)。
于 2021-10-27T05:22:32.320 回答