提交 07211960 编写于 作者: L Len Brown

tools/power turbostat: on SIGUSR1: sample, print and continue

Interval-mode turbostat now catches and discards SIGUSR1.

Thus, SIGUSR1 can be used to tell turbostat to cut short
the current measurement interval.  Turbostat will then start
the next measurement interval using the regular interval length.

This can be used to give turbostat variable intervals.
Invoke turbostat with --interval LARGE_NUMBER_SEC
and have a program that has permission to send it a SIGUSR1
always before LARGE_NUMBER_SEC expires.

It may also be useful to use "--enable Time_Of_Day_Seconds"
to observe the actual interval length.
Signed-off-by: NLen Brown <len.brown@intel.com>
上级 8aa2ed0b
...@@ -271,6 +271,10 @@ CPU PRF_CTRL ...@@ -271,6 +271,10 @@ CPU PRF_CTRL
SIGINT will interrupt interval-mode. SIGINT will interrupt interval-mode.
The end-of-interval data will be collected and displayed before turbostat exits. The end-of-interval data will be collected and displayed before turbostat exits.
SIGUSR1 will end current interval,
end-of-interval data will be collected and displayed before turbostat
starts a new interval.
.SH NOTES .SH NOTES
.B "turbostat " .B "turbostat "
......
...@@ -2610,6 +2610,10 @@ static void signal_handler (int signal) ...@@ -2610,6 +2610,10 @@ static void signal_handler (int signal)
if (debug) if (debug)
fprintf(stderr, " SIGINT\n"); fprintf(stderr, " SIGINT\n");
break; break;
case SIGUSR1:
if (debug > 1)
fprintf(stderr, "SIGUSR1\n");
break;
} }
} }
...@@ -2623,6 +2627,8 @@ void setup_signal_handler(void) ...@@ -2623,6 +2627,8 @@ void setup_signal_handler(void)
if (sigaction(SIGINT, &sa, NULL) < 0) if (sigaction(SIGINT, &sa, NULL) < 0)
err(1, "sigaction SIGINT"); err(1, "sigaction SIGINT");
if (sigaction(SIGUSR1, &sa, NULL) < 0)
err(1, "sigaction SIGUSR1");
} }
void turbostat_loop() void turbostat_loop()
{ {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册