diff options
Diffstat (limited to 'daemon/common.c')
-rw-r--r-- | daemon/common.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/daemon/common.c b/daemon/common.c index 85d638631..6eae07cff 100644 --- a/daemon/common.c +++ b/daemon/common.c @@ -19,3 +19,38 @@ int32_t netdata_configured_utc_offset = 0; int netdata_ready; int netdata_cloud_setting; +long get_netdata_cpus(void) { + static long processors = 0; + + if(processors) + return processors; + + long cores_proc_stat = get_system_cpus_with_cache(false, true); + long cores_cpuset_v1 = (long)read_cpuset_cpus("/sys/fs/cgroup/cpuset/cpuset.cpus", cores_proc_stat); + long cores_cpuset_v2 = (long)read_cpuset_cpus("/sys/fs/cgroup/cpuset.cpus", cores_proc_stat); + + if(cores_cpuset_v2) + processors = cores_cpuset_v2; + else if(cores_cpuset_v1) + processors = cores_cpuset_v1; + else + processors = cores_proc_stat; + + long cores_user_configured = config_get_number(CONFIG_SECTION_GLOBAL, "cpu cores", processors); + + errno = 0; + internal_error(true, + "System CPUs: %ld, (" + "system: %ld, cgroups cpuset v1: %ld, cgroups cpuset v2: %ld, netdata.conf: %ld" + ")" + , processors + , cores_proc_stat + , cores_cpuset_v1 + , cores_cpuset_v2 + , cores_user_configured + ); + + processors = cores_user_configured; + + return processors; +} |