aboutsummaryrefslogtreecommitdiffstats
path: root/tools/power/x86/turbostat
diff options
context:
space:
mode:
authorLen Brown <len.brown@intel.com>2020-05-27 00:38:38 -0400
committerLen Brown <len.brown@intel.com>2020-09-03 13:48:07 -0400
commitd76bb7a09bb3b8711077912f3e80cfcf39cd9d0b (patch)
treeaeafcf2244683cab2c43bb238c4a8c4bc910bc96 /tools/power/x86/turbostat
parentx86/cpu: Add Lakefield, Alder Lake and Rocket Lake models to the to Intel CPU family (diff)
downloadlinux-dev-d76bb7a09bb3b8711077912f3e80cfcf39cd9d0b.tar.xz
linux-dev-d76bb7a09bb3b8711077912f3e80cfcf39cd9d0b.zip
tools/power turbostat: Print /dev/cpu_dma_latency
Users are puzzled when they use tuned performance and all their C-states vanish. Dump /dev/cpu_dma_latency and state whether the value is default, or constraining, to explain this situation. Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'tools/power/x86/turbostat')
-rw-r--r--tools/power/x86/turbostat/turbostat.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/tools/power/x86/turbostat/turbostat.c b/tools/power/x86/turbostat/turbostat.c
index 33b370865d16..4c679568fda4 100644
--- a/tools/power/x86/turbostat/turbostat.c
+++ b/tools/power/x86/turbostat/turbostat.c
@@ -4698,6 +4698,32 @@ unsigned int intel_model_duplicates(unsigned int model)
}
return model;
}
+
+void print_dev_latency(void)
+{
+ char *path = "/dev/cpu_dma_latency";
+ int fd;
+ int value;
+ int retval;
+
+ fd = open(path, O_RDONLY);
+ if (fd < 0) {
+ warn("fopen %s\n", path);
+ return;
+ }
+
+ retval = read(fd, (void *)&value, sizeof(int));
+ if (retval != sizeof(int)) {
+ warn("read %s\n", path);
+ close(fd);
+ return;
+ }
+ fprintf(outf, "/dev/cpu_dma_latency: %d usec (%s)\n",
+ value, value == 2000000000 ? "default" : "constrained");
+
+ close(fd);
+}
+
void process_cpuid()
{
unsigned int eax, ebx, ecx, edx;
@@ -4967,6 +4993,8 @@ void process_cpuid()
dump_cstate_pstate_config_info(family, model);
if (!quiet)
+ print_dev_latency();
+ if (!quiet)
dump_sysfs_cstate_config();
if (!quiet)
dump_sysfs_pstate_config();