properly show not collected systemd services
Costa Tsaousis (ktsaou) committed
Jan 18, 2017 at 03:03 UTC
668ed2cfc7c5825bbd9b5b69b69c7fb694eb191d
3 files changed
+23
-29
src/inlined.h
+5
-1
@@ -59,10 +59,14 @@ static inline int read_single_number_file(const char *filename, unsigned long lo
59
char buffer[1024 + 1];
60
61
int fd = open(filename, O_RDONLY, 0666);
62
- if(unlikely(fd == -1)) return 1;
62
+ if(unlikely(fd == -1)) {
63
+ *result = 0;
64
+ return 1;
65
+ }
66
67
ssize_t r = read(fd, buffer, 1024);
68
if(unlikely(r == -1)) {
69
+ *result = 0;
70
close(fd);
71
return 2;
72
}
src/main.c
+1
-1
@@ -251,7 +251,7 @@ void help(int exitcode) {
251
if(max_len_arg > 30) max_len_arg = 30;
252
if(max_len_arg < 20) max_len_arg = 20;
253
254
- fprintf(stream, "\n"
254
+ fprintf(stream, "%s", "\n"
255
" ^\n"
256
" |.-. .-. .-. .-. . netdata \n"
257
" | '-' '-' '-' '-' real-time performance monitoring, done right! \n"
src/sys_fs_cgroup.c
+17
-27
@@ -313,7 +313,8 @@ struct memory {
313
char *filename_msw_usage_in_bytes;
314
char *filename_failcnt;
315
316
- int detailed_has_dirty_swap;
316
+ int detailed_has_dirty;
317
+ int detailed_has_swap;
318
319
// detailed metrics
320
unsigned long long cache;
@@ -707,13 +708,13 @@ static inline void cgroup_read_memory(struct memory *mem) {
708
709
if(unlikely(hash == dirty_hash && !strcmp(s, "dirty"))) {
710
mem->dirty = strtoull(procfile_lineword(ff, i, 1), NULL, 10);
710
- mem->detailed_has_dirty_swap = 1;
711
+ mem->detailed_has_dirty = 1;
712
continue;
713
}
714
715
if(unlikely(hash == swap_hash && !strcmp(s, "swap"))) {
716
mem->swap = strtoull(procfile_lineword(ff, i, 1), NULL, 10);
716
- mem->detailed_has_dirty_swap = 1;
717
+ mem->detailed_has_swap = 1;
718
continue;
719
}
720
@@ -866,26 +867,16 @@ memory_next:
867
868
// read usage_in_bytes
869
if(likely(mem->filename_usage_in_bytes)) {
869
- if(likely(!read_single_number_file(mem->filename_usage_in_bytes, &mem->usage_in_bytes))) {
870
- mem->updated_usage_in_bytes = 1;
871
-
872
- if(unlikely(mem->enabled_usage_in_bytes == CONFIG_ONDEMAND_ONDEMAND && mem->usage_in_bytes))
873
- mem->enabled_usage_in_bytes = CONFIG_ONDEMAND_YES;
874
- }
875
- else
876
- mem->updated_usage_in_bytes = 0;
870
+ mem->updated_usage_in_bytes = !read_single_number_file(mem->filename_usage_in_bytes, &mem->usage_in_bytes);
871
+ if(unlikely(mem->updated_usage_in_bytes && mem->enabled_usage_in_bytes == CONFIG_ONDEMAND_ONDEMAND && mem->usage_in_bytes))
872
+ mem->enabled_usage_in_bytes = CONFIG_ONDEMAND_YES;
873
}
874
875
// read msw_usage_in_bytes
876
if(likely(mem->filename_msw_usage_in_bytes)) {
881
- if(likely(!read_single_number_file(mem->filename_msw_usage_in_bytes, &mem->msw_usage_in_bytes))) {
882
- mem->updated_msw_usage_in_bytes = 1;
883
-
884
- if(unlikely(mem->enabled_msw_usage_in_bytes == CONFIG_ONDEMAND_ONDEMAND && mem->msw_usage_in_bytes))
885
- mem->enabled_msw_usage_in_bytes = CONFIG_ONDEMAND_YES;
886
- }
887
- else
888
- mem->updated_msw_usage_in_bytes = 0;
877
+ mem->updated_msw_usage_in_bytes = !read_single_number_file(mem->filename_msw_usage_in_bytes, &mem->msw_usage_in_bytes);
878
+ if(unlikely(mem->updated_msw_usage_in_bytes && mem->enabled_msw_usage_in_bytes == CONFIG_ONDEMAND_ONDEMAND && mem->msw_usage_in_bytes))
879
+ mem->enabled_msw_usage_in_bytes = CONFIG_ONDEMAND_YES;
880
}
881
882
// read failcnt
@@ -894,10 +885,9 @@ memory_next:
885
mem->updated_failcnt = 0;
886
mem->delay_counter_failcnt--;
887
}
897
- else if(likely(!read_single_number_file(mem->filename_failcnt, &mem->failcnt))) {
898
- mem->updated_failcnt = 1;
899
-
900
- if(unlikely(mem->enabled_failcnt == CONFIG_ONDEMAND_ONDEMAND)) {
888
+ else {
889
+ mem->updated_failcnt = !read_single_number_file(mem->filename_failcnt, &mem->failcnt);
890
+ if(unlikely(mem->updated_failcnt && mem->enabled_failcnt == CONFIG_ONDEMAND_ONDEMAND)) {
891
if(unlikely(!mem->failcnt))
892
mem->delay_counter_failcnt = cgroup_recheck_zero_mem_failcnt_every_iterations;
893
else
@@ -2064,7 +2054,7 @@ void update_cgroup_charts(int update_every) {
2054
2055
rrddim_add(cg->st_mem, "cache", NULL, 1, 1024 * 1024, RRDDIM_ABSOLUTE);
2056
rrddim_add(cg->st_mem, "rss", NULL, 1, 1024 * 1024, RRDDIM_ABSOLUTE);
2067
- if(cg->memory.detailed_has_dirty_swap)
2057
+ if(cg->memory.detailed_has_swap)
2058
rrddim_add(cg->st_mem, "swap", NULL, 1, 1024 * 1024, RRDDIM_ABSOLUTE);
2059
rrddim_add(cg->st_mem, "rss_huge", NULL, 1, 1024 * 1024, RRDDIM_ABSOLUTE);
2060
rrddim_add(cg->st_mem, "mapped_file", NULL, 1, 1024 * 1024, RRDDIM_ABSOLUTE);
@@ -2074,7 +2064,7 @@ void update_cgroup_charts(int update_every) {
2064
2065
rrddim_set(cg->st_mem, "cache", cg->memory.cache);
2066
rrddim_set(cg->st_mem, "rss", cg->memory.rss);
2077
- if(cg->memory.detailed_has_dirty_swap)
2067
+ if(cg->memory.detailed_has_swap)
2068
rrddim_set(cg->st_mem, "swap", cg->memory.swap);
2069
rrddim_set(cg->st_mem, "rss_huge", cg->memory.rss_huge);
2070
rrddim_set(cg->st_mem, "mapped_file", cg->memory.mapped_file);
@@ -2087,14 +2077,14 @@ void update_cgroup_charts(int update_every) {
2077
cg->st_writeback = rrdset_create(type, "writeback", NULL, "mem", "cgroup.writeback", title, "MB", CHART_PRIORITY_CONTAINERS + 300, update_every, RRDSET_TYPE_AREA);
2078
}
2079
2090
- if(cg->memory.detailed_has_dirty_swap)
2080
+ if(cg->memory.detailed_has_dirty)
2081
rrddim_add(cg->st_writeback, "dirty", NULL, 1, 1024 * 1024, RRDDIM_ABSOLUTE);
2082
rrddim_add(cg->st_writeback, "writeback", NULL, 1, 1024 * 1024, RRDDIM_ABSOLUTE);
2083
}
2084
else
2085
rrdset_next(cg->st_writeback);
2086
2097
- if(cg->memory.detailed_has_dirty_swap)
2087
+ if(cg->memory.detailed_has_dirty)
2088
rrddim_set(cg->st_writeback, "dirty", cg->memory.dirty);
2089
rrddim_set(cg->st_writeback, "writeback", cg->memory.writeback);
2090
rrdset_done(cg->st_writeback);