Skip to content

Commit

Permalink
Merge branch 'pr/2056'
Browse files Browse the repository at this point in the history
  • Loading branch information
octo committed Nov 28, 2016
2 parents 2a82b09 + 3d15f72 commit 77ad300
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 30 deletions.
65 changes: 36 additions & 29 deletions src/collectd.conf.pod
Original file line number Diff line number Diff line change
Expand Up @@ -7518,7 +7518,7 @@ couple metrics: number of records, and database size on disk.

=item B<Host> I<Hostname/IP>

The hostname or ip which identifies the server.
The hostname or IP which identifies the server.
Default: B<127.0.0.1>

=item B<Port> I<Service/Port>
Expand All @@ -7532,61 +7532,60 @@ Default: B<1978>
=head2 Plugin C<turbostat>

The I<Turbostat plugin> reads CPU frequency and C-state residency on modern
Intel processors by using the new Model Specific Registers.
Intel processors by using I<Model Specific Registers>.

=over 4

=item B<CoreCstates> I<Bitmask(Integer)>

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<Example:>

All states (3, 6 and 7):
(1<<3) + (1<<6) + (1<<7) = 392

=item B<PackageCstates> I<Bitmask(Integer)>

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<SystemManagementInterrupt> I<true>|I<false>
B<Example:>

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<DigitalTemperatureSensor> I<true>|I<false>
=item B<SystemManagementInterrupt> I<true>|I<false>

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<DigitalTemperatureSensor> I<true>|I<false>

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<TCCActivationTemp> I<Temperature>

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<MSR_IA32_TEMPERATURE_TARGET>
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<MSR_IA32_TEMPERATURE_TARGET>.

=item B<RunningAveragePowerLimit> I<Bitmask(Integer)>

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

Expand All @@ -7600,6 +7599,14 @@ by this plugin are:

=back

=item B<LogicalCoreNames> I<true>|I<false>

Boolean enabling the use of logical core numbering for per core statistics.
When enabled, C<cpuE<lt>nE<gt>> is used as plugin instance, where I<n> is a
sequential number assigned by the kernel. Otherwise, C<coreE<lt>nE<gt>> is used
where I<n> is the n-th core of the socket, causing name conflicts when there is
more than one socket.

=back

=head2 Plugin C<unixsock>
Expand Down
16 changes: 15 additions & 1 deletion src/turbostat.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -225,6 +230,7 @@ static const char *config_keys[] =
"PackageThermalManagement",
"TCCActivationTemp",
"RunningAveragePowerLimit",
"LogicalCoreNames",
};
static const int config_keys_num = STATIC_ARRAY_SIZE (config_keys);

Expand Down Expand Up @@ -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)
Expand All @@ -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);
Expand Down Expand Up @@ -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) {
Expand Down

0 comments on commit 77ad300

Please sign in to comment.