perf stat: Add --sync/-S option
Commit-ID: f9cef0a90c4e7637f1ec98474a1a099aec45eb65 Gitweb: http://git.kernel.org/tip/f9cef0a90c4e7637f1ec98474a1a099aec45eb65 Author: Ingo Molnar <[email protected]> AuthorDate: Thu, 28 Apr 2011 18:17:11 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Thu, 28 Apr 2011 08:39:39 +0200
perf stat: Add --sync/-S option
--sync will tell perf stat to run sync() before starting a command.
This allows IO-heavy tests to be used with --repeat, without one iteration impacting the other.
Elapsed time will stabilize for example:
before: 3.971525714 seconds time elapsed ( +- 8.56% ) after: 3.211098537 seconds time elapsed ( +- 1.52% )
So measurements will be more accurate.
Cc Peter Zijlstra <[email protected]>
Cc Arnaldo Carvalho de Melo <[email protected]>
Cc Frederic Weisbecker <[email protected]>
Signed-off-by Ingo Molnar <[email protected]>
--- tools/perf/builtin-stat.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
tools/perf/builtin-stat.c +7 -0
@@ -128,6 +128,7 @@ static pid_t target_tid = -1;static pid_t child_pid =-1 ;static bool null_run = false;static bool detailed_run = false; +static bool sync_run = false;static bool big_num = true;static int big_num_opt =-1 ;static const char *cpu_list;
@@ -819,6 +820,8 @@ static const struct option options[] = { "null run - dont start any counters"),OPT_BOOLEAN ('d' ,"detailed" , &detailed_run,"detailed run - start a lot of events" ), +OPT_BOOLEAN ('S' ,"sync" , &sync_run, +"call sync() before starting a run" ),OPT_CALLBACK_NOOPT ('B' ,"big-num" ,NULL ,NULL ,"print large numbers with thousands\' separators" , stat__set_big_num),
@@ -944,6 +947,10 @@ int cmd_stat(int argc, const char **argv, const char *prefix __used)for (run_idx =0 ; run_idx < run_count; run_idx++) {if (run_count !=1 && verbose)fprintf (stderr,"[ perf stat: executing run #%d ... ]\n" , run_idx +1 ); + +if (sync_run) +sync (); + status =run_perf_stat (argc, argv); }