Code

turbostat: better support for mutli packages
authorVincent Brillault <git@lerya.net>
Mon, 25 Sep 2017 19:35:50 +0000 (21:35 +0200)
committerVincent Brillault <git@lerya.net>
Mon, 25 Sep 2017 19:49:15 +0000 (21:49 +0200)
If multiple packages are defined, support non-logical core enumeration
by prefixing each core id by its package id

src/collectd.conf.pod
src/turbostat.c

index 3be5d4b8edf8025a2e609920741ab19dadc5b6eb..d52da7a3a03820629719a8273a724c7119a17377 100644 (file)
@@ -8223,9 +8223,9 @@ collections. The different bits of this bit mask accepted by this plugin are:
 
 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.
+dynamic number assigned by the kernel. Otherwise, C<coreE<lt>nE<gt>> is used
+if there is only one package and C<pkgE<lt>nE<gt>-coreE<lt>mE<gt>> if there is
+more than one, where I<n> is the n-th core of package I<m>.
 
 =back
 
index 1049fb2ad3ce0803254e0cb35c8381a40234e86a..b77691f169dfca872acc29cc53dfa4e3be5dd16c 100644 (file)
@@ -585,7 +585,10 @@ static int submit_counters(struct thread_data *t, struct core_data *c,
 
   /* If not using logical core numbering, set core id */
   if (!config_lcn) {
-    snprintf(name, sizeof(name), "core%02d", c->core_id);
+    if (topology.num_packages > 1)
+      snprintf(name, sizeof(name), "pkg%02d-core%02d", p->package_id, c->core_id);
+    else
+      snprintf(name, sizeof(name), "core%02d", c->core_id);
   }
 
   if (do_core_cstate & (1 << 3))