perf: add support for specifying profile cpu for record
PATCH 1/1 perf: add support for specifying profile cpu for record
Hi,
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.
tools/perf/builtin-record.c +13 -3
@@ -35,6 +35,7 @@ static const char *output_name = "perf.data";static int group =0 ;static unsigned int realtime_prio =0 ;static int system_wide =0 ; +static int profile_cpu =-1 ;static pid_t target_pid =-1 ;static int inherit =1 ;static int force =0 ;
@@ -425,6 +426,9 @@ try_again:if (err ==EPERM )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
@@ -554,9 +558,13 @@ static int __cmd_record(int argc, const char **argv)if (pid ==-1 ) pid =getpid (); -open_counters (-1 , pid); - }else for (i =0 ; i < nr_cpus; i++) -open_counters (i, target_pid); +open_counters (profile_cpu, pid); + }else if (profile_cpu !=-1 ) +open_counters (profile_cpu, target_pid); +else { +for (i =0 ; i < nr_cpus; i++) +open_counters (i, target_pid); + }if (file_new)perf_header__write (header, output);
@@ -635,6 +643,8 @@ static const struct option options[] = { "system-wide collection from all CPUs"),OPT_BOOLEAN ('A' ,"append" , &append_file,"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,"overwrite existing data file" ), OPT_LONG('c', "count", &default_interval,
Signature · 1 line
Jens Axboe
[tip:perfcounters/urgent] perf record: Add missing -C option support for specifying profile cpu
Commit-ID: 009eb52b6580a92e5fb35f77f94b8cc11c963d9d Gitweb: http://git.kernel.org/tip/009eb52b6580a92e5fb35f77f94b8cc11c963d9d Author: Jens Axboe <[email protected]> AuthorDate: Wed, 12 Aug 2009 11:18:01 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Wed, 12 Aug 2009 11:35:45 +0200
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.
LKML-Reference: <[email protected]>
--- tools/perf/builtin-record.c | 17 ++++++++++++++--- 1 files changed, 14 insertions(+), 3 deletions(-)
tools/perf/builtin-record.c +14 -3
@@ -35,6 +35,7 @@ static const char *output_name = "perf.data";static int group =0 ;static unsigned int realtime_prio =0 ;static int system_wide =0 ; +static int profile_cpu =-1 ;static pid_t target_pid =-1 ;static int inherit =1 ;static int force =0 ;
@@ -431,6 +432,8 @@ try_again:if (err ==EPERM )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
@@ -564,9 +567,15 @@ static int __cmd_record(int argc, const char **argv)if (pid ==-1 ) pid =getpid (); -open_counters (-1 , pid); - }else for (i =0 ; i < nr_cpus; i++) -open_counters (i, target_pid); +open_counters (profile_cpu, pid); + }else { +if (profile_cpu !=-1 ) { +open_counters (profile_cpu, target_pid); + }else { +for (i =0 ; i < nr_cpus; i++) +open_counters (i, target_pid); + } + }if (file_new)perf_header__write (header, output);
@@ -645,6 +654,8 @@ static const struct option options[] = { "system-wide collection from all CPUs"),OPT_BOOLEAN ('A' ,"append" , &append_file,"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,"overwrite existing data file" ), OPT_LONG('c', "count", &default_interval,
[tip:perfcounters/urgent] perf record: Add missing -C option support for specifying profile cpu
In reply to Jens AxboeCommit-ID: 0a5ac84650fb7a7f226814103d95724e34b012ae Gitweb: http://git.kernel.org/tip/0a5ac84650fb7a7f226814103d95724e34b012ae Author: Jens Axboe <[email protected]> AuthorDate: Wed, 12 Aug 2009 11:18:01 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Wed, 12 Aug 2009 14:10:51 +0200
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.
LKML-Reference: <[email protected]>
--- tools/perf/builtin-record.c | 17 ++++++++++++++--- 1 files changed, 14 insertions(+), 3 deletions(-)
tools/perf/builtin-record.c +14 -3
@@ -35,6 +35,7 @@ static const char *output_name = "perf.data";static int group =0 ;static unsigned int realtime_prio =0 ;static int system_wide =0 ; +static int profile_cpu =-1 ;static pid_t target_pid =-1 ;static int inherit =1 ;static int force =0 ;
@@ -431,6 +432,8 @@ try_again:if (err ==EPERM )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
@@ -564,9 +567,15 @@ static int __cmd_record(int argc, const char **argv)if (pid ==-1 ) pid =getpid (); -open_counters (-1 , pid); - }else for (i =0 ; i < nr_cpus; i++) -open_counters (i, target_pid); +open_counters (profile_cpu, pid); + }else { +if (profile_cpu !=-1 ) { +open_counters (profile_cpu, target_pid); + }else { +for (i =0 ; i < nr_cpus; i++) +open_counters (i, target_pid); + } + }if (file_new)perf_header__write (header, output);
@@ -645,6 +654,8 @@ static const struct option options[] = { "system-wide collection from all CPUs"),OPT_BOOLEAN ('A' ,"append" , &append_file,"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,"overwrite existing data file" ), OPT_LONG('c', "count", &default_interval,