Re: [PATCH 1/3] perf record: support duration option to run duringspecified time

From: Sukadev Bhattiprolu
Date: Fri Jun 28 2013 - 20:27:58 EST


Joonsoo Kim [iamjoonsoo.kim@xxxxxxx] wrote:
| Currently, there is no method to quit at specified time later.
| We are used to using 'sleep N' as command argument if we need it,
| but explicitly supporting this feature maybe makes sense.
|
| Cc: Namhyung Kim <namhyung@xxxxxxxxxx>
| Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@xxxxxxx>
|
| diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
| index cdf58ec..19c65b5 100644
| --- a/tools/perf/builtin-record.c
| +++ b/tools/perf/builtin-record.c
| @@ -29,6 +29,7 @@
| #include <sched.h>
| #include <sys/mman.h>
|
| +static unsigned int duration;
| #ifndef HAVE_ON_EXIT
| #ifndef ATEXIT_MAX
| #define ATEXIT_MAX 32
| @@ -194,7 +195,7 @@ static void perf_record__sig_exit(int exit_status __maybe_unused, void *arg)
| psignal(WTERMSIG(status), rec->progname);
| }
|
| - if (signr == -1 || signr == SIGUSR1)
| + if (signr == -1 || signr == SIGUSR1 || signr == SIGALRM)
| return;
|
| signal(signr, SIG_DFL);
| @@ -404,6 +405,7 @@ static int __cmd_record(struct perf_record *rec, int argc, const char **argv)
| signal(SIGCHLD, sig_handler);
| signal(SIGINT, sig_handler);
| signal(SIGUSR1, sig_handler);
| + signal(SIGALRM, sig_handler);
|
| if (!output_name) {
| if (!fstat(STDOUT_FILENO, &st) && S_ISFIFO(st.st_mode))
| @@ -471,6 +473,7 @@ static int __cmd_record(struct perf_record *rec, int argc, const char **argv)
| goto out_delete_session;
| }
|
| + alarm(duration);
| if (forks) {
| err = perf_evlist__prepare_workload(evsel_list, &opts->target,
| argv, opts->pipe_output,
| @@ -955,6 +958,7 @@ const struct option record_options[] = {
| parse_branch_stack),
| OPT_BOOLEAN('W', "weight", &record.opts.sample_weight,
| "sample by weight (on special events only)"),
| + OPT_UINTEGER(0, "duration", &duration, "run during specified seconds"),

nit: A slight ambiguity in the help text. Would you mind changing it to:

"run for specified duration (seconds)" ?

Sukadev

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/