分享一个 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.
😃

posted on 2025-10-10 10:31  ahfuzhang  阅读(14)  评论(0)    收藏  举报