linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] tools/perf-bench: Add basic syscall benchmark
@ 2019-03-07 18:52 Davidlohr Bueso
  2019-03-07 19:11 ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 6+ messages in thread
From: Davidlohr Bueso @ 2019-03-07 18:52 UTC (permalink / raw)
  To: acme; +Cc: mingo, mgorman, dave, linux-kernel, Davidlohr Bueso

The usefulness of having a standard way of testing syscall performance
has come up from time to time[0]. Furthermore, some of our testing
machinery (such as 'mmtests') already makes use of a simplified version
of the microbenchmark. This patch mainly takes the same idea to measure
syscall throughput compatible with 'perf-bench' via getppid(2), yet
without any of the additional template stuff from Ingo's version (based
on numa.c). The code is identical to what mmtests uses.

https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1067469.html

Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
---
 tools/perf/bench/Build     |  1 +
 tools/perf/bench/bench.h   |  1 +
 tools/perf/bench/syscall.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++
 tools/perf/builtin-bench.c |  8 +++++
 4 files changed, 90 insertions(+)
 create mode 100644 tools/perf/bench/syscall.c

diff --git a/tools/perf/bench/Build b/tools/perf/bench/Build
index e4e321b6f883..839f9b790587 100644
--- a/tools/perf/bench/Build
+++ b/tools/perf/bench/Build
@@ -1,5 +1,6 @@
 perf-y += sched-messaging.o
 perf-y += sched-pipe.o
+perf-y += syscall.o
 perf-y += mem-functions.o
 perf-y += futex-hash.o
 perf-y += futex-wake.o
diff --git a/tools/perf/bench/bench.h b/tools/perf/bench/bench.h
index fddb3ced9db6..31ad3283d41b 100644
--- a/tools/perf/bench/bench.h
+++ b/tools/perf/bench/bench.h
@@ -29,6 +29,7 @@
 int bench_numa(int argc, const char **argv);
 int bench_sched_messaging(int argc, const char **argv);
 int bench_sched_pipe(int argc, const char **argv);
+int bench_syscall_basic(int argc, const char **argv);
 int bench_mem_memcpy(int argc, const char **argv);
 int bench_mem_memset(int argc, const char **argv);
 int bench_futex_hash(int argc, const char **argv);
diff --git a/tools/perf/bench/syscall.c b/tools/perf/bench/syscall.c
new file mode 100644
index 000000000000..149129cca639
--- /dev/null
+++ b/tools/perf/bench/syscall.c
@@ -0,0 +1,80 @@
+/*
+ *
+ * syscall.c
+ *
+ * syscall: Benchmark for system call performance
+ */
+#include "../perf.h"
+#include "../util/util.h"
+#include <subcmd/parse-options.h>
+#include "../builtin.h"
+#include "bench.h"
+
+#include <stdio.h>
+#include <locale.h>
+#include <sys/time.h>
+#include <sys/syscall.h>
+
+#define LOOPS_DEFAULT 10000000
+static	int loops = LOOPS_DEFAULT;
+
+static const struct option options[] = {
+	OPT_INTEGER('l', "loop",	&loops,		"Specify number of loops"),
+	OPT_END()
+};
+
+static const char * const bench_syscall_usage[] = {
+	"perf bench syscall <options>",
+	NULL
+};
+
+int bench_syscall_basic(int argc, const char **argv)
+{
+	struct timeval start, stop, diff;
+	unsigned long long result_usec = 0;
+	int i;
+
+	argc = parse_options(argc, argv, options, bench_syscall_usage, 0);
+
+	gettimeofday(&start, NULL);
+
+	for (i = 0; i < loops; i++)
+		getppid();
+
+	gettimeofday(&stop, NULL);
+	timersub(&stop, &start, &diff);
+
+	switch (bench_format) {
+	case BENCH_FORMAT_DEFAULT:
+		setlocale(LC_NUMERIC, "");
+		printf("# Executed %'d getppid() calls\n", loops);
+
+		result_usec = diff.tv_sec * 1000000;
+		result_usec += diff.tv_usec;
+
+		printf(" %14s: %lu.%03lu [sec]\n\n", "Total time",
+		       diff.tv_sec,
+		       (unsigned long) (diff.tv_usec/1000));
+
+		printf(" %14lf usecs/op\n",
+		       (double)result_usec / (double)loops);
+		printf(" %'14d ops/sec\n",
+		       (int)((double)loops /
+			     ((double)result_usec / (double)1000000)));
+		break;
+
+	case BENCH_FORMAT_SIMPLE:
+		printf("%lu.%03lu\n",
+		       diff.tv_sec,
+		       (unsigned long) (diff.tv_usec / 1000));
+		break;
+
+	default:
+		/* reaching here is something disaster */
+		fprintf(stderr, "Unknown format:%d\n", bench_format);
+		exit(1);
+		break;
+	}
+
+	return 0;
+}
diff --git a/tools/perf/builtin-bench.c b/tools/perf/builtin-bench.c
index 334c77ffc1d9..4e9dd0f4eced 100644
--- a/tools/perf/builtin-bench.c
+++ b/tools/perf/builtin-bench.c
@@ -11,6 +11,7 @@
  * Available benchmark collection list:
  *
  *  sched ... scheduler and IPC performance
