Commit 6ee9fc63 authored by Artem Bityutskiy's avatar Artem Bityutskiy Committed by Len Brown

tools/power turbostat: do not enforce 1ms

Turbostat works by taking a snapshot of counters, sleeping, taking another
snapshot, calculating deltas, and printing out the table.

The sleep time is controlled via -i option or by user sending a signal or a
character to stdin. In the latter case, turbostat always adds 1 ms
sleep before it reads the counters, in order to avoid larger imprecisions
in the results in prints.

While the 1 ms delay may be a good idea for a "dumb" user, it is a
problem for an "aware" user. I do thousands and thousands of measurements
over a short period of time (like 2ms), and turbostat unconditionally adds
a 1ms to my interval, so I cannot get what I really need.

This patch removes the unconditional 1ms sleep. This is an expert user
tool, after all, and non-experts will unlikely ever use it in the non-fixed
interval mode anyway, so I think it is OK to remove the 1ms delay.
Signed-off-by: default avatarArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent c026c236
...@@ -39,7 +39,6 @@ FILE *outf; ...@@ -39,7 +39,6 @@ FILE *outf;
int *fd_percpu; int *fd_percpu;
struct timeval interval_tv = {5, 0}; struct timeval interval_tv = {5, 0};
struct timespec interval_ts = {5, 0}; struct timespec interval_ts = {5, 0};
struct timespec one_msec = {0, 1000000};
unsigned int num_iterations; unsigned int num_iterations;
unsigned int debug; unsigned int debug;
unsigned int quiet; unsigned int quiet;
...@@ -2994,8 +2993,6 @@ static void signal_handler (int signal) ...@@ -2994,8 +2993,6 @@ static void signal_handler (int signal)
fprintf(stderr, "SIGUSR1\n"); fprintf(stderr, "SIGUSR1\n");
break; break;
} }
/* make sure this manually-invoked interval is at least 1ms long */
nanosleep(&one_msec, NULL);
} }
void setup_signal_handler(void) void setup_signal_handler(void)
...@@ -3046,8 +3043,6 @@ void do_sleep(void) ...@@ -3046,8 +3043,6 @@ void do_sleep(void)
rest.tv_nsec = (tout.tv_usec % 1000000) * 1000; rest.tv_nsec = (tout.tv_usec % 1000000) * 1000;
nanosleep(&rest, NULL); nanosleep(&rest, NULL);
} }
/* make sure this manually-invoked interval is at least 1ms long */
nanosleep(&one_msec, NULL);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment