Use total_* memory counters for cgroups (#5592)
Vladimir Kobal committed
Mar 12, 2019 at 17:13 UTC
6f0d13fbb98978cfca850d72a6b90d6db56e9a2a
1 file changed
+39
-36
collectors/cgroups.plugin/sys_fs_cgroup.c
+39
-36
@@ -297,6 +297,7 @@ struct memory {
297
int detailed_has_swap;
298
299
// detailed metrics
300
+/*
301
unsigned long long cache;
302
unsigned long long rss;
303
unsigned long long rss_huge;
@@ -308,13 +309,13 @@ struct memory {
309
unsigned long long pgpgout;
310
unsigned long long pgfault;
311
unsigned long long pgmajfault;
311
-/*
312
unsigned long long inactive_anon;
313
unsigned long long active_anon;
314
unsigned long long inactive_file;
315
unsigned long long active_file;
316
unsigned long long unevictable;
317
unsigned long long hierarchical_memory_limit;
318
+*/
319
unsigned long long total_cache;
320
unsigned long long total_rss;
321
unsigned long long total_rss_huge;
@@ -326,6 +327,7 @@ struct memory {
327
unsigned long long total_pgpgout;
328
unsigned long long total_pgfault;
329
unsigned long long total_pgmajfault;
330
+/*
331
unsigned long long total_inactive_anon;
332
unsigned long long total_active_anon;
333
unsigned long long total_inactive_file;
@@ -685,17 +687,17 @@ static inline void cgroup_read_memory(struct memory *mem) {
687
if(unlikely(!mem->arl_base)) {
688
mem->arl_base = arl_create("cgroup/memory", NULL, 60);
689
688
- arl_expect(mem->arl_base, "cache", &mem->cache);
689
- arl_expect(mem->arl_base, "rss", &mem->rss);
690
- arl_expect(mem->arl_base, "rss_huge", &mem->rss_huge);
691
- arl_expect(mem->arl_base, "mapped_file", &mem->mapped_file);
692
- arl_expect(mem->arl_base, "writeback", &mem->writeback);
693
- mem->arl_dirty = arl_expect(mem->arl_base, "dirty", &mem->dirty);
694
- mem->arl_swap = arl_expect(mem->arl_base, "swap", &mem->swap);
695
- arl_expect(mem->arl_base, "pgpgin", &mem->pgpgin);
696
- arl_expect(mem->arl_base, "pgpgout", &mem->pgpgout);
697
- arl_expect(mem->arl_base, "pgfault", &mem->pgfault);
698
- arl_expect(mem->arl_base, "pgmajfault", &mem->pgmajfault);
690
+ arl_expect(mem->arl_base, "total_cache", &mem->total_cache);
691
+ arl_expect(mem->arl_base, "total_rss", &mem->total_rss);
692
+ arl_expect(mem->arl_base, "total_rss_huge", &mem->total_rss_huge);
693
+ arl_expect(mem->arl_base, "total_mapped_file", &mem->total_mapped_file);
694
+ arl_expect(mem->arl_base, "total_writeback", &mem->total_writeback);
695
+ mem->arl_dirty = arl_expect(mem->arl_base, "total_dirty", &mem->total_dirty);
696
+ mem->arl_swap = arl_expect(mem->arl_base, "total_swap", &mem->total_swap);
697
+ arl_expect(mem->arl_base, "total_pgpgin", &mem->total_pgpgin);
698
+ arl_expect(mem->arl_base, "total_pgpgout", &mem->total_pgpgout);
699
+ arl_expect(mem->arl_base, "total_pgfault", &mem->total_pgfault);
700
+ arl_expect(mem->arl_base, "total_pgmajfault", &mem->total_pgmajfault);
701
}
702
703
arl_begin(mem->arl_base);
@@ -717,7 +719,8 @@ static inline void cgroup_read_memory(struct memory *mem) {
719
mem->updated_detailed = 1;
720
721
if(unlikely(mem->enabled_detailed == CONFIG_BOOLEAN_AUTO)) {
720
- if(mem->cache || mem->dirty || mem->rss || mem->rss_huge || mem->mapped_file || mem->writeback || mem->swap || mem->pgpgin || mem->pgpgout || mem->pgfault || mem->pgmajfault)
722
+ if(mem->total_cache || mem->total_dirty || mem->total_rss || mem->total_rss_huge || mem->total_mapped_file || mem->total_writeback
723
+ || mem->total_swap || mem->total_pgpgin || mem->total_pgpgout || mem->total_pgfault || mem->total_pgmajfault)
724
mem->enabled_detailed = CONFIG_BOOLEAN_YES;
725
else
726
mem->delay_counter_detailed = cgroup_recheck_zero_mem_detailed_every_iterations;
@@ -2081,49 +2084,49 @@ void update_systemd_services_charts(
2084
if(unlikely(!cg->rd_mem_usage))
2085
cg->rd_mem_usage = rrddim_add(st_mem_usage, cg->chart_id, cg->chart_title, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
2086
2084
- rrddim_set_by_pointer(st_mem_usage, cg->rd_mem_usage, cg->memory.usage_in_bytes - ((cgroup_used_memory_without_cache)?cg->memory.cache:0));
2087
+ rrddim_set_by_pointer(st_mem_usage, cg->rd_mem_usage, cg->memory.usage_in_bytes - ((cgroup_used_memory_without_cache)?cg->memory.total_cache:0));
2088
}
2089
2090
if(likely(do_mem_detailed && cg->memory.updated_detailed)) {
2091
if(unlikely(!cg->rd_mem_detailed_rss))
2092
cg->rd_mem_detailed_rss = rrddim_add(st_mem_detailed_rss, cg->chart_id, cg->chart_title, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
2093
2091
- rrddim_set_by_pointer(st_mem_detailed_rss, cg->rd_mem_detailed_rss, cg->memory.rss + cg->memory.rss_huge);
2094
+ rrddim_set_by_pointer(st_mem_detailed_rss, cg->rd_mem_detailed_rss, cg->memory.total_rss + cg->memory.total_rss_huge);
2095
2096
if(unlikely(!cg->rd_mem_detailed_mapped))
2097
cg->rd_mem_detailed_mapped = rrddim_add(st_mem_detailed_mapped, cg->chart_id, cg->chart_title, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
2098
2096
- rrddim_set_by_pointer(st_mem_detailed_mapped, cg->rd_mem_detailed_mapped, cg->memory.mapped_file);
2099
+ rrddim_set_by_pointer(st_mem_detailed_mapped, cg->rd_mem_detailed_mapped, cg->memory.total_mapped_file);
2100
2101
if(unlikely(!cg->rd_mem_detailed_cache))
2102
cg->rd_mem_detailed_cache = rrddim_add(st_mem_detailed_cache, cg->chart_id, cg->chart_title, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
2103
2101
- rrddim_set_by_pointer(st_mem_detailed_cache, cg->rd_mem_detailed_cache, cg->memory.cache);
2104
+ rrddim_set_by_pointer(st_mem_detailed_cache, cg->rd_mem_detailed_cache, cg->memory.total_cache);
2105
2106
if(unlikely(!cg->rd_mem_detailed_writeback))
2107
cg->rd_mem_detailed_writeback = rrddim_add(st_mem_detailed_writeback, cg->chart_id, cg->chart_title, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
2108
2106
- rrddim_set_by_pointer(st_mem_detailed_writeback, cg->rd_mem_detailed_writeback, cg->memory.writeback);
2109
+ rrddim_set_by_pointer(st_mem_detailed_writeback, cg->rd_mem_detailed_writeback, cg->memory.total_writeback);
2110
2111
if(unlikely(!cg->rd_mem_detailed_pgfault))
2112
cg->rd_mem_detailed_pgfault = rrddim_add(st_mem_detailed_pgfault, cg->chart_id, cg->chart_title, system_page_size, 1024 * 1024, RRD_ALGORITHM_INCREMENTAL);
2113
2111
- rrddim_set_by_pointer(st_mem_detailed_pgfault, cg->rd_mem_detailed_pgfault, cg->memory.pgfault);
2114
+ rrddim_set_by_pointer(st_mem_detailed_pgfault, cg->rd_mem_detailed_pgfault, cg->memory.total_pgfault);
2115
2116
if(unlikely(!cg->rd_mem_detailed_pgmajfault))
2117
cg->rd_mem_detailed_pgmajfault = rrddim_add(st_mem_detailed_pgmajfault, cg->chart_id, cg->chart_title, system_page_size, 1024 * 1024, RRD_ALGORITHM_INCREMENTAL);
2118
2116
- rrddim_set_by_pointer(st_mem_detailed_pgmajfault, cg->rd_mem_detailed_pgmajfault, cg->memory.pgmajfault);
2119
+ rrddim_set_by_pointer(st_mem_detailed_pgmajfault, cg->rd_mem_detailed_pgmajfault, cg->memory.total_pgmajfault);
2120
2121
if(unlikely(!cg->rd_mem_detailed_pgpgin))
2122
cg->rd_mem_detailed_pgpgin = rrddim_add(st_mem_detailed_pgpgin, cg->chart_id, cg->chart_title, system_page_size, 1024 * 1024, RRD_ALGORITHM_INCREMENTAL);
2123
2121
- rrddim_set_by_pointer(st_mem_detailed_pgpgin, cg->rd_mem_detailed_pgpgin, cg->memory.pgpgin);
2124
+ rrddim_set_by_pointer(st_mem_detailed_pgpgin, cg->rd_mem_detailed_pgpgin, cg->memory.total_pgpgin);
2125
2126
if(unlikely(!cg->rd_mem_detailed_pgpgout))
2127
cg->rd_mem_detailed_pgpgout = rrddim_add(st_mem_detailed_pgpgout, cg->chart_id, cg->chart_title, system_page_size, 1024 * 1024, RRD_ALGORITHM_INCREMENTAL);
2128
2126
- rrddim_set_by_pointer(st_mem_detailed_pgpgout, cg->rd_mem_detailed_pgpgout, cg->memory.pgpgout);
2129
+ rrddim_set_by_pointer(st_mem_detailed_pgpgout, cg->rd_mem_detailed_pgpgout, cg->memory.total_pgpgout);
2130
}
2131
2132
if(likely(do_mem_failcnt && cg->memory.updated_failcnt)) {
@@ -2586,14 +2589,14 @@ void update_cgroup_charts(int update_every) {
2589
else
2590
rrdset_next(cg->st_mem);
2591
2589
- rrddim_set(cg->st_mem, "cache", cg->memory.cache);
2590
- rrddim_set(cg->st_mem, "rss", (cg->memory.rss > cg->memory.rss_huge)?(cg->memory.rss - cg->memory.rss_huge):0);
2592
+ rrddim_set(cg->st_mem, "cache", cg->memory.total_cache);
2593
+ rrddim_set(cg->st_mem, "rss", (cg->memory.total_rss > cg->memory.total_rss_huge)?(cg->memory.total_rss - cg->memory.total_rss_huge):0);
2594
2595
if(cg->memory.detailed_has_swap)
2593
- rrddim_set(cg->st_mem, "swap", cg->memory.swap);
2596
+ rrddim_set(cg->st_mem, "swap", cg->memory.total_swap);
2597
2595
- rrddim_set(cg->st_mem, "rss_huge", cg->memory.rss_huge);
2596
- rrddim_set(cg->st_mem, "mapped_file", cg->memory.mapped_file);
2598
+ rrddim_set(cg->st_mem, "rss_huge", cg->memory.total_rss_huge);
2599
+ rrddim_set(cg->st_mem, "mapped_file", cg->memory.total_mapped_file);
2600
rrdset_done(cg->st_mem);
2601
2602
if(unlikely(!cg->st_writeback)) {
@@ -2623,9 +2626,9 @@ void update_cgroup_charts(int update_every) {
2626
rrdset_next(cg->st_writeback);
2627
2628
if(cg->memory.detailed_has_dirty)
2626
- rrddim_set(cg->st_writeback, "dirty", cg->memory.dirty);
2629
+ rrddim_set(cg->st_writeback, "dirty", cg->memory.total_dirty);
2630
2628
- rrddim_set(cg->st_writeback, "writeback", cg->memory.writeback);
2631
+ rrddim_set(cg->st_writeback, "writeback", cg->memory.total_writeback);
2632
rrdset_done(cg->st_writeback);
2633
2634
if(unlikely(!cg->st_mem_activity)) {
@@ -2652,8 +2655,8 @@ void update_cgroup_charts(int update_every) {
2655
else
2656
rrdset_next(cg->st_mem_activity);
2657
2655
- rrddim_set(cg->st_mem_activity, "pgpgin", cg->memory.pgpgin);
2656
- rrddim_set(cg->st_mem_activity, "pgpgout", cg->memory.pgpgout);
2658
+ rrddim_set(cg->st_mem_activity, "pgpgin", cg->memory.total_pgpgin);
2659
+ rrddim_set(cg->st_mem_activity, "pgpgout", cg->memory.total_pgpgout);
2660
rrdset_done(cg->st_mem_activity);
2661
2662
if(unlikely(!cg->st_pgfaults)) {
@@ -2680,8 +2683,8 @@ void update_cgroup_charts(int update_every) {
2683
else
2684
rrdset_next(cg->st_pgfaults);
2685
2683
- rrddim_set(cg->st_pgfaults, "pgfault", cg->memory.pgfault);
2684
- rrddim_set(cg->st_pgfaults, "pgmajfault", cg->memory.pgmajfault);
2686
+ rrddim_set(cg->st_pgfaults, "pgfault", cg->memory.total_pgfault);
2687
+ rrddim_set(cg->st_pgfaults, "pgmajfault", cg->memory.total_pgmajfault);
2688
rrdset_done(cg->st_pgfaults);
2689
}
2690
@@ -2710,7 +2713,7 @@ void update_cgroup_charts(int update_every) {
2713
else
2714
rrdset_next(cg->st_mem_usage);
2715
2713
- rrddim_set(cg->st_mem_usage, "ram", cg->memory.usage_in_bytes - ((cgroup_used_memory_without_cache)?cg->memory.cache:0));
2716
+ rrddim_set(cg->st_mem_usage, "ram", cg->memory.usage_in_bytes - ((cgroup_used_memory_without_cache)?cg->memory.total_cache:0));
2717
rrddim_set(cg->st_mem_usage, "swap", (cg->memory.msw_usage_in_bytes > cg->memory.usage_in_bytes)?cg->memory.msw_usage_in_bytes - cg->memory.usage_in_bytes:0);
2718
rrdset_done(cg->st_mem_usage);
2719
@@ -2769,8 +2772,8 @@ void update_cgroup_charts(int update_every) {
2772
2773
rrdset_isnot_obsolete(cg->st_mem_usage_limit);
2774
2772
- rrddim_set(cg->st_mem_usage_limit, "available", memory_limit - (cg->memory.usage_in_bytes - ((cgroup_used_memory_without_cache)?cg->memory.cache:0)));
2773
- rrddim_set(cg->st_mem_usage_limit, "used", cg->memory.usage_in_bytes - ((cgroup_used_memory_without_cache)?cg->memory.cache:0));
2775
+ rrddim_set(cg->st_mem_usage_limit, "available", memory_limit - (cg->memory.usage_in_bytes - ((cgroup_used_memory_without_cache)?cg->memory.total_cache:0)));
2776
+ rrddim_set(cg->st_mem_usage_limit, "used", cg->memory.usage_in_bytes - ((cgroup_used_memory_without_cache)?cg->memory.total_cache:0));
2777
rrdset_done(cg->st_mem_usage_limit);
2778
}
2779
}