@cryptotaxi247 / netdata-1 / commits / 6f0d13fbb

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 }