Skip to content

Commit

Permalink
cpupower: Do not analyse offlined cpus
Browse files Browse the repository at this point in the history
Use sysfs_is_cpu_online(cpu) instead of cpufreq_cpu_exists(cpu) to detect offlined cpus.

Re-arrange printfs slightly to have a consistent output even if you have multiple CPUs
as output and even if offlined cores are in between.

Signed-off-by: Thomas Renninger <trenn@suse.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  • Loading branch information
Thomas Renninger authored and Rafael J. Wysocki committed Dec 3, 2015
1 parent e51207f commit ce512b8
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 15 deletions.
11 changes: 8 additions & 3 deletions tools/power/cpupower/utils/cpufreq-info.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include <getopt.h>

#include "cpufreq.h"
#include "helpers/sysfs.h"
#include "helpers/helpers.h"
#include "helpers/bitmask.h"

Expand Down Expand Up @@ -647,11 +648,14 @@ int cmd_freq_info(int argc, char **argv)

if (!bitmask_isbitset(cpus_chosen, cpu))
continue;
if (cpufreq_cpu_exists(cpu)) {
printf(_("couldn't analyze CPU %d as it doesn't seem to be present\n"), cpu);

printf(_("analyzing CPU %d:\n"), cpu);

if (sysfs_is_cpu_online(cpu) != 1) {
printf(_(" *is offline\n"));
printf("\n");
continue;
}
printf(_("analyzing CPU %d:\n"), cpu);

switch (output_param) {
case 'b':
Expand Down Expand Up @@ -693,6 +697,7 @@ int cmd_freq_info(int argc, char **argv)
}
if (ret)
return ret;
printf("\n");
}
return ret;
}
16 changes: 10 additions & 6 deletions tools/power/cpupower/utils/cpuidle-info.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
#include <stdlib.h>
#include <string.h>
#include <getopt.h>
#include <cpufreq.h>

#include "helpers/helpers.h"
#include "helpers/sysfs.h"
Expand All @@ -25,8 +24,6 @@ static void cpuidle_cpu_output(unsigned int cpu, int verbose)
unsigned int idlestates, idlestate;
char *tmp;

printf(_ ("Analyzing CPU %d:\n"), cpu);

idlestates = sysfs_get_idlestate_count(cpu);
if (idlestates == 0) {
printf(_("CPU %u: No idle states\n"), cpu);
Expand Down Expand Up @@ -71,7 +68,6 @@ static void cpuidle_cpu_output(unsigned int cpu, int verbose)
printf(_("Duration: %llu\n"),
sysfs_get_idlestate_time(cpu, idlestate));
}
printf("\n");
}

static void cpuidle_general_output(void)
Expand Down Expand Up @@ -189,10 +185,17 @@ int cmd_idle_info(int argc, char **argv)
for (cpu = bitmask_first(cpus_chosen);
cpu <= bitmask_last(cpus_chosen); cpu++) {

if (!bitmask_isbitset(cpus_chosen, cpu) ||
cpufreq_cpu_exists(cpu))
if (!bitmask_isbitset(cpus_chosen, cpu))
continue;

printf(_("analyzing CPU %d:\n"), cpu);

if (sysfs_is_cpu_online(cpu) != 1) {
printf(_(" *is offline\n"));
printf("\n");
continue;
}

switch (output_param) {

case 'o':
Expand All @@ -203,6 +206,7 @@ int cmd_idle_info(int argc, char **argv)
cpuidle_cpu_output(cpu, verbose);
break;
}
printf("\n");
}
return EXIT_SUCCESS;
}
9 changes: 6 additions & 3 deletions tools/power/cpupower/utils/cpupower-info.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
#include <string.h>
#include <getopt.h>

#include <cpufreq.h>
#include "helpers/helpers.h"
#include "helpers/sysfs.h"

Expand Down Expand Up @@ -83,12 +82,16 @@ int cmd_info(int argc, char **argv)
for (cpu = bitmask_first(cpus_chosen);
cpu <= bitmask_last(cpus_chosen); cpu++) {

if (!bitmask_isbitset(cpus_chosen, cpu) ||
cpufreq_cpu_exists(cpu))
if (!bitmask_isbitset(cpus_chosen, cpu))
continue;

printf(_("analyzing CPU %d:\n"), cpu);

if (sysfs_is_cpu_online(cpu) != 1){
printf(_(" *is offline\n"));
continue;
}

if (params.perf_bias) {
ret = msr_intel_get_perf_bias(cpu);
if (ret < 0) {
Expand Down
10 changes: 7 additions & 3 deletions tools/power/cpupower/utils/cpupower-set.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
#include <string.h>
#include <getopt.h>

#include <cpufreq.h>
#include "helpers/helpers.h"
#include "helpers/sysfs.h"
#include "helpers/bitmask.h"
Expand Down Expand Up @@ -78,10 +77,15 @@ int cmd_set(int argc, char **argv)
for (cpu = bitmask_first(cpus_chosen);
cpu <= bitmask_last(cpus_chosen); cpu++) {

if (!bitmask_isbitset(cpus_chosen, cpu) ||
cpufreq_cpu_exists(cpu))
if (!bitmask_isbitset(cpus_chosen, cpu))
continue;

if (sysfs_is_cpu_online(cpu) != 1){
fprintf(stderr, _("Cannot set values on CPU %d:"), cpu);
fprintf(stderr, _(" *is offline\n"));
continue;
}

if (params.perf_bias) {
ret = msr_intel_set_perf_bias(cpu, perf_bias);
if (ret) {
Expand Down

0 comments on commit ce512b8

Please sign in to comment.