]> git.baikalelectronics.ru Git - kernel.git/commit
tools/power turbostat: fix bogus summary values
authorArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
Wed, 25 Jul 2018 08:52:06 +0000 (11:52 +0300)
committerLen Brown <len.brown@intel.com>
Thu, 26 Jul 2018 18:20:39 +0000 (14:20 -0400)
commit20fb57244e01d4ca171b2ed7dcf801ef7ab68d37
tree2623818ee7da7a05f507126d6a2583fb94fd4baf
parent4fbda7ef43378e261af3e8195d5cdfc1fdb60061
tools/power turbostat: fix bogus summary values

This patch fixes a regression introduced in

commit 4afafee5d44b ("tools/power turbostat: track thread ID in cpu_topology")

Turbostat uses incorrect cores number ('topo.num_cores') - its value is count
of logical CPUs, instead of count of physical cores. So it is twice as large as
it should be on a typical Intel system. For example, on a 6 core Xeon system
'topo.num_cores' is 12, and on a 52 core Xeon system 'topo.num_cores' is 104.

And interestingly, on a 68-core Knights Landing Intel system 'topo.num_cores'
is 272, because this system has 4 logical CPUs per core.

As a result, some of the turbostat calculations are incorrect. For example,
on idle 52-core Xeon system when all cores are ~99% in Core C6 (CPU%c6), the
summary (very first) line shows ~48% Core C6, while it should be ~99%.

This patch fixes the problem by fixing 'topo.num_cores' calculation.

Was:

1. Init 'thread_id' for all CPUs to -1
2. Run 'get_thread_siblings()' which sets it to 0 or 1
3. Increment 'topo.num_cores' when thread_id != -1 (bug!)

Now:

1. Init 'thread_id' for all CPUs to -1
2. Run 'get_thread_siblings()' which sets it to 0 or 1
3. Increment 'topo.num_cores' when thread_id is not 0

I did not have a chance to test this on an AMD machine, and only tested on a
couple of Intel Xeons (6 and 52 cores).

Reported-by: Vladislav Govtva <vladislav.govtva@intel.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
tools/power/x86/turbostat/turbostat.c