Docker提供了一个交互式统计命令docker stats [cid]
,它提供了CPU使用率的最新信息,如下所示:
CONTAINER CPU % MEM USAGE/LIMIT MEM % NET I/O
36e8a65d 0.03% 4.086 MiB/7.798 GiB 0.05% 281.3 MiB/288.3 MiB
我试图以易于理解的格式获得CPU使用率百分比,以便进行一些分析。
我在/sys/fs中看到了统计信息,它提供的值似乎与Docker Remote API类似,Docker Remote API提供了以下JSON blob:
{
"cpu_usage": {
"usage_in_usermode": 345230000000,
"total_usage": 430576697133,
"percpu_usage": [
112999686856,
106377031910,
113291361597,
97908616770
],
"usage_in_kernelmode": 80670000000
},
"system_cpu_usage": 440576670000000,
"throttling_data": {
"throttled_time": 0,
"periods": 0,
"throttled_periods": 0
}
}
但我不知道如何得到一个确切的CPU使用率作为一个百分比。
有什么想法吗?
3条答案
按热度按时间jmp7cifd1#
如果您打算使用Stats API调用-您可以看看Docker客户端是如何做的:https://github.com/docker/docker/blob/eb131c5383db8cac633919f82abad86c99bffbe5/cli/command/container/stats_helpers.go#L175-L188
基本上,您可以选择一个参考点,然后查看差异(例如10秒),然后可以判断容器使用了多少时间。例如,我们从容器的0 SystemCPUUsage和0 CPUUsage开始。如果在10秒后,我们有10 SystemCPUUsage和1 CPUUsage,则我们有10%的使用率。您只需要以纳秒(而不是秒)为单位给出结果,实际时间并不重要,重要的是SystemCPUUsage的总变化,然后将CPUUsage与之进行比较。
von4xj4u2#
在使用远程API之后,我们会得到以下字段:预处理器统计信息/CPU统计信息
下面是代码:(javascript示例)
澄清一下RESULT_CPU_USAGE...它是物理硬件消耗的资源量,因此,假设您得到的RESULT_CPU_USAGE为50%,这意味着**50%**的PC功率被container X使用
3b6akqbq3#
所以我也需要这个,下面给我正确的CPU使用率,考虑到核心的数量。