我正在尝试以百分比限制节点 CFS 调度程序。为此,我从中读取 2 个值 2 次(忽略时间片),/proc/schedstat
格式如下:
$ cat /proc/schedstat
version 15
timestamp 4297299139
cpu0 0 0 0 0 0 0 1145287047860 105917480368 8608857
CpuTime RunqTime
所以我从文件中读取,休眠一段时间,再次读取,计算经过的时间和值之间的增量,然后使用以下代码计算百分比:
cputTime := float64(delta.CpuTime) / delta.TimeDelta / 10000000
runqTime := float64(delta.RunqTime) / delta.TimeDelta / 10000000
percent := runqTime
诀窍是百分比可能是 2000%
我假设 runqtime 是增量的,并以纳秒表示,所以我将其除以 10^7(使其达到 0-100% 范围),timedelta 是以秒为单位的测量值之间的差异。它有什么问题?如何正确地做到这一点?