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.
ciomaire [Mon, 26 Jan 2015 13:02:11 +0000 (14:02 +0100)]
write_kafka plugin: Topic property not being set
Pierre-Yves Ritschard [Mon, 26 Jan 2015 12:56:29 +0000 (13:56 +0100)]
Merge pull request #910 from vincentbernat/fix/ipmi-dont-use-sigusr2
ipmi: use SIGIO instead of SIGUSR2 to avoid conflict with JVM
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.
Marc Fournier [Fri, 23 Jan 2015 14:07:44 +0000 (15:07 +0100)]
Merge pull request #906 from obazoud/patch-1
Wording automake
Micha Krause [Fri, 23 Jan 2015 13:24:54 +0000 (14:24 +0100)]
added doc CollectStatistics to section rrdcached
Fixes #907
Conflicts:
src/collectd.conf.pod
Marc Fournier [Fri, 23 Jan 2015 14:01:52 +0000 (15:01 +0100)]
mysql: document defaults to boolean config options
Vincent Bernat [Fri, 23 Jan 2015 10:57:03 +0000 (11:57 +0100)]
libstatgrab: fix detection of libstatgrab >= 0.90
Ensure linking is done after compilation of the test program, otherwise
symbols cannot be found. `LDFLAGS` and `CFLAGS` are placed before the
test program on gcc command line while `LIBS` is placed after. Even if
in our case, `LDFLAGS` also contain the lib, being put before the
program while the linking phase is done with the same command leads to
`sg_init()` never found which is misinterpreted as requiring an
argument.
Olivier Bazoud [Thu, 22 Jan 2015 15:57:35 +0000 (16:57 +0100)]
Wording automake
Marc Fournier [Tue, 20 Jan 2015 22:09:56 +0000 (23:09 +0100)]
write_http: consistent multi-instance support
This makes the plugin use `<Node>` blocks liks most other write plugins,
while maintaining backwards compatibility with `<URL>` blocks.
It's a follow up to #899, which was merely a fix for the release
branches.
Marc Fournier [Sat, 17 Jan 2015 15:10:46 +0000 (16:10 +0100)]
write_http: make callback names context-dependent
This allows multiple destinations to work again (fixes #821), using the
same logic as other write plugins.
The callback name would now be something like:
`write_http/http://example.com/endpoint`
which is not very nice.
The next step would be to change this plugin to use `<Node>` blocks
like many others, and pass the URL as a parameter inside each instance
block. So I see this patch as the minimum required to let 5.3 and 5.4
users use this plugin with multiple destinations.
Conflicts:
src/write_http.c
Marc Fournier [Sat, 17 Jan 2015 15:10:46 +0000 (16:10 +0100)]
write_http: make callback names context-dependent
This allows multiple destinations to work again (fixes #821), using the
same logic as other write plugins.
The callback name would now be something like:
`write_http/http://example.com/endpoint`
which is not very nice.
The next step would be to change this plugin to use `<Node>` blocks
like many others, and pass the URL as a parameter inside each instance
block. So I see this patch as the minimum required to let 5.3 and 5.4
users use this plugin with multiple destinations.
Marc Fournier [Fri, 16 Jan 2015 22:45:26 +0000 (23:45 +0100)]
ensure all curl-based plugins follow HTTP redirects
For the sake of consistency.
Eric Sandeen [Wed, 10 Dec 2014 21:38:09 +0000 (15:38 -0600)]
add Modbus/RTU support to modbus plugin
This allows access to a local RS-485 serial port
via the modbus plugin by specifying i.e.
Device "/dev/ttyUSB0"
Baudrate 38400
in a <Host> block.
For now it assumes 8N1; adding another config option
to support other configurations could be done later.
Lightly tested on my local setup.
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
Marc Fournier [Fri, 16 Jan 2015 16:57:00 +0000 (17:57 +0100)]
RPM specfile: misc improvements related to perl files
Avoids installing some files in two different packages & locations. Also
avoid unnecessary dependencies on -perl and -contrib packages.
Supersedes #896.
Thanks to @faxm0dem for helping work things out !
Marc Fournier [Thu, 15 Jan 2015 08:06:24 +0000 (09:06 +0100)]
write_riemann: defaults to use TCP and batching
Fixes #891
Marc Fournier [Wed, 14 Jan 2015 22:40:06 +0000 (23:40 +0100)]
RPM specfile: install client tools to a dedicated package
Avoids the package containing the daemon to depend on libcollectdclient.
Fixes #879
Marc Fournier [Wed, 14 Jan 2015 22:30:26 +0000 (23:30 +0100)]
RPM specfile: handle new write_log plugin