diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod index f1134ab4bb..27c4e16ec3 100644 --- a/src/collectd.conf.pod +++ b/src/collectd.conf.pod @@ -7518,7 +7518,7 @@ couple metrics: number of records, and database size on disk. =item B I -The hostname or ip which identifies the server. +The hostname or IP which identifies the server. Default: B<127.0.0.1> =item B I @@ -7532,61 +7532,60 @@ Default: B<1978> =head2 Plugin C The I reads CPU frequency and C-state residency on modern -Intel processors by using the new Model Specific Registers. +Intel processors by using I. =over 4 =item B I -Bitmask of the list of core C states supported by the processor. +Bit mask of the list of core C-states supported by the processor. This option should only be used if the automated detection fails. -Default value extracted from the cpu model and family. +Default value extracted from the CPU model and family. Currently supported C-states (by this plugin): 3, 6, 7 -Example: (1<<3)+(1<<6)+(1<<7) = 392 for all states +B + + All states (3, 6 and 7): + (1<<3) + (1<<6) + (1<<7) = 392 =item B I -Bitmask of the list of pacages C states supported by the processor. -This option should only be used if the automated detection fails. -Default value extracted from the cpu model and family. +Bit mask of the list of packages C-states supported by the processor. This +option should only be used if the automated detection fails. Default value +extracted from the CPU model and family. Currently supported C-states (by this plugin): 2, 3, 6, 7, 8, 9, 10 -Example: (1<<2)+(1<<3)+(1<<6)+(1<<7) = 396 for states 2, 3, 6 and 7 - -=item B I|I +B -Boolean enabling the collection of the I/O System-Management Interrupt -counter'. This option should only be used if the automated detection -fails or if you want to disable this feature. + States 2, 3, 6 and 7: + (1<<2) + (1<<3) + (1<<6) + (1<<7) = 396 -=item B I|I +=item B I|I -Boolean enabling the collection of the temperature of each core. -This option should only be used if the automated detectionfails or -if you want to disable this feature. +Boolean enabling the collection of the I/O System-Management Interrupt counter. +This option should only be used if the automated detection fails or if you want +to disable this feature. =item B I|I -Boolean enabling the collection of the temperature of each package. -This option should only be used if the automated detectionfails or -if you want to disable this feature. +Boolean enabling the collection of the temperature of each core. This option +should only be used if the automated detection fails or if you want to disable +this feature. =item B I -Thermal Control Circuit Activation Temperature of the installed -CPU. This temperature is used when collecting the temperature of -cores or packages. This option should only be used if the automated -detection fails. Default value extracted from B +I of the installed CPU. This +temperature is used when collecting the temperature of cores or packages. This +option should only be used if the automated detection fails. Default value +extracted from B. =item B I -Bitmask of the list of elements to be thermally monitored. This option -should only be used if the automated detection fails or if you want to -disable some collections. The different bits of this bitmask accepted -by this plugin are: +Bit mask of the list of elements to be thermally monitored. This option should +only be used if the automated detection fails or if you want to disable some +collections. The different bits of this bit mask accepted by this plugin are: =over 4 @@ -7600,6 +7599,14 @@ by this plugin are: =back +=item B I|I + +Boolean enabling the use of logical core numbering for per core statistics. +When enabled, CnE> is used as plugin instance, where I is a +sequential number assigned by the kernel. Otherwise, CnE> is used +where I is the n-th core of the socket, causing name conflicts when there is +more than one socket. + =back =head2 Plugin C diff --git a/src/turbostat.c b/src/turbostat.c index 3132149030..c242b6eeb6 100644 --- a/src/turbostat.c +++ b/src/turbostat.c @@ -64,6 +64,11 @@ */ static _Bool aperf_mperf_unstable; +/* + * If set, use kernel logical core numbering for all "per core" metrics. + */ +static _Bool config_lcn; + /* * Bitmask of the list of core C states supported by the processor. * Currently supported C-states (by this plugin): 3, 6, 7 @@ -225,6 +230,7 @@ static const char *config_keys[] = "PackageThermalManagement", "TCCActivationTemp", "RunningAveragePowerLimit", + "LogicalCoreNames", }; static const int config_keys_num = STATIC_ARRAY_SIZE (config_keys); @@ -551,6 +557,9 @@ submit_counters(struct thread_data *t, struct core_data *c, struct pkg_data *p) interval_float = CDTIME_T_TO_DOUBLE(time_delta); + DEBUG("turbostat plugin: submit stats for cpu: %d, core: %d, pkg: %d", + t->cpu_id, c->core_id, p->package_id); + ssnprintf(name, sizeof(name), "cpu%02d", t->cpu_id); if (!aperf_mperf_unstable) @@ -574,7 +583,10 @@ submit_counters(struct thread_data *t, struct core_data *c, struct pkg_data *p) if (!(t->flags & CPU_IS_FIRST_THREAD_IN_CORE)) goto done; - ssnprintf(name, sizeof(name), "core%02d", c->core_id); + /* If not using logical core numbering, set core id */ + if (!config_lcn) { + ssnprintf(name, sizeof(name), "core%02d", c->core_id); + } if (do_core_cstate & (1 << 3)) turbostat_submit(name, "percent", "c3", 100.0 * c->c3/t->tsc); @@ -1566,6 +1578,8 @@ turbostat_config(const char *key, const char *value) } else if (strcasecmp("PackageThermalManagement", key) == 0) { config_ptm = IS_TRUE(value); apply_config_ptm = 1; + } else if (strcasecmp("LogicalCoreNames", key) == 0) { + config_lcn = IS_TRUE(value); } else if (strcasecmp("RunningAveragePowerLimit", key) == 0) { tmp_val = strtoul(value, &end, 0); if (*end != '\0' || tmp_val > UINT_MAX) {