【问题标题】:PromQL difference between memory usage and working setPromQL 内存使用和工作集之间的差异
【发布时间】:2023-01-18 20:21:31
【问题描述】:
我正在尝试确定一段时间内容器的平均内存使用情况
下面是我在 OpenShift 4.9 中使用的查询
sum by (namespace, pod) (avg_over_time(pod:container_memory_usage_bytes:sum[2d]))
上面的查询在 4.11 版本的 OpenShift 中不起作用,所以我尝试修改上面的查询
sum by (namespace, pod) (avg_over_time(node_namespace_pod_container:container_memory_working_set_bytes{}[2h])/1048576)
两个查询都提供不同的值,但有细微差别。
我对使用上述 2 中的哪个查询来确定 POD 使用的平均内存感到困惑。
【问题讨论】:
标签:
kubernetes
openshift
promql
【解决方案1】:
和...之间的不同内存使用情况和工作集在 PromQL 中,内存使用量是指分配给进程的内存总量,而工作集是指分配给进程的内存量积极地被进程使用。内存使用包括活动和非活动内存,而工作集只包括正在处理的内存积极使用.换句话说,工作集是内存使用的一个子集。
以下表达式可用于计算命名空间和 pod 在两天内的平均 pod 容器内存使用量:
sum by (namespace, pod) (avg_over_time(pod:container_memory_usage_bytes:sum[2d]))
推荐是使用以下查询,因为 memory_working_set 将给出正在使用的内存使用情况。
sum by (namespace, pod) (avg_over_time(node_namespace_pod_container:container_memory_working_set_bytes{}[2h])/1048576)