Skip to content

Commit

Permalink
tools/power/turbostat: Obey allowed CPUs during startup
Browse files Browse the repository at this point in the history
Set turbostat CPU affinity to make sure turbostat is running on one of
the allowed CPUs.

Set base_cpu to the first allowed CPU so that some platform information
is dumped using one of the allowed CPUs.

Signed-off-by: Zhang Rui <rui.zhang@intel.com>
  • Loading branch information
zhang-rui committed Oct 20, 2023
1 parent 4ede6d1 commit 7bb3fe2
Showing 1 changed file with 14 additions and 7 deletions.
21 changes: 14 additions & 7 deletions tools/power/x86/turbostat/turbostat.c
Original file line number Diff line number Diff line change
Expand Up @@ -5731,6 +5731,10 @@ void topology_probe()
}
}

if (!CPU_COUNT_S(cpu_allowed_setsize, cpu_allowed_set))
err(-ENODEV, "No valid cpus found");
sched_setaffinity(0, cpu_allowed_setsize, cpu_allowed_set);

/*
* Allocate and initialize cpu_affinity_set
*/
Expand Down Expand Up @@ -5941,12 +5945,17 @@ void setup_all_buffers(void)

void set_base_cpu(void)
{
base_cpu = sched_getcpu();
if (base_cpu < 0)
err(-ENODEV, "No valid cpus found");
int i;

if (debug > 1)
fprintf(outf, "base_cpu = %d\n", base_cpu);
for (i = 0; i < topo.max_cpu_num + 1; ++i) {
if (cpu_is_not_allowed(i))
continue;
base_cpu = i;
if (debug > 1)
fprintf(outf, "base_cpu = %d\n", base_cpu);
return;
}
err(-ENODEV, "No valid cpus found");
}

void turbostat_init()
Expand Down Expand Up @@ -5976,8 +5985,6 @@ int fork_it(char **argv)
first_counter_read = 0;
if (status)
exit(status);
/* clear affinity side-effect of get_counters() */
sched_setaffinity(0, cpu_present_setsize, cpu_present_set);
gettimeofday(&tv_even, (struct timezone *)NULL);

child_pid = fork();
Expand Down

0 comments on commit 7bb3fe2

Please sign in to comment.