linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/1] perf stat: Add support to print counts for fixed times
@ 2018-01-17 12:37 ufo19890607
  2018-01-17 12:37 ` [PATCH 1/1] " ufo19890607
  0 siblings, 1 reply; 4+ messages in thread
From: ufo19890607 @ 2018-01-17 12:37 UTC (permalink / raw)
  To: peterz, mingo, alexander.shishkin, jolsa, dsahern, namhyung,
	milian.wolff, arnaldo.melo, yuzhoujian, adrian.hunter, wangnan0
  Cc: linux-perf-users, linux-kernel, acme

From: yuzhoujian <yuzhoujian@didichuxing.com>

Introduce a new option to print counts for fixed number of times
and update perf-stat documentation accordingly.

Show below is the output of the new option for perf stat.

	$perf stat -I 1000 --times-print 2 -e cycles -a
	#           time             counts unit events
	     1.002827089         93,884,870      cycles
             2.004231506         56,573,446      cycles

We can just print the counts for several times with this newly introduced
option. The usage of it is a little like vmstat.

        $ vmstat -n 1 2 
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 78270544 547484 51732076    0    0     0    20    1    1  1  0 99  0  0
 0  0      0 78270512 547484 51732080    0    0     0    16  477 1555  0  0 100  0  0

yuzhoujian (1):
  perf stat: Add support to print counts for fixed times

 tools/perf/Documentation/perf-stat.txt |  5 +++++
 tools/perf/builtin-stat.c              | 13 +++++++++++++
 tools/perf/util/stat.h                 |  1 +
 3 files changed, 19 insertions(+)

-- 
2.14.1

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/1] perf stat: Add support to print counts for fixed times
  2018-01-17 12:37 [PATCH 0/1] perf stat: Add support to print counts for fixed times ufo19890607
@ 2018-01-17 12:37 ` ufo19890607
  2018-01-23 14:24   ` Jiri Olsa
  0 siblings, 1 reply; 4+ messages in thread
From: ufo19890607 @ 2018-01-17 12:37 UTC (permalink / raw)
  To: peterz, mingo, alexander.shishkin, jolsa, dsahern, namhyung,
	milian.wolff, arnaldo.melo, yuzhoujian, adrian.hunter, wangnan0
  Cc: linux-perf-users, linux-kernel, acme

From: yuzhoujian <yuzhoujian@didichuxing.com>

Introduce a new option to print counts for fixed number of times
and update perf-stat documentation accordingly.

Show below is the output of the new option for perf stat.

	$perf stat -I 1000 --times-print 2 -e cycles -a
        #           time             counts unit events
             1.002827089         93,884,870      cycles
             2.004231506         56,573,446      cycles

We can just print the counts for several times with this newly introduced
option. The usage of it is a little like vmstat.

        $ vmstat -n 1 2
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 78270544 547484 51732076    0    0     0    20    1    1  1  0 99  0  0
 0  0      0 78270512 547484 51732080    0    0     0    16  477 1555  0  0 100  0  0

Signed-off-by: yuzhoujian <yuzhoujian@didichuxing.com>
---
 tools/perf/Documentation/perf-stat.txt |  5 +++++
 tools/perf/builtin-stat.c              | 13 +++++++++++++
 tools/perf/util/stat.h                 |  1 +
 3 files changed, 19 insertions(+)

diff --git a/tools/perf/Documentation/perf-stat.txt b/tools/perf/Documentation/perf-stat.txt
index 823fce7674bb..8c4526c287c4 100644
--- a/tools/perf/Documentation/perf-stat.txt
+++ b/tools/perf/Documentation/perf-stat.txt
@@ -146,6 +146,11 @@ Print count deltas every N milliseconds (minimum: 10ms)
 The overhead percentage could be high in some cases, for instance with small, sub 100ms intervals.  Use with caution.
 	example: 'perf stat -I 1000 -e cycles -a sleep 5'
 
+--times-print::
+Print count deltas for fixed number of times.
+This option should be used together with "-I" option.
+	example: 'perf stat -I 1000 --times-print 2 -e cycles -a'
+
 --metric-only::
 Only print computed metrics. Print them in a single line.
 Don't show any raw values. Not supported with --per-thread.
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 98bf9d32f222..47459109110f 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -168,6 +168,7 @@ static struct timespec		ref_time;
 static struct cpu_map		*aggr_map;
 static aggr_get_id_t		aggr_get_id;
 static bool			append_file;
+static bool			times_print;
 static const char		*output_name;
 static int			output_fd;
 static int			print_free_counters_hint;
@@ -700,6 +701,10 @@ static int __run_perf_stat(int argc, const char **argv)
 			while (!waitpid(child_pid, &status, WNOHANG)) {
 				nanosleep(&ts, NULL);
 				process_interval();
+				if (times_print == true) {
+					if (--stat_config.times == 0)
+						break;
+				}
 			}
 		}
 		waitpid(child_pid, &status, 0);
@@ -718,6 +723,10 @@ static int __run_perf_stat(int argc, const char **argv)
 			nanosleep(&ts, NULL);
 			if (interval)
 				process_interval();
+			if (times_print == true) {
+				if (--stat_config.times == 0)
+					break;
+			}
 		}
 	}
 
@@ -1891,6 +1900,8 @@ static const struct option stat_options[] = {
 			"command to run after to the measured command"),
 	OPT_UINTEGER('I', "interval-print", &stat_config.interval,
 		    "print counts at regular interval in ms (>= 10)"),
+	OPT_INTEGER(0, "times-print", &stat_config.times,
+		    "print counts for fixed number of times"),
 	OPT_SET_UINT(0, "per-socket", &stat_config.aggr_mode,
 		     "aggregate counts per processor socket", AGGR_SOCKET),
 	OPT_SET_UINT(0, "per-core", &stat_config.aggr_mode,
@@ -2870,6 +2881,8 @@ int cmd_stat(int argc, const char **argv)
 				   "The overhead percentage could be high in some cases. "
 				   "Please proceed with caution.\n");
 	}
+	if (stat_config.times)
+		times_print = true;
 
 	if (perf_evlist__alloc_stats(evsel_list, interval))
 		goto out;
diff --git a/tools/perf/util/stat.h b/tools/perf/util/stat.h
index dbc6f7134f61..b2f8a347d358 100644
--- a/tools/perf/util/stat.h
+++ b/tools/perf/util/stat.h
@@ -90,6 +90,7 @@ struct perf_stat_config {
 	bool		scale;
 	FILE		*output;
 	unsigned int	interval;
+	int				times;
 	struct runtime_stat *stats;
 	int		stats_num;
 };
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/1] perf stat: Add support to print counts for fixed times
  2018-01-17 12:37 ` [PATCH 1/1] " ufo19890607
