分享一个 metricsQL 表达式:统计容器化造成的性能损失
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!
思路如下:单位时间内(例如 1 小时),容器外的系统层面上报的某个容器的 CPU 总时间,减去容器内上报的 cpu 时间,这便是容器化造成的性能损失。
我公司业务统计得到数据,并未从这个层面发现明显的问题,所以不是非常确信这种统计方法是正确的。
欢迎批评指正。
统计表达式如下:
topk(
20,
(
(
max by (pod)(
container_cpu_usage_seconds_total{env="prod",namespace="backend",image!="",container!~"^(|istio-proxy)$"} -
(container_cpu_usage_seconds_total{env="prod",namespace="backend",image!="",container!~"^(|istio-proxy)$"} offset 1h))
) -
(
max by (pod)(process_cpu_seconds_total{env="prod",namespace="backend"} - (process_cpu_seconds_total{env="prod",namespace="backend"} offset 1h))
)
)/ 3600 * 100
)
- 查询的时候使用 instant query, 不要使用 range query
- 查询的结果是百分比
我查询到容器化性能损耗的最大值为 1.45%,然后这个容器分配了 2.5 核,则每个核因为容器化导致的性能损失为 0.58%
Have Fun.
😃

浙公网安备 33010602011771号