我正在使用docker远程API来检索正在运行的容器的统计信息。对于CPU使用情况,我得到例如:
"cpu_stats": {
"cpu_usage": {
"total_usage": 13039191340,
"percpu_usage": [
13039191340
],
"usage_in_kernelmode": 420000000,
"usage_in_usermode": 10480000000
},
"system_cpu_usage": 8.8930204e+14,
"throttling_data": {
"periods": 0,
"throttled_periods": 0,
"throttled_time": 0
}
}
如何以百分比计算CPU使用率?当我将“usage_in_kernelmode”除以“total_usage”时,我得到与docker stats
命令类似的结果,但这是正确的方法吗?
谢谢:)
答案 0 :(得分:3)
最终,它取决于您想要衡量的CPU使用率。
使用状态是循环的。用户周期是用于执行应用程序的周期,包括在用户空间中执行的系统应用程序(如守护程序)。内核周期是执行基本 OS或驱动程序功能所花费的周期。非基本OS功能在用户空间中执行。未计入的周期可能是空闲周期,那些花费无用的。
因此,总CPU使用百分比是(内核+用户)/(空闲+内核+用户)* 100。用户CPU使用率为(用户))/(空闲+内核+用户)* 100。您可以猜测系统使用率的等式。
system_cpu_usage让我很困惑。如果它(而不是total_usage)指的是总周期,则用它替换(idle + kernel + user)。让我感到困惑的是,如果system_cpu_usage是总使用量,那么究竟是什么?total_usage?