Fix swap size calculation for cgroups (#11617)
Vladimir Kobal committed
Oct 5, 2021 at 08:17 UTC
8f3a6e85a786cc4935cfef5be6f342202452fa9e
1 file changed
+11
-3
collectors/cgroups.plugin/sys_fs_cgroup.c
+11
-3
@@ -2911,7 +2911,15 @@ void update_systemd_services_charts(
2911
if(unlikely(!cg->rd_swap_usage))
2912
cg->rd_swap_usage = rrddim_add(st_swap_usage, cg->chart_id, cg->chart_title, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
2913
2914
- rrddim_set_by_pointer(st_swap_usage, cg->rd_swap_usage, cg->memory.msw_usage_in_bytes);
2914
+ if(!(cg->options & CGROUP_OPTIONS_IS_UNIFIED)) {
2915
+ rrddim_set_by_pointer(
2916
+ st_swap_usage,
2917
+ cg->rd_swap_usage,
2918
+ (cg->memory.msw_usage_in_bytes - (cg->memory.usage_in_bytes + cg->memory.total_inactive_file)) > 0 ?
2919
+ cg->memory.msw_usage_in_bytes - (cg->memory.usage_in_bytes + cg->memory.total_inactive_file) : 0);
2920
+ } else {
2921
+ rrddim_set_by_pointer(st_swap_usage, cg->rd_swap_usage, cg->memory.msw_usage_in_bytes);
2922
+ }
2923
}
2924
2925
if(likely(do_io && cg->io_service_bytes.updated)) {
@@ -3601,8 +3609,8 @@ void update_cgroup_charts(int update_every) {
3609
rrddim_set(
3610
cg->st_mem_usage,
3611
"swap",
3604
- (cg->memory.msw_usage_in_bytes > cg->memory.usage_in_bytes) ?
3605
- cg->memory.msw_usage_in_bytes - cg->memory.usage_in_bytes : 0);
3612
+ (cg->memory.msw_usage_in_bytes - (cg->memory.usage_in_bytes + cg->memory.total_inactive_file)) > 0 ?
3613
+ cg->memory.msw_usage_in_bytes - (cg->memory.usage_in_bytes + cg->memory.total_inactive_file) : 0);
3614
} else {
3615
rrddim_set(cg->st_mem_usage, "swap", cg->memory.msw_usage_in_bytes);
3616
}