OSDN Git Service

tools/power turbostat: Print /dev/cpu_dma_latency
authorLen Brown <len.brown@intel.com>
Wed, 27 May 2020 04:38:38 +0000 (00:38 -0400)
committerLen Brown <len.brown@intel.com>
Thu, 3 Sep 2020 17:48:07 +0000 (13:48 -0400)
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>
tools/power/x86/turbostat/turbostat.c

index 33b3708..4c67956 100644 (file)
@@ -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();