perf record: Add missing -C option support for specifying profile cpu
perf top supports a -C for setting the profile CPU, but perf record does not. This adds the same option for perf record, allowing the user to specify a specific target profile CPU. Signed-off-by: Jens Axboe <jens.axboe@oracle.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Mike Galbraith <efault@gmx.de> Cc: Paul Mackerras <paulus@samba.org> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> LKML-Reference: <20090812091801.GC12579@kernel.dk> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
1340e6bbaf
commit
0a5ac84650
|
@ -35,6 +35,7 @@ static const char *output_name = "perf.data";
|
||||||
static int group = 0;
|
static int group = 0;
|
||||||
static unsigned int realtime_prio = 0;
|
static unsigned int realtime_prio = 0;
|
||||||
static int system_wide = 0;
|
static int system_wide = 0;
|
||||||
|
static int profile_cpu = -1;
|
||||||
static pid_t target_pid = -1;
|
static pid_t target_pid = -1;
|
||||||
static int inherit = 1;
|
static int inherit = 1;
|
||||||
static int force = 0;
|
static int force = 0;
|
||||||
|
@ -431,6 +432,8 @@ try_again:
|
||||||
|
|
||||||
if (err == EPERM)
|
if (err == EPERM)
|
||||||
die("Permission error - are you root?\n");
|
die("Permission error - are you root?\n");
|
||||||
|
else if (err == ENODEV && profile_cpu != -1)
|
||||||
|
die("No such device - did you specify an out-of-range profile CPU?\n");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If it's cycles then fall back to hrtimer
|
* If it's cycles then fall back to hrtimer
|
||||||
|
@ -564,9 +567,15 @@ static int __cmd_record(int argc, const char **argv)
|
||||||
if (pid == -1)
|
if (pid == -1)
|
||||||
pid = getpid();
|
pid = getpid();
|
||||||
|
|
||||||
open_counters(-1, pid);
|
open_counters(profile_cpu, pid);
|
||||||
} else for (i = 0; i < nr_cpus; i++)
|
} else {
|
||||||
|
if (profile_cpu != -1) {
|
||||||
|
open_counters(profile_cpu, target_pid);
|
||||||
|
} else {
|
||||||
|
for (i = 0; i < nr_cpus; i++)
|
||||||
open_counters(i, target_pid);
|
open_counters(i, target_pid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (file_new)
|
if (file_new)
|
||||||
perf_header__write(header, output);
|
perf_header__write(header, output);
|
||||||
|
@ -645,6 +654,8 @@ static const struct option options[] = {
|
||||||
"system-wide collection from all CPUs"),
|
"system-wide collection from all CPUs"),
|
||||||
OPT_BOOLEAN('A', "append", &append_file,
|
OPT_BOOLEAN('A', "append", &append_file,
|
||||||
"append to the output file to do incremental profiling"),
|
"append to the output file to do incremental profiling"),
|
||||||
|
OPT_INTEGER('C', "profile_cpu", &profile_cpu,
|
||||||
|
"CPU to profile on"),
|
||||||
OPT_BOOLEAN('f', "force", &force,
|
OPT_BOOLEAN('f', "force", &force,
|
||||||
"overwrite existing data file"),
|
"overwrite existing data file"),
|
||||||
OPT_LONG('c', "count", &default_interval,
|
OPT_LONG('c', "count", &default_interval,
|
||||||
|
|
Loading…
Reference in New Issue