@ 2018-01-23 14:24   ` Jiri Olsa
       [not found]     ` <CAHCio2g-V-ojoi0igHSHNjj3ouzyhU+sO5WJSDHdZXGpUsZ7Ew@mail.gmail.com>
  0 siblings, 1 reply; 4+ messages in thread
From: Jiri Olsa @ 2018-01-23 14:24 UTC (permalink / raw)
  To: ufo19890607
  Cc: peterz, mingo, alexander.shishkin, jolsa, dsahern, namhyung,
	milian.wolff, arnaldo.melo, yuzhoujian, adrian.hunter, wangnan0,
	linux-perf-users, linux-kernel, acme

On Wed, Jan 17, 2018 at 01:37:25PM +0100, ufo19890607 wrote:
> From: yuzhoujian <yuzhoujian@didichuxing.com>
> 
> Introduce a new option to print counts for fixed number of times
> and update perf-stat documentation accordingly.
> 
> Show below is the output of the new option for perf stat.
> 
> 	$perf stat -I 1000 --times-print 2 -e cycles -a
>         #           time             counts unit events
>              1.002827089         93,884,870      cycles
>              2.004231506         56,573,446      cycles

you can do that with following command:

[jolsa@krava perf]$ sudo ./perf stat -I 1000 -e cycles -a sleep 2
#           time             counts unit events
     1.000160132        437,471,026      cycles                                                      
     2.000367121        729,415,520      cycles                                                      
     2.000857390          1,407,820      cycles                                                      


jirka

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/1] perf stat: Add support to print counts for fixed times
       [not found]     ` <CAHCio2g-V-ojoi0igHSHNjj3ouzyhU+sO5WJSDHdZXGpUsZ7Ew@mail.gmail.com>
@ 2018-01-24  7:39       ` Jiri Olsa
  0 siblings, 0 replies; 4+ messages in thread
From: Jiri Olsa @ 2018-01-24  7:39 UTC (permalink / raw)
  To: 禹舟键
  Cc: Peter Zijlstra, mingo, Alexander Shishkin, Jiri Olsa,
	David Ahern, Namhyung Kim, Milian Wolff,
	Arnaldo Carvalho de Melo, Wind Yu, Adrian Hunter, Wang Nan,
	linux-perf-users, linux-kernel, acme

On Wed, Jan 24, 2018 at 10:03:08AM +0800, 禹舟键 wrote:
> Hi Jirka
> How can you control the output for perf stat, if the "--interval-print" is
> not 1000, eg. 2000, 3000, 5000.
> 
> root@node10:/home$ ./perf stat -e cycles -a -I 2000 sleep 3
> #           time             counts unit events
>      2.001361101        695,569,361      cycles
>      3.003249250         57,904,006      cycles
> root@node10:/home$ ./perf stat -e cycles -a -I 2000 --times-print 3
> #           time             counts unit events
>      2.002784924        128,438,406
> cycles
>      4.004290885         93,128,097
> cycles
>      6.005726281        111,303,359      cycles


[jolsa@krava perf]$ sudo ./perf stat -e cycles -a -I 2000 --times-print 3
#           time             counts unit events
     2.000161257      1,197,889,478      cycles                                                      
     4.000424645      2,905,635,530      cycles                                                      
     6.000589943      1,658,546,001      cycles                                                      
[jolsa@krava perf]$ sudo ./perf stat -e cycles -a -I 2000 sleep 6
#           time             counts unit events
     2.000248489      1,224,257,116      cycles                                                      
     4.000489261      3,171,435,328      cycles                                                      
     6.000766440      4,092,029,501      cycles                                                      
     6.916537222        563,745,072      cycles                                                      

jirka

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-01-24  7:39 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-17 12:37 [PATCH 0/1] perf stat: Add support to print counts for fixed times ufo19890607
2018-01-17 12:37 ` [PATCH 1/1] " ufo19890607
2018-01-23 14:24   ` Jiri Olsa
     [not found]     ` <CAHCio2g-V-ojoi0igHSHNjj3ouzyhU+sO5WJSDHdZXGpUsZ7Ew@mail.gmail.com>
2018-01-24  7:39       ` Jiri Olsa

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).