Marc Fournier [Tue, 5 May 2015 20:10:16 +0000 (22:10 +0200)]
Turbostat: reorganise metric names
The `plugin_instance` now always is the hardware element
(cpuNN/coreNN/pkgNN) the data belongs to. Any optional identifier string
is moved to the `type_instance`.
Also remove the "_W" unit suffix as the "power" `type` implies we're
dealing with Watts.
The idea is to have the naming scheme in line with the way most other
plugins usually organise data.
Marc Fournier [Fri, 1 May 2015 20:09:25 +0000 (22:09 +0200)]
RPM specfile: take turbostat plugin in account
Marc Fournier [Fri, 1 May 2015 18:45:58 +0000 (20:45 +0200)]
Turbostat: downcase plugin name in log messages
... to be consistent with the other plugins.
Marc Fournier [Fri, 1 May 2015 18:40:59 +0000 (20:40 +0200)]
Turbostat: confine AC_COMPILE_IFELSE() inside a AC_CACHE_CHECK block
The previous way of doing worked as expected, but didn't print out
anything in the summary, making it difficult to know why the plugin
wasn't built on older systems.
Vincent Brillault [Wed, 22 Apr 2015 19:45:05 +0000 (21:45 +0200)]
Turbostat: test asm/msr-index.h compatibility
Olds versions of asm/msr-index.h don't contain the required macros.
Test at least if it contains MSR_CORE_C3_RESIDENCY
Vincent Brillault [Sat, 18 Apr 2015 08:58:20 +0000 (10:58 +0200)]
Turbostat: fix thread max number detection
There is no "thread_id" and the value we compute is the direct number.
It can only be '1' or '2' and do not start at 0 like other values.
Vincent Brillault [Sat, 18 Apr 2015 08:49:46 +0000 (10:49 +0200)]
Turbostat: Initialize non existing threads cpu_id
Vincent Brillault [Sat, 18 Apr 2015 08:49:37 +0000 (10:49 +0200)]
Turbostat: Remove useless initialization
Vincent Brillault [Fri, 17 Apr 2015 15:18:06 +0000 (17:18 +0200)]
Turbostat: build only if requirements are met
Vincent Brillault [Fri, 17 Apr 2015 15:17:07 +0000 (17:17 +0200)]
Turbostat: add missing types in configure.ac
Vincent Brillault [Fri, 17 Apr 2015 15:03:35 +0000 (17:03 +0200)]
Turbostat: Only check capabilities if supported
Vincent Brillault [Fri, 17 Apr 2015 08:03:59 +0000 (10:03 +0200)]
Turbostat: remove 'common' headers
This headers are already included by the collectd headers
Vincent Brillault [Thu, 16 Apr 2015 19:33:02 +0000 (21:33 +0200)]
Turbostat: Fix a 64b to 32b truncation
Found while compiling with clang and -Wshorten-64-to-32 enabled
Vincent Brillault [Thu, 16 Apr 2015 19:23:47 +0000 (21:23 +0200)]
Turbostat: cpu/core/package number are > 0
Use unsigned integers to reprensent the cpu, core and package
numbers. Do not set it to -1 at init time.
Vincent Brillault [Thu, 16 Apr 2015 18:59:08 +0000 (20:59 +0200)]
Turbostat: Use uint32_t for 32b wrapping
Vincent Brillault [Sat, 14 Feb 2015 08:08:55 +0000 (09:08 +0100)]
Turbostat: adapt src/Makefile.am as per
4de560d2c
Vincent Brillault [Fri, 13 Feb 2015 20:04:27 +0000 (21:04 +0100)]
Turbostat: extend the configuration options
This commit adds a number of configuration options that overide
which features are enabled by the automated mechanisms.
These options should only be used to turn off unwanted features
or add (temporarily) support for a new CPU
Vincent Brillault [Fri, 13 Feb 2015 19:47:47 +0000 (20:47 +0100)]
Turbostat: simplify RAPL config and collection
There is no point configuring and collecting data which
is not submitted.
Vincent Brillault [Thu, 12 Feb 2015 20:33:40 +0000 (21:33 +0100)]
Turbostat: relax dependency on invariant TSC
Backport
d7899447535929b3672442b7b42a09ae4e48fa91
from Len Brown <len.brown@intel.com>
Turbostat can be useful on systems that do not support invariant TSC,
so allow it to run on those systgems.
All arithmetic in turbostat using the TSC value is per-processsor,
so it does not depend on the TSC values being in sync acrosss
processors.
Turbostat uses cdtime() for the measurement interval
rather than using the TSC directly, so that key metric
is also immune from variable TSC.
Turbostat has a TSC sanity check gauge:
TSC_MHz = TSC_delta/interval
If this column is constant and is close to the processor
base frequency, then the TSC is behaving properly.
The other key turbostat columns are calculated this way:
Avg_Mhz = APERF_delta/interval
Bzy_MHz = TSC_delta/APERF_delta/MPERF_delta/interval
c0 = MPERF_delta/TSC_delta
This adaptation of the original commit has not been tested on any
old CPU. This patch also re-introduce the boolean "do_smi" as such
old CPUs don't have SMI.
Vincent Brillault [Thu, 12 Feb 2015 20:06:24 +0000 (21:06 +0100)]
Turbostat: Add support for Broadwell (rapl part)
Partial backport of
4e8e863fed2e82278d29c6357de8251adb73acb9
from Len Brown <len.brown@intel.com>
Add comments on all models
Vincent Brillault [Thu, 12 Feb 2015 19:48:33 +0000 (20:48 +0100)]
Turbostat: remove 'future' Silvermont models
These models are not yet supported by upstream
Partial revert of
12bac3a7207cf264f41b69441454dbbbbad25782
Vincent Brillault [Wed, 11 Feb 2015 21:06:45 +0000 (22:06 +0100)]
Turbostat: Add (back) sanity check
This new gauge contains TSC / interval_float.
If TSC and interval_float are behaving correctly, this is supposed to be
constant. Otherwise, other measurements can be wrong
Vincent Brillault [Thu, 12 Feb 2015 18:50:29 +0000 (19:50 +0100)]
Turbostat: frequency add Averange, rename Buzy
Partial backport of
fc04cc67ea8f44124f048832a745a24bc2fa12fa
from Len Brown <len.brown@intel.com>
Add Avg_MHz column, which is the frequency that many
users expect to see -- the total number of cycles executed
over the measurement interval.
People found the previous GHz to be confusing, since
it was the speed only over the non-idle interval.
That measurement has been re-named Bzy_MHz.
Vincent Brillault [Wed, 11 Feb 2015 22:19:53 +0000 (23:19 +0100)]
Turbostat plugin: relax dependency on root
Backporting commit
98481e79b60a50d699b79292ff1b7e56e7fa8425
from Len Brown <len.brown@intel.com>
For turbostat to run as non-root, it needs to permissions:
1. read access to /dev/cpu/*/msr
via standard user/group/world file permissions
2. CAP_SYS_RAWIO
eg. # setcap cap_sys_rawio=ep $(which collectd)
Yes, running as root still works.
Vincent Brillault [Wed, 11 Feb 2015 22:00:05 +0000 (23:00 +0100)]
Turbostat: re-order init tests
Calling 'stat' on /dev/cpu/0/msr does not need any specific permission
and needs to be checked before probe_cpu.
Vincent Brillault [Wed, 4 Feb 2015 20:53:49 +0000 (21:53 +0100)]
Turbostat: Set global variable to static
Vincent Brillault [Wed, 4 Feb 2015 20:47:50 +0000 (21:47 +0100)]
Turbostat: Some reordering as per coding rules
Vincent Brillault [Wed, 4 Feb 2015 20:09:12 +0000 (21:09 +0100)]
Turbostat: Use cdtime for time resolution
Vincent Brillault [Thu, 25 Sep 2014 19:02:57 +0000 (21:02 +0200)]
Turbostat: Do not use error code, use error messages
Vincent Brillault [Thu, 25 Sep 2014 18:50:50 +0000 (20:50 +0200)]
Turbostat: init_counter cannot fail anymore
Due to the new probing system, the counter initialization cannot
fail anymore. Make init_counter and initialize_counters return void
Vincent Brillault [Tue, 23 Sep 2014 20:58:02 +0000 (22:58 +0200)]
Turbostat: value_list_t.plugin_instance limit is DATA_MAX_NAME_LEN
Vincent Brillault [Tue, 23 Sep 2014 20:55:34 +0000 (22:55 +0200)]
Turbostat: add <Plugin /> example
Vincent Brillault [Tue, 23 Sep 2014 20:47:46 +0000 (22:47 +0200)]
Turbostat: add configuration options in man page
Vincent Brillault [Tue, 23 Sep 2014 20:28:52 +0000 (22:28 +0200)]
Turbostat: check return value of vsnprintf
Vincent Brillault [Tue, 23 Sep 2014 20:22:36 +0000 (22:22 +0200)]
Turbostat: whitespace cleanup
Vincent Brillault [Tue, 23 Sep 2014 20:20:05 +0000 (22:20 +0200)]
Turbostat: enhance error/warning meesages
Vincent Brillault [Tue, 23 Sep 2014 19:40:46 +0000 (21:40 +0200)]
Turbostat: complex read register is now useless
Vincent Brillault [Tue, 23 Sep 2014 19:38:34 +0000 (21:38 +0200)]
Turbostat: remove superfluous function declaration
Vincent Brillault [Sat, 20 Sep 2014 17:45:36 +0000 (19:45 +0200)]
Turbostat: fix topology detection
Vincent Brillault [Sat, 20 Sep 2014 17:08:40 +0000 (19:08 +0200)]
Turbostat: fix allocate_cpu_set
Vincent Brillault [Sat, 20 Sep 2014 16:49:57 +0000 (18:49 +0200)]
Turbostat: this code can fail in fact...
Vincent Brillault [Sat, 20 Sep 2014 16:34:52 +0000 (18:34 +0200)]
Turbostat: last re-ordering of the module
Vincent Brillault [Sat, 20 Sep 2014 16:11:46 +0000 (18:11 +0200)]
Turbostat: Refactor topology probing
Only probe the topology once and store in locally
Vincent Brillault [Sat, 20 Sep 2014 07:55:10 +0000 (09:55 +0200)]
Turbostat: Fix minor compilation warnings
Vincent Brillault [Sat, 20 Sep 2014 07:30:47 +0000 (09:30 +0200)]
Turbostat: Re-order code and add comments
No algorithmic change in this commit
Vincent Brillault [Fri, 19 Sep 2014 20:59:45 +0000 (22:59 +0200)]
Trubostat: Refactor delta functions
- merge delta_cpu in for_all_cpus_delta
- for_all_cpus_delta: don't resolve pointers that are not used
- add comments
Jean Delvare [Thu, 1 May 2014 09:40:19 +0000 (11:40 +0200)]
turbostat: Backport 'Drop temperature checks'
The Intel 64 and IA-32 Architectures Software Developer's Manual says
that TjMax is stored in bits 23:16 of MSR_TEMPERATURE TARGET (0x1a2).
That's 8 bits, not 7, so it must be masked with 0xFF rather than 0x7F.
The manual has no mention of which values should be considered valid,
which kind of implies that they all are. Arbitrarily discarding values
outside a specific range is wrong. The upper range check had to be
fixed recently (commit
144b44b1) and the lower range check is just as
wrong. See bug #75071:
https://bugzilla.kernel.org/show_bug.cgi?id=75071
There are many Xeon processor series with TjMax of 70, 71 or 80
degrees Celsius, way below the arbitrary 85 degrees Celsius limit.
There may be other (past or future) models with even lower limits.
So drop this arbitrary check. The only value that would be clearly
invalid is 0. Everything else should be accepted.
After these changes, turbostat is aligned with what the coretemp
driver does.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
Cc: Len Brown <len.brown@intel.com>
Acked-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
[git@lerya.net: Ported to collectd turbostat plugin]
Signed-off-by: Vincent Brillault <git@lerya.net>
Vincent Brillault [Sun, 24 Aug 2014 08:37:34 +0000 (10:37 +0200)]
Turbostat: SNB & later support MSR_PKG_C2_RESIDENCY
Vincent Brillault [Sat, 23 Aug 2014 23:39:37 +0000 (01:39 +0200)]
Turbostat: add a missing fclose
Vincent Brillault [Sat, 23 Aug 2014 15:41:28 +0000 (17:41 +0200)]
Turbostat: Adding some comments
Vincent Brillault [Sat, 23 Aug 2014 15:34:52 +0000 (17:34 +0200)]
Turbostat: move set_temperature_target to setup_all_buffers
setup_all_buffers can be called after a free_all_buffers, which would
remove the tcc_activation_temp
Vincent Brillault [Sat, 23 Aug 2014 15:30:18 +0000 (17:30 +0200)]
Turbostat: don't hide the actual size of the buffer in some define
Vincent Brillault [Sat, 23 Aug 2014 15:16:07 +0000 (17:16 +0200)]
Turbostat: introduce 'delta' data sets
This patch replace the 'old = new - old' mecanism with a simpler
'delta = new - old' one
Vincent Brillault [Sat, 23 Aug 2014 14:32:29 +0000 (16:32 +0200)]
Turbostat: remove proc_stat global variable
Vincent Brillault [Sat, 23 Aug 2014 14:30:06 +0000 (16:30 +0200)]
Turbostat: use _Bool for boolean values
Vincent Brillault [Sat, 23 Aug 2014 13:53:12 +0000 (15:53 +0200)]
Turbostat: simplify aperf_mperf_unstable & skip_c[01]
Vincent Brillault [Sat, 23 Aug 2014 13:35:59 +0000 (15:35 +0200)]
Turbostat: Fix sched affinity mess
get_msr doesn't need to be run on the CPU targetted. However, when run
on another CPU, perfomances will decrease as task have to be scheduled
on another CPU. Migrating to another CPU during the setup (where only a
few get_msr are done) is probably not worth it. However, in the
get_counters function, the large number of get_msr query makes it
potentially important.
This patch also introduce the restoration of the scheduling affinity as
it was before the plugin invocation.
Vincent Brillault [Sat, 23 Aug 2014 09:22:38 +0000 (11:22 +0200)]
Turbodtat: tcc_activation_temp is a package concept, so store it in packages
Vincent Brillault [Sat, 23 Aug 2014 07:50:13 +0000 (09:50 +0200)]
Turbostat: use ssnprintf instead of snprintf
Vincent Brillault [Sat, 23 Aug 2014 09:15:57 +0000 (11:15 +0200)]
Turbostat: fix some WARNING/ERROR calls
Vincent Brillault [Sat, 23 Aug 2014 07:49:21 +0000 (09:49 +0200)]
Turbostat: use sizeof for the buffer sier of s*printf
Vincent Brillault [Sat, 23 Aug 2014 07:46:31 +0000 (09:46 +0200)]
Turbostat: better error handling for get/read_msr
Vincent Brillault [Sat, 23 Aug 2014 07:32:04 +0000 (09:32 +0200)]
Turbostat: Refactor migrate CPU before get_MSR
In two out of three "get_msr" calls, there is a CPU migration, which
does not seem to be used by something else (in one case, it was used by
the rdtsc call).
Move the migrate call directly into the open_msr function
Vincent Brillault [Sat, 23 Aug 2014 07:28:07 +0000 (09:28 +0200)]
Turbostat set_temperature_target: get msr from the correct cpu
Vincent Brillault [Sat, 23 Aug 2014 07:20:23 +0000 (09:20 +0200)]
Turbostat: Only open msr once in get_counters
Vincent Brillault [Sat, 23 Aug 2014 06:56:28 +0000 (08:56 +0200)]
Turbostat: use MSR_IA32_TSC instead of rdtsc
Vincent Brillault [Fri, 22 Aug 2014 23:06:30 +0000 (01:06 +0200)]
Turbostat: reorder checks: start with 'uid == 0 ?'
Vincent Brillault [Fri, 22 Aug 2014 22:58:25 +0000 (00:58 +0200)]
Turbostat: refactor cpu probing
Reorganization and rewriting of the cpu-probing code:
- Only support genuine_intel CPUs
- Remove variables that are always expected to be true
- Make supported pkg/core cstates more comprehensive
- Simplify rafl code (remove unused warning feature: intervals too long)
Vincent Brillault [Fri, 22 Aug 2014 22:53:10 +0000 (00:53 +0200)]
Turbostat: remove unused variable has_epb
Vincent Brillault [Fri, 22 Aug 2014 22:49:40 +0000 (00:49 +0200)]
Turbostat: remove has_aperf
We refuse to run if it's not true, so let's just assume it is
Vincent Brillault [Fri, 22 Aug 2014 22:46:42 +0000 (00:46 +0200)]
Turbostat: Remove has_invariant_tsc
We refuse to run if it's not true, so let's just assume it is
Vincent Brillault [Fri, 22 Aug 2014 22:42:49 +0000 (00:42 +0200)]
Turbostat: remove 'units' variable, only used once
Vincent Brillault [Fri, 22 Aug 2014 22:26:22 +0000 (00:26 +0200)]
Turbostat: remove unused show_* variables
Vincent Brillault [Fri, 22 Aug 2014 16:56:24 +0000 (18:56 +0200)]
Turbostat: Explain why _GNU_SOURCE is required
Vincent Brillault [Thu, 21 Aug 2014 16:15:01 +0000 (18:15 +0200)]
Turbostat: Don't manage 'Interval' manually, already done by collectd
Vincent Brillault [Thu, 21 Aug 2014 16:11:24 +0000 (18:11 +0200)]
Turbostat: specify parse_int_file format
Vincent Brillault [Thu, 21 Aug 2014 16:09:26 +0000 (18:09 +0200)]
Turbostat: replace sprintf with ssnprintf from common.h
Vincent Brillault [Thu, 21 Aug 2014 16:06:56 +0000 (18:06 +0200)]
Turbostat: expand __must_check macro and remove it
Vincent Brillault [Thu, 21 Aug 2014 16:05:36 +0000 (18:05 +0200)]
Turbostat: replace stdbool.h with C99 _Bool
Vincent Brillault [Thu, 21 Aug 2014 16:03:07 +0000 (18:03 +0200)]
Turbostat: Emphasize the origin of the code
Vincent Brillault [Thu, 21 Aug 2014 09:23:11 +0000 (11:23 +0200)]
Turbostat: Don't include msr-index.h, use standard header
Vincent Brillault [Mon, 23 Jun 2014 18:52:57 +0000 (20:52 +0200)]
Turbostat: Rename instance type "pc%02d" to "pkg%02d"
Nicolas Iooss [Mon, 23 Jun 2014 16:08:15 +0000 (18:08 +0200)]
Turbostat: make DO_OR_GOTO_ERR look like a function
Signed-off-by: Nicolas Iooss <nicolas.iooss_git@polytechnique.org>
[git@lerya.net: Ported from other git, changed commit name]
Signed-off-by: Vincent Brillault <git@lerya.net>
Vincent Brillault [Fri, 20 Jun 2014 08:30:09 +0000 (10:30 +0200)]
Turbostat plugin: refactor function declarations
- Remove horrible STATIC_MUST_CHECK macro
- Define __must_check __attribute__((warn_unused_result))
- Refactor function declaration: type only on first line
Vincent Brillault [Thu, 19 Jun 2014 22:06:42 +0000 (00:06 +0200)]
Include turbostat plugin during compilation
Vincent Brillault [Thu, 19 Jun 2014 21:39:05 +0000 (23:39 +0200)]
Add sources for new turbostat plugin
Sergey [Tue, 24 Feb 2015 21:13:00 +0000 (22:13 +0100)]
snmp plugin: add hostname to "csnmp_instance_list_add" error message
Fixes #939
Marc Fournier [Tue, 24 Feb 2015 09:02:58 +0000 (10:02 +0100)]
Merge branch 'collectd-5.4'
Conflicts:
src/Makefile.am
src/write_http.c
Marc Fournier [Tue, 24 Feb 2015 08:57:29 +0000 (09:57 +0100)]
Merge branch 'collectd-5.3' into collectd-5.4
Marc Fournier [Tue, 24 Feb 2015 06:43:22 +0000 (07:43 +0100)]
Merge branch 'collectd-4.10' into collectd-5.3
Conflicts:
src/collectd.conf.pod
trenkel [Sun, 15 Feb 2015 15:34:09 +0000 (16:34 +0100)]
Merge pull request #890 from trenkel/master
Fix compiler warnings with Python3.
Jim Radford [Tue, 17 Sep 2013 17:52:03 +0000 (17:52 +0000)]
perl plugin: plugins are linked with *_LIBADD and LIBS not *_LIBS and LIBS
Conflicts:
src/Makefile.am
Jim Radford [Wed, 7 Aug 2013 20:21:08 +0000 (13:21 -0700)]
libperl's ldopts include libaries and therefore should go in LIBS not LDFLAGS
Without this configure fails compile its libperl test program because
-lperl comes before the test program on the compiler command line.
Conflicts:
src/Makefile.am
Marc Fournier [Fri, 6 Feb 2015 15:31:26 +0000 (16:31 +0100)]
Merge pull request #390 from radford/libperl-ldopts
libperl's ldopts include libaries and therefore should go in LIBS not LDFLAGS
Eric Sandeen [Wed, 28 Jan 2015 04:36:05 +0000 (22:36 -0600)]
modbus: rename register types once more
As I was looking over my config files again, ModbusRegisterType
kind of stuck out like a sore thumb.
Modbus does talk about "read holding" and "read input" as "commands";
perhaps renaming it as this patch does is more intuitive, so that all
of the Modbus register configurations start with Register.
I'm not wedded to it, but if you like it & agree, here you go.
Thanks,
-Eric
Marc Fournier [Mon, 2 Feb 2015 10:41:48 +0000 (11:41 +0100)]
Merge pull request #908 from vincentbernat/fix/libstatgrab4
libstatgrab: fix detection of libstatgrab >= 0.90
Marc Fournier [Mon, 2 Feb 2015 10:25:03 +0000 (11:25 +0100)]
Merge pull request #902 from mfournier/write_http-node-blocks
write_http: deprecate <URL> blocks in favor of <Node>
Marc Fournier [Mon, 2 Feb 2015 10:24:08 +0000 (11:24 +0100)]
Merge pull request #899 from mfournier/write_http-multiple-destionations
write_http: make callback names context-dependent
Marc Fournier [Wed, 28 Jan 2015 14:06:28 +0000 (15:06 +0100)]
RPM specfile: doc clarification
Vincent Bernat [Fri, 23 Jan 2015 17:55:04 +0000 (18:55 +0100)]
ipmi: use SIGIO instead of SIGUSR2 to avoid conflict with JVM
Java uses SIGUSR2 to suspend/resume threads. The OpenIPMI plugins also
need a signal to resume its event loop when setting a timer. They can't
both use the same signal. We ask OpenIPMI to use SIGIO instead.
This should fix #114.