tools/power turbostat: dump p-state software config
authorLen Brown <len.brown@intel.com>
Wed, 22 Feb 2017 05:11:12 +0000 (00:11 -0500)
committerLen Brown <len.brown@intel.com>
Wed, 1 Mar 2017 05:14:25 +0000 (00:14 -0500)
cpu1: cpufreq driver: acpi-cpufreq
cpu1: cpufreq governor: ondemand
cpufreq boost: 1

or

cpu0: cpufreq driver: intel_pstate
cpu0: cpufreq governor: powersave
cpufreq intel_pstate no_turbo: 0

Signed-off-by: Len Brown <len.brown@intel.com>
tools/power/x86/turbostat/turbostat.c

index 2c674ad5ab803950a8ce1380560a5c7a23a7c843..7af5f42a9792f4d1712cd55e9971e4350e512efa 100644 (file)
@@ -2979,6 +2979,54 @@ dump_sysfs_cstate_config(void)
                fclose(input);
        }
 }
+static void
+dump_sysfs_pstate_config(void)
+{
+       char path[64];
+       char driver_buf[64];
+       char governor_buf[64];
+       FILE *input;
+       int turbo;
+
+       sprintf(path, "/sys/devices/system/cpu/cpu%d/cpufreq/scaling_driver",
+                       base_cpu);
+       input = fopen(path, "r");
+       if (input == NULL) {
+               fprintf(stderr, "NSFOD %s\n", path);
+               return;
+       }
+       fgets(driver_buf, sizeof(driver_buf), input);
+       fclose(input);
+
+       sprintf(path, "/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor",
+                       base_cpu);
+       input = fopen(path, "r");
+       if (input == NULL) {
+               fprintf(stderr, "NSFOD %s\n", path);
+               return;
+       }
+       fgets(governor_buf, sizeof(governor_buf), input);
+       fclose(input);
+
+       fprintf(outf, "cpu%d: cpufreq driver: %s", base_cpu, driver_buf);
+       fprintf(outf, "cpu%d: cpufreq governor: %s", base_cpu, governor_buf);
+
+       sprintf(path, "/sys/devices/system/cpu/cpufreq/boost");
+       input = fopen(path, "r");
+       if (input != NULL) {
+               fscanf(input, "%d", &turbo);
+               fprintf(outf, "cpufreq boost: %d\n", turbo);
+               fclose(input);
+       }
+
+       sprintf(path, "/sys/devices/system/cpu/intel_pstate/no_turbo");
+       input = fopen(path, "r");
+       if (input != NULL) {
+               fscanf(input, "%d", &turbo);
+               fprintf(outf, "cpufreq intel_pstate no_turbo: %d\n", turbo);
+               fclose(input);
+       }
+}
 
 
 /*
@@ -4168,6 +4216,8 @@ void process_cpuid()
 
        if (!quiet)
                dump_sysfs_cstate_config();
+       if (!quiet)
+               dump_sysfs_pstate_config();
 
        if (has_skl_msrs(family, model))
                calculate_tsc_tweak();