在不使用docker api的情况下计算容器中特定函数的CPU利用率?

2024-09-29 17:23:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我查看了stack over flow上的各种链接以及其他链接&;我找到了一种计算cpu利用率的模式或通用方法。 下面是一个链接

https://github.com/moncho/dry/blob/07244d36010d1029ee03bda29fa5aec6449ebf61/docker/stats.go#L168

我试着自己计算同样的结果。但似乎,每当我计算出这个值时,它甚至都不接近,有人能验证一下这个方法吗&;如果没有,谁能帮我解决这个问题

我想计算特定时间间隔的cpu,只是举个例子。 定义你得到的东西执行() 我只想计算这个特定函数的cpu使用率

同样,我也在这样做, 为用户获取价值&;系统从这里开始:

/sys/fs/cgroup/cpu,cpuacct/cpuacct.stat

在函数得到执行之前&;在函数得到执行之后。 之后,我使用以下公式得到容器的增量:

container_cpu_delta = (cpuacct.stat_final_user - cpuacct.stat_initial_user) / (cpuacct.stat_final_system - cpuacct_stat_initial_system)

同时,我也做了同样的事情,以获取主机的值 在函数执行之前和之后,我从以下位置获取用户和系统的值:

/proc/stat

grep第一行,我得到第一&;第三参数

cpu 205434 341 56826 3122952 48119 0 25640 0 0 0
i.e 205434 & 56826

并执行相同的计算

host_cpu_delta = (proc_stat_final_user - proc_stat_init_user)/(proc_stat_final_system-proc_stat_init_user)

&;然后我终于做到了

cpu_percentage = (container_cpu_delta/host_cpu_delta) * no_of_cores (am bit confused about this cores allocated to container or cores on the host)

然而,有一些观察结果:

很多次我都看到了

(cpuacct.stat_final_user - cpuacct.stat_initial_user) 

即容器大于

(proc_stat_final_user - proc_stat_init_user)

当然,我会觉得有点奇怪。As Host值也包含容器的循环 在计算时,我不知道要取多少内核,分配给容器的CPU,还是主机上的所有CPU? 我在容器内做的所有事情,比如读取所有的值。 请让我知道,如果我在计算中遗漏了什么,这将是很大的帮助

非常感谢:)


Tags: 函数host链接containerproccpusystem容器

热门问题