如果我有类似的 cgroupuser.slice
并已CPUAccounting=true
设置,我想知道如何使用cpuacct.usage
或cpuacct.stat
. 我知道cpuacct.usage
提供了 CPU 时间(以纳秒为单位),它可用于计算 CPU 百分比,方法是在一段时间内减去它的两个快照,然后除以同一时间段内系统的总 CPU 时间(正确我如果我错了),但我不确定如何获得一段时间内的总 CPU 时间。
有没有办法可以获取一段时间内的总 CPU 时间或使用不同的公式/cgroup 功能来计算 CPU 使用率?提前致谢 :)
注意:我知道systemd-cgtop
,它提供了一些此类信息,但是我想以编程方式计算 CPU 使用率,而无需解析systemd-cgtop
CPU 使用百分比是 CPU 处于活动状态的总时间与墙上时钟已用时间的比率。如果您尝试将一个 CPU 时间与另一个 CPU 时间进行比较,这不是使用百分比。这个没有名字,它只是一个 CPU 时间与另一个 CPU 时间的比率。
您已经说过您知道如何获取经过的 CPU 时间(通过计算您的期间前后的 CPU 时间差),所以只需将其除以挂钟时间。
如果你想避免调用
date
(andcat
),你可以使用类似的东西:read tstart _ < /proc/uptime
.