将 USER_HZ 转换为毫秒:了解 cgroup 中的 CPU 时间测量

将 USER_HZ 转换为毫秒:了解 cgroup 中的 CPU 时间测量

我正在编写一个程序,该程序应该有助于“安全”地运行外国代码。我还想获得外部代码的内存利用率和 CPU 计算时间,所以我想我会使用 cgroups。

我创建了一个 cgroup /sys/fs/cgroup/cpuacct/<program name>,然后将执行外部代码的 PID 添加到 cgroups.procs 文件中。

程序执行后,我尝试/sys/fs/cgroup/cpuacct/<program name>/cpuacct.usage读取 CPU 时间。

根据链接我得到的号码位于 USER_HZ。

在阅读并浏览了 sysconf 和 getconf 的手册页后,我运行了以下命令,getconf CLK_TCK输出为 100。

从 sysconf 手册页来看,这是“每秒时钟滴答数”。那么这是否意味着我可以将从 cpuacct.usage 获得的数字除以 100 以获得以秒为单位的 CPU 计算时间?

因为对于一个简单的 python 程序,我得到的数字平均约为 2.7 亿个 USER_HZ,该程序创建一个包含 0 到 1000 之间所有数字的列表,然后打印该列表的长度。 270 万秒对我来说听起来不太合适。

有人可以向我解释如何从 USER_HZ 转换为毫秒吗?或者也许我对整个过程的理解是错误的。

提前致谢!

答案1

从 sysconf 手册页来看,这是“每秒时钟滴答数”。那么这是否意味着我可以将从 cpuacct.usage 获得的数字除以 100 以获得以秒为单位的 CPU 计算时间?

根据内核文档这里

.../sys/fs/cgroup/cpuacct.usage 给出 CPU 时间(以纳秒为单位)...

因此,您应该将该值除以纳秒(1,000,000,000),而不是除以 USER_HZ。

只有cpuacct.statUSER_HZ 中的值。

相关内容