+ *  syscall ... System call performance
  *  mem   ... memory access performance
  *  numa  ... NUMA scheduling and MM performance
  *  futex ... Futex performance
@@ -50,6 +51,12 @@ static struct bench sched_benchmarks[] = {
 	{ NULL,		NULL,						NULL			}
 };
 
+static struct bench syscall_benchmarks[] = {
+	{ "basic",	"Benchmark for basic getppid() system calls",	bench_syscall_basic	},
+	{ "all",	"Run all syscall benchmarks",			NULL			},
+	{ NULL,		NULL,						NULL			},
+};
+
 static struct bench mem_benchmarks[] = {
 	{ "memcpy",	"Benchmark for memcpy() functions",		bench_mem_memcpy	},
 	{ "memset",	"Benchmark for memset() functions",		bench_mem_memset	},
@@ -85,6 +92,7 @@ struct collection {
 
 static struct collection collections[] = {
 	{ "sched",	"Scheduler and IPC benchmarks",			sched_benchmarks	},
+	{ "syscall",	"System call benchmarks",			syscall_benchmarks	},
 	{ "mem",	"Memory access benchmarks",			mem_benchmarks		},
 #ifdef HAVE_LIBNUMA_SUPPORT
 	{ "numa",	"NUMA scheduling and MM benchmarks",		numa_benchmarks		},
-- 
2.16.4


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

* Re: [PATCH] tools/perf-bench: Add basic syscall benchmark
  2019-03-07 18:52 [PATCH] tools/perf-bench: Add basic syscall benchmark Davidlohr Bueso
@ 2019-03-07 19:11 ` Arnaldo Carvalho de Melo
  2019-03-08 18:17   ` Davidlohr Bueso
  0 siblings, 1 reply; 6+ messages in thread
From: Arnaldo Carvalho de Melo @ 2019-03-07 19:11 UTC (permalink / raw)
  To: Davidlohr Bueso
  Cc: Ingo Molnar, mgorman, linux-kernel, Davidlohr Bueso,
	Namhyung Kim, Jiri Olsa

Em Thu, Mar 07, 2019 at 10:52:53AM -0800, Davidlohr Bueso escreveu:
> The usefulness of having a standard way of testing syscall performance
> has come up from time to time[0]. Furthermore, some of our testing
> machinery (such as 'mmtests') already makes use of a simplified version
> of the microbenchmark. This patch mainly takes the same idea to measure
> syscall throughput compatible with 'perf-bench' via getppid(2), yet
> without any of the additional template stuff from Ingo's version (based
> on numa.c). The code is identical to what mmtests uses.

You forgot to update tools/perf/Documentation/perf-bench.txt, and please
take a look at tools/perf/util/pmu.c convert_scale() to see how to save
the current locale, set the one you want, then restore the previous one,
so that at the end of this benchmark the environment is back to where it
was.

Thanks.

- Arnaldo
 
> https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1067469.html
> 
> Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
> ---
>  tools/perf/bench/Build     |  1 +
>  tools/perf/bench/bench.h   |  1 +
>  tools/perf/bench/syscall.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++
>  tools/perf/builtin-bench.c |  8 +++++
>  4 files changed, 90 insertions(+)
>  create mode 100644 tools/perf/bench/syscall.c
> 
> diff --git a/tools/perf/bench/Build b/tools/perf/bench/Build
> index e4e321b6f883..839f9b790587 100644
> --- a/tools/perf/bench/Build
> +++ b/tools/perf/bench/Build
> @@ -1,5 +1,6 @@
>  perf-y += sched-messaging.o
>  perf-y += sched-pipe.o
> +perf-y += syscall.o
>  perf-y += mem-functions.o
>  perf-y += futex-hash.o
>  perf-y += futex-wake.o
> diff --git a/tools/perf/bench/bench.h b/tools/perf/bench/bench.h
> index fddb3ced9db6..31ad3283d41b 100644
> --- a/tools/perf/bench/bench.h
> +++ b/tools/perf/bench/bench.h
> @@ -29,6 +29,7 @@
>  int bench_numa(int argc, const char **argv);
>  int bench_sched_messaging(int argc, const char **argv);
>  int bench_sched_pipe(int argc, const char **argv);
> +int bench_syscall_basic(int argc, const char **argv);
>  int bench_mem_memcpy(int argc, const char **argv);
>  int bench_mem_memset(int argc, const char **argv);
>  int bench_futex_hash(int argc, const char **argv);
> diff --git a/tools/perf/bench/syscall.c b/tools/perf/bench/syscall.c
> new file mode 100644
> index 000000000000..149129cca639
> --- /dev/null
> +++ b/tools/perf/bench/syscall.c
> @@ -0,0 +1,80 @@
> +/*
> + *
> + * syscall.c
> + *
> + * syscall: Benchmark for system call performance
> + */
> +#include "../perf.h"
> +#include "../util/util.h"
> +#include <subcmd/parse-options.h>
> +#include "../builtin.h"
> +#include "bench.h"
> +
> +#include <stdio.h>
> +#include <locale.h>
> +#include <sys/time.h>
> +#include <sys/syscall.h>
> +
> +#define LOOPS_DEFAULT 10000000
> +static	int loops = LOOPS_DEFAULT;
> +
> +static const struct option options[] = {
> +	OPT_INTEGER('l', "loop",	&loops,		"Specify number of loops"),
> +	OPT_END()
> +};
> +
> +static const char * const bench_syscall_usage[] = {
> +	"perf bench syscall <options>",
> +	NULL
> +};
> +
> +int bench_syscall_basic(int argc, const char **argv)
> +{
> +	struct timeval start, stop, diff;
> +	unsigned long long result_usec = 0;
> +	int i;
> +
> +	argc = parse_options(argc, argv, options, bench_syscall_usage, 0);
> +
> +	gettimeofday(&start, NULL);
> +
> +	for (i = 0; i < loops; i++)
> +		getppid();
> +
> +	gettimeofday(&stop, NULL);
> +	timersub(&stop, &start, &diff);
> +
> +	switch (bench_format) {
> +	case BENCH_FORMAT_DEFAULT:
> +		setlocale(LC_NUMERIC, "");
> +		printf("# Executed %'d getppid() calls\n", loops);
> +
> +		result_usec = diff.tv_sec * 1000000;
> +		result_usec += diff.tv_usec;
> +
> +		printf(" %14s: %lu.%03lu [sec]\n\n", "Total time",
> +		       diff.tv_sec,
> +		       (unsigned long) (diff.tv_usec/1000));
> +
> +		printf(" %14lf usecs/op\n",
> +		       (double)result_usec / (double)loops);
> +		printf(" %'14d ops/sec\n",
> +		       (int)((double)loops /
> +			     ((double)result_usec / (double)1000000)));
> +		break;
> +
> +	case BENCH_FORMAT_SIMPLE:
> +		printf("%lu.%03lu\n",
> +		       diff.tv_sec,
> +		       (unsigned long) (diff.tv_usec / 1000));
> +		break;
> +
> +	default:
> +		/* reaching here is something disaster */
> +		fprintf(stderr, "Unknown format:%d\n", bench_format);
> +		exit(1);
> +		break;
> +	}
> +
> +	return 0;
> +}
> diff --git a/tools/perf/builtin-bench.c b/tools/perf/builtin-bench.c
> index 334c77ffc1d9..4e9dd0f4eced 100644
> --- a/tools/perf/builtin-bench.c
> +++ b/tools/perf/builtin-bench.c
> @@ -11,6 +11,7 @@
>   * Available benchmark collection list:
>   *
>   *  sched ... scheduler and IPC performance
> + *  syscall ... System call performance
>   *  mem   ... memory access performance
>   *  numa  ... NUMA scheduling and MM performance
>   *  futex ... Futex performance
> @@ -50,6 +51,12 @@ static struct bench sched_benchmarks[] = {
>  	{ NULL,		NULL,						NULL			}
>  };
>  
> +static struct bench syscall_benchmarks[] = {
> +	{ "basic",	"Benchmark for basic getppid() system calls",	bench_syscall_basic	},
> +	{ "all",	"Run all syscall benchmarks",			NULL			},
> +	{ NULL,		NULL,						NULL			},
> +};
> +
>  static struct bench mem_benchmarks[] = {
>  	{ "memcpy",	"Benchmark for memcpy() functions",		bench_mem_memcpy	},
>  	{ "memset",	"Benchmark for memset() functions",		bench_mem_memset	},
> @@ -85,6 +92,7 @@ struct collection {
>  
>  static struct collection collections[] = {
>  	{ "sched",	"Scheduler and IPC benchmarks",			sched_benchmarks	},
> +	{ "syscall",	"System call benchmarks",			syscall_benchmarks	},
>  	{ "mem",	"Memory access benchmarks",			mem_benchmarks		},
>  #ifdef HAVE_LIBNUMA_SUPPORT
>  	{ "numa",	"NUMA scheduling and MM benchmarks",		numa_benchmarks		},
> -- 
> 2.16.4

-- 

- Arnaldo

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

* Re: [PATCH] tools/perf-bench: Add basic syscall benchmark
  2019-03-07 19:11 ` Arnaldo Carvalho de Melo
@ 2019-03-08 18:17   ` Davidlohr Bueso
  2019-03-08 19:48     ` Mel Gorman
  2020-05-14 20:39     ` Josh Poimboeuf
  0 siblings, 2 replies; 6+ messages in thread
From: Davidlohr Bueso @ 2019-03-08 18:17 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Ingo Molnar, mgorman, linux-kernel, Davidlohr Bueso,
	Namhyung Kim, Jiri Olsa

On Thu, 07 Mar 2019, Arnaldo Carvalho de Melo wrote:
>You forgot to update tools/perf/Documentation/perf-bench.txt, and please
>take a look at tools/perf/util/pmu.c convert_scale() to see how to save
>the current locale, set the one you want, then restore the previous one,
>so that at the end of this benchmark the environment is back to where it
>was.

Here's an updated version with the corresponding docs, but I removed the
setlocale() - doesn't seem worth it; I hope Mel has no strong objection.

Thanks.

-------8<----------------------------------------------------------
[PATCH v2] tools/perf-bench: Add basic syscall benchmark

The usefulness of having a standard way of testing syscall performance
has come up from time to time[0]. Furthermore, some of our testing
machinery (such as 'mmtests') already makes use of a simplified version
of the microbenchmark. This patch mainly takes the same idea to measure
syscall throughput compatible with 'perf-bench' via getppid(2), yet
without any of the additional template stuff from Ingo's version (based
on numa.c). The code is identical to what mmtests uses.

[0] https://lore.kernel.org/lkml/20160201074156.GA27156@gmail.com/

Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
---
 tools/perf/Documentation/perf-bench.txt | 11 +++++
 tools/perf/bench/Build                  |  1 +
 tools/perf/bench/bench.h                |  1 +
 tools/perf/bench/syscall.c              | 78 +++++++++++++++++++++++++++++++++
 tools/perf/builtin-bench.c              |  8 ++++
 5 files changed, 99 insertions(+)
 create mode 100644 tools/perf/bench/syscall.c

diff --git a/tools/perf/Documentation/perf-bench.txt b/tools/perf/Documentation/perf-bench.txt
index 0921a3c67381..8093cafc530a 100644
--- a/tools/perf/Documentation/perf-bench.txt
+++ b/tools/perf/Documentation/perf-bench.txt
@@ -49,6 +49,9 @@ SUBSYSTEM
 'sched'::
 	Scheduler and IPC mechanisms.
 
+'syscall'::
+	System call performance (throughput).
+
 'mem'::
 	Memory access performance.
 
@@ -134,6 +137,14 @@ Example of *pipe*
                 59004 ops/sec
 ---------------------
 
+SUITES FOR 'syscall'
+~~~~~~~~~~~~~~~~~~
+*basic*::
+Suite for evaluating performance of core system call throughput (both usecs/op and ops/sec metrics).
+This uses a single thread simply doing getppid(2), which is a simple syscall where the result is not
+cached by glibc.
+
+
 SUITES FOR 'mem'
 ~~~~~~~~~~~~~~~~
 *memcpy*::
diff --git a/tools/perf/bench/Build b/tools/perf/bench/Build
index e4e321b6f883..839f9b790587 100644
--- a/tools/perf/bench/Build
+++ b/tools/perf/bench/Build
@@ -1,5 +1,6 @@
 perf-y += sched-messaging.o
 perf-y += sched-pipe.o
+perf-y += syscall.o
 perf-y += mem-functions.o
 perf-y += futex-hash.o
 perf-y += futex-wake.o
diff --git a/tools/perf/bench/bench.h b/tools/perf/bench/bench.h
index fddb3ced9db6..31ad3283d41b 100644
--- a/tools/perf/bench/bench.h
+++ b/tools/perf/bench/bench.h
@@ -29,6 +29,7 @@
 int bench_numa(int argc, const char **argv);
 int bench_sched_messaging(int argc, const char **argv);
 int bench_sched_pipe(int argc, const char **argv);
+int bench_syscall_basic(int argc, const char **argv);
 int bench_mem_memcpy(int argc, const char **argv);
 int bench_mem_memset(int argc, const char **argv);
 int bench_futex_hash(int argc, const char **argv);
diff --git a/tools/perf/bench/syscall.c b/tools/perf/bench/syscall.c
new file mode 100644
index 000000000000..409f84a4fe4f
--- /dev/null
+++ b/tools/perf/bench/syscall.c
@@ -0,0 +1,78 @@
+/*
+ *
+ * syscall.c
+ *
+ * syscall: Benchmark for system call performance
+ */
+#include "../perf.h"
+#include "../util/util.h"
+#include <subcmd/parse-options.h>
+#include "../builtin.h"
+#include "bench.h"
+
+#include <stdio.h>
+#include <sys/time.h>
+#include <sys/syscall.h>
+
+#define LOOPS_DEFAULT 10000000
+static	int loops = LOOPS_DEFAULT;
+
+static const struct option options[] = {
+	OPT_INTEGER('l', "loop",	&loops,		"Specify number of loops"),
+	OPT_END()
+};
+
+static const char * const bench_syscall_usage[] = {
+	"perf bench syscall <options>",
+	NULL
+};
+
+int bench_syscall_basic(int argc, const char **argv)
+{
+	struct timeval start, stop, diff;
+	unsigned long long result_usec = 0;
+	int i;
+
+	argc = parse_options(argc, argv, options, bench_syscall_usage, 0);
+
+	gettimeofday(&start, NULL);
+
+	for (i = 0; i < loops; i++)
+		getppid();
+
+	gettimeofday(&stop, NULL);
+	timersub(&stop, &start, &diff);
+
+	switch (bench_format) {
+	case BENCH_FORMAT_DEFAULT:
+		printf("# Executed %'d getppid() calls\n", loops);
+
+		result_usec = diff.tv_sec * 1000000;
+		result_usec += diff.tv_usec;
+
+		printf(" %14s: %lu.%03lu [sec]\n\n", "Total time",
+		       diff.tv_sec,
+		       (unsigned long) (diff.tv_usec/1000));
+
+		printf(" %14lf usecs/op\n",
+		       (double)result_usec / (double)loops);
+		printf(" %'14d ops/sec\n",
+		       (int)((double)loops /
+			     ((double)result_usec / (double)1000000)));
+		break;
+
+	case BENCH_FORMAT_SIMPLE:
+		printf("%lu.%03lu\n",
+		       diff.tv_sec,
+		       (unsigned long) (diff.tv_usec / 1000));
+		break;
+
+	default:
+		/* reaching here is something disaster */
+		fprintf(stderr, "Unknown format:%d\n", bench_format);
+		exit(1);
+		break;
+	}
+
+	return 0;
+}
diff --git a/tools/perf/builtin-bench.c b/tools/perf/builtin-bench.c
index 334c77ffc1d9..017029765404 100644
--- a/tools/perf/builtin-bench.c
+++ b/tools/perf/builtin-bench.c
@@ -11,6 +11,7 @@
  * Available benchmark collection list:
  *
  *  sched ... scheduler and IPC performance
+ *  syscall ... System call performance
  *  mem   ... memory access performance
  *  numa  ... NUMA scheduling and MM performance
  *  futex ... Futex performance
@@ -50,6 +51,12 @@ static struct bench sched_benchmarks[] = {
 	{ NULL,		NULL,						NULL			}
 };
 
+static struct bench syscall_benchmarks[] = {
+	{ "basic",	"Benchmark for basic getppid(2) calls",		bench_syscall_basic	},
+	{ "all",	"Run all syscall benchmarks",			NULL			},
+	{ NULL,		NULL,						NULL			},
+};
+
 static struct bench mem_benchmarks[] = {
 	{ "memcpy",	"Benchmark for memcpy() functions",		bench_mem_memcpy	},
 	{ "memset",	"Benchmark for memset() functions",		bench_mem_memset	},
@@ -85,6 +92,7 @@ struct collection {
 
 static struct collection collections[] = {
 	{ "sched",	"Scheduler and IPC benchmarks",			sched_benchmarks	},
+	{ "syscall",	"System call benchmarks",			syscall_benchmarks	},
 	{ "mem",	"Memory access benchmarks",			mem_benchmarks		},
 #ifdef HAVE_LIBNUMA_SUPPORT
 	{ "numa",	"NUMA scheduling and MM benchmarks",		numa_benchmarks		},
-- 
2.16.4


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

* Re: [PATCH] tools/perf-bench: Add basic syscall benchmark
  2019-03-08 18:17   ` Davidlohr Bueso
@ 2019-03-08 19:48     ` Mel Gorman
  2020-05-14 20:39     ` Josh Poimboeuf
  1 sibling, 0 replies; 6+ messages in thread
From: Mel Gorman @ 2019-03-08 19:48 UTC (permalink / raw)
  To: Davidlohr Bueso
  Cc: Arnaldo Carvalho de Melo, Ingo Molnar, linux-kernel,
	Davidlohr Bueso, Namhyung Kim, Jiri Olsa

On Fri, Mar 08, 2019 at 10:17:47AM -0800, Davidlohr Bueso wrote:
> On Thu, 07 Mar 2019, Arnaldo Carvalho de Melo wrote:
> > You forgot to update tools/perf/Documentation/perf-bench.txt, and please
> > take a look at tools/perf/util/pmu.c convert_scale() to see how to save
> > the current locale, set the one you want, then restore the previous one,
> > so that at the end of this benchmark the environment is back to where it
> > was.
> 
> Here's an updated version with the corresponding docs, but I removed the
> setlocale() - doesn't seem worth it; I hope Mel has no strong objection.
> 

No objection, thanks!

-- 
Mel Gorman
SUSE Labs

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

* Re: [PATCH] tools/perf-bench: Add basic syscall benchmark
  2019-03-08 18:17   ` Davidlohr Bueso
  2019-03-08 19:48     ` Mel Gorman
@ 2020-05-14 20:39     ` Josh Poimboeuf
  2020-07-26 14:16       ` Arnaldo Carvalho de Melo
  1 sibling, 1 reply; 6+ messages in thread
From: Josh Poimboeuf @ 2020-05-14 20:39 UTC (permalink / raw)
  To: Davidlohr Bueso
  Cc: Arnaldo Carvalho de Melo, Ingo Molnar, mgorman, linux-kernel,
	Davidlohr Bueso, Namhyung Kim, Jiri Olsa

On Fri, Mar 08, 2019 at 10:17:47AM -0800, Davidlohr Bueso wrote:
> On Thu, 07 Mar 2019, Arnaldo Carvalho de Melo wrote:
> > You forgot to update tools/perf/Documentation/perf-bench.txt, and please
> > take a look at tools/perf/util/pmu.c convert_scale() to see how to save
> > the current locale, set the one you want, then restore the previous one,
> > so that at the end of this benchmark the environment is back to where it
> > was.
> 
> Here's an updated version with the corresponding docs, but I removed the
> setlocale() - doesn't seem worth it; I hope Mel has no strong objection.
> 
> Thanks.
> 
> -------8<----------------------------------------------------------
> [PATCH v2] tools/perf-bench: Add basic syscall benchmark
> 
> The usefulness of having a standard way of testing syscall performance
> has come up from time to time[0]. Furthermore, some of our testing
> machinery (such as 'mmtests') already makes use of a simplified version
> of the microbenchmark. This patch mainly takes the same idea to measure
> syscall throughput compatible with 'perf-bench' via getppid(2), yet
> without any of the additional template stuff from Ingo's version (based
> on numa.c). The code is identical to what mmtests uses.
> 
> [0] https://lore.kernel.org/lkml/20160201074156.GA27156@gmail.com/
> 
> Signed-off-by: Davidlohr Bueso <dbueso@suse.de>

It would be nice to see this merged.  I posted something very similar
back in 2016.

-- 
Josh


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

* Re: [PATCH] tools/perf-bench: Add basic syscall benchmark
  2020-05-14 20:39     ` Josh Poimboeuf
@ 2020-07-26 14:16       ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 6+ messages in thread
From: Arnaldo Carvalho de Melo @ 2020-07-26 14:16 UTC (permalink / raw)
  To: Josh Poimboeuf
  Cc: Davidlohr Bueso, Arnaldo Carvalho de Melo, Ingo Molnar, mgorman,
	linux-kernel, Davidlohr Bueso, Namhyung Kim, Jiri Olsa

Em Thu, May 14, 2020 at 03:39:42PM -0500, Josh Poimboeuf escreveu:
> On Fri, Mar 08, 2019 at 10:17:47AM -0800, Davidlohr Bueso wrote:
> > On Thu, 07 Mar 2019, Arnaldo Carvalho de Melo wrote:
> > > You forgot to update tools/perf/Documentation/perf-bench.txt, and please
> > > take a look at tools/perf/util/pmu.c convert_scale() to see how to save
> > > the current locale, set the one you want, then restore the previous one,
> > > so that at the end of this benchmark the environment is back to where it
> > > was.
> > 
> > Here's an updated version with the corresponding docs, but I removed the
> > setlocale() - doesn't seem worth it; I hope Mel has no strong objection.
> > 
> > Thanks.
> > 
> > -------8<----------------------------------------------------------
> > [PATCH v2] tools/perf-bench: Add basic syscall benchmark
> > 
> > The usefulness of having a standard way of testing syscall performance
> > has come up from time to time[0]. Furthermore, some of our testing
> > machinery (such as 'mmtests') already makes use of a simplified version
> > of the microbenchmark. This patch mainly takes the same idea to measure
> > syscall throughput compatible with 'perf-bench' via getppid(2), yet
> > without any of the additional template stuff from Ingo's version (based
> > on numa.c). The code is identical to what mmtests uses.
> > 
> > [0] https://lore.kernel.org/lkml/20160201074156.GA27156@gmail.com/
> > 
> > Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
> 
> It would be nice to see this merged.  I posted something very similar
> back in 2016.

So, I took this as an Acked-by: Josh, and the previous "no objection"
from Mel as well, its now in my tmp.perf/core branch while it, together
with other stuff goes thru build tests + 'perf test'.

Sorry for the long delay in processing it, I shoudl've noticed that my
review comments were addressed in v2.

- Arnaldo

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

end of thread, other threads:[~2020-07-26 14:16 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-07 18:52 [PATCH] tools/perf-bench: Add basic syscall benchmark Davidlohr Bueso
2019-03-07 19:11 ` Arnaldo Carvalho de Melo
2019-03-08 18:17   ` Davidlohr Bueso
2019-03-08 19:48     ` Mel Gorman
2020-05-14 20:39     ` Josh Poimboeuf
2020-07-26 14:16       ` Arnaldo Carvalho de Melo

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).