X-Git-Url: https://arthur.barton.de/gitweb/?a=blobdiff_plain;f=src%2Fsys_fs_cgroup.c;h=16d057f4031b75977d0009da3a9bbf183926ca49;hb=2cd349f942f8e973e12bc907c8b67c81ed78f2e9;hp=248f3d626fd5838ef1e396d8b54d36c41abbeca7;hpb=73212e3a8731012fee476e373f4a5b647f5126e5;p=netdata.git diff --git a/src/sys_fs_cgroup.c b/src/sys_fs_cgroup.c index 248f3d62..16d057f4 100644 --- a/src/sys_fs_cgroup.c +++ b/src/sys_fs_cgroup.c @@ -51,6 +51,8 @@ static SIMPLE_PATTERN *systemd_services_cgroups = NULL; static char *cgroups_rename_script = NULL; +static int cgroups_check = 0; + static uint32_t Read_hash = 0; static uint32_t Write_hash = 0; static uint32_t user_hash = 0; @@ -407,12 +409,14 @@ static inline void cgroup_read_cpuacct_stat(struct cpuacct_stat *cp) { ff = procfile_reopen(ff, cp->filename, NULL, PROCFILE_FLAG_DEFAULT); if(unlikely(!ff)) { cp->updated = 0; + cgroups_check = 1; return; } ff = procfile_readall(ff); if(unlikely(!ff)) { cp->updated = 0; + cgroups_check = 1; return; } @@ -449,12 +453,14 @@ static inline void cgroup_read_cpuacct_usage(struct cpuacct_usage *ca) { ff = procfile_reopen(ff, ca->filename, NULL, PROCFILE_FLAG_DEFAULT); if(unlikely(!ff)) { ca->updated = 0; + cgroups_check = 1; return; } ff = procfile_readall(ff); if(unlikely(!ff)) { ca->updated = 0; + cgroups_check = 1; return; } @@ -466,8 +472,8 @@ static inline void cgroup_read_cpuacct_usage(struct cpuacct_usage *ca) { unsigned long i = procfile_linewords(ff, 0); if(unlikely(i == 0)) { - return; ca->updated = 0; + return; } // we may have 1 more CPU reported @@ -509,12 +515,14 @@ static inline void cgroup_read_blkio(struct blkio *io) { ff = procfile_reopen(ff, io->filename, NULL, PROCFILE_FLAG_DEFAULT); if(unlikely(!ff)) { io->updated = 0; + cgroups_check = 1; return; } ff = procfile_readall(ff); if(unlikely(!ff)) { io->updated = 0; + cgroups_check = 1; return; } @@ -580,12 +588,14 @@ static inline void cgroup_read_memory(struct memory *mem) { ff = procfile_reopen(ff, mem->filename_detailed, NULL, PROCFILE_FLAG_DEFAULT); if(unlikely(!ff)) { mem->updated_detailed = 0; + cgroups_check = 1; goto memory_next; } ff = procfile_readall(ff); if(unlikely(!ff)) { mem->updated_detailed = 0; + cgroups_check = 1; goto memory_next; } @@ -2113,7 +2123,7 @@ void update_cgroup_charts(int update_every) { ); for(i = 0; i < cg->cpuacct_usage.cpus; i++) { - snprintfz(id, CHART_TITLE_MAX, "cpu%u", i); + snprintfz(id, RRD_ID_LENGTH_MAX, "cpu%u", i); rrddim_add(cg->st_cpu_per_core, id, NULL, 100, 1000000000, RRD_ALGORITHM_INCREMENTAL); } } @@ -2121,7 +2131,7 @@ void update_cgroup_charts(int update_every) { rrdset_next(cg->st_cpu_per_core); for(i = 0; i < cg->cpuacct_usage.cpus ;i++) { - snprintfz(id, CHART_TITLE_MAX, "cpu%u", i); + snprintfz(id, RRD_ID_LENGTH_MAX, "cpu%u", i); rrddim_set(cg->st_cpu_per_core, id, cg->cpuacct_usage.cpu_percpu[i]); } rrdset_done(cg->st_cpu_per_core); @@ -2516,9 +2526,10 @@ void *cgroups_main(void *ptr) { // BEGIN -- the job to be done find_dt += hb_dt; - if(unlikely(find_dt >= find_every)) { + if(unlikely(find_dt >= find_every || cgroups_check)) { find_all_cgroups(); find_dt = 0; + cgroups_check = 0; } read_all_cgroups(cgroup_root);