• A
    tools/power turbostat: fix bogus summary values · 4f206a0f
    Artem Bityutskiy 提交于
    This patch fixes a regression introduced in
    
    commit 8cb48b32 ("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: NVladislav Govtva <vladislav.govtva@intel.com>
    Signed-off-by: NArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
    Signed-off-by: NLen Brown <len.brown@intel.com>
    4f206a0f
turbostat.c 144.7 KB