* [to-be-updated] selftests-vm-only-some-gup_test-items-are-really-benchmarks.patch removed from -mm tree
@ 2020-10-22 22:50 akpm
0 siblings, 0 replies; only message in thread
From: akpm @ 2020-10-22 22:50 UTC (permalink / raw)
To: corbet, jglisse, jhubbard, mm-commits, rcampbell, shuah
The patch titled
Subject: selftests/vm: only some gup_test items are really benchmarks
has been removed from the -mm tree. Its filename was
selftests-vm-only-some-gup_test-items-are-really-benchmarks.patch
This patch was dropped because an updated version will be merged
------------------------------------------------------
From: John Hubbard <jhubbard@nvidia.com>
Subject: selftests/vm: only some gup_test items are really benchmarks
Therefore, some minor cleanup and improvements are in order:
1. Rename the other items appropriately.
2. Stop reporting timing information on the non-benchmark items. It's
still being recorded and is available, but there's no point in
cluttering up the report with data that no one reasonably needs to
check.
3. Don't do iterations, for non-benchmark items.
4. Print out a shorter, more appropriate report for the non-benchmark
tests.
5. Add the command that was run, to the report. This really helps, as
there are quite a lot of options now.
Link: https://lkml.kernel.org/r/20200929212747.251804-6-jhubbard@nvidia.com
Signed-off-by: John Hubbard <jhubbard@nvidia.com>
Cc: Jérôme Glisse <jglisse@redhat.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Ralph Campbell <rcampbell@nvidia.com>
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
Documentation/core-api/pin_user_pages.rst | 2
mm/gup_test.c | 14 ++---
mm/gup_test.h | 8 +--
tools/testing/selftests/vm/gup_test.c | 47 ++++++++++++++++----
4 files changed, 51 insertions(+), 20 deletions(-)
--- a/Documentation/core-api/pin_user_pages.rst~selftests-vm-only-some-gup_test-items-are-really-benchmarks
+++ a/Documentation/core-api/pin_user_pages.rst
@@ -226,7 +226,7 @@ This file::
has the following new calls to exercise the new pin*() wrapper functions:
* PIN_FAST_BENCHMARK (./gup_test -a)
-* PIN_BENCHMARK (./gup_test -b)
+* PIN_BASIC_TEST (./gup_test -b)
You can monitor how many total dma-pinned pages have been acquired and released
since the system was booted, via two new /proc/vmstat entries: ::
--- a/mm/gup_test.c~selftests-vm-only-some-gup_test-items-are-really-benchmarks
+++ a/mm/gup_test.c
@@ -13,13 +13,13 @@ static void put_back_pages(unsigned int
switch (cmd) {
case GUP_FAST_BENCHMARK:
- case GUP_BENCHMARK:
+ case GUP_BASIC_TEST:
for (i = 0; i < nr_pages; i++)
put_page(pages[i]);
break;
case PIN_FAST_BENCHMARK:
- case PIN_BENCHMARK:
+ case PIN_BASIC_TEST:
case PIN_LONGTERM_BENCHMARK:
unpin_user_pages(pages, nr_pages);
break;
@@ -34,7 +34,7 @@ static void verify_dma_pinned(unsigned i
switch (cmd) {
case PIN_FAST_BENCHMARK:
- case PIN_BENCHMARK:
+ case PIN_BASIC_TEST:
case PIN_LONGTERM_BENCHMARK:
for (i = 0; i < nr_pages; i++) {
page = pages[i];
@@ -94,7 +94,7 @@ static int __gup_test_ioctl(unsigned int
nr = get_user_pages_fast(addr, nr, gup->flags,
pages + i);
break;
- case GUP_BENCHMARK:
+ case GUP_BASIC_TEST:
nr = get_user_pages(addr, nr, gup->flags, pages + i,
NULL);
break;
@@ -102,7 +102,7 @@ static int __gup_test_ioctl(unsigned int
nr = pin_user_pages_fast(addr, nr, gup->flags,
pages + i);
break;
- case PIN_BENCHMARK:
+ case PIN_BASIC_TEST:
nr = pin_user_pages(addr, nr, gup->flags, pages + i,
NULL);
break;
@@ -157,10 +157,10 @@ static long gup_test_ioctl(struct file *
switch (cmd) {
case GUP_FAST_BENCHMARK:
- case GUP_BENCHMARK:
case PIN_FAST_BENCHMARK:
- case PIN_BENCHMARK:
case PIN_LONGTERM_BENCHMARK:
+ case GUP_BASIC_TEST:
+ case PIN_BASIC_TEST:
break;
default:
return -EINVAL;
--- a/mm/gup_test.h~selftests-vm-only-some-gup_test-items-are-really-benchmarks
+++ a/mm/gup_test.h
@@ -5,10 +5,10 @@
#include <linux/types.h>
#define GUP_FAST_BENCHMARK _IOWR('g', 1, struct gup_test)
-#define GUP_BENCHMARK _IOWR('g', 2, struct gup_test)
-#define PIN_FAST_BENCHMARK _IOWR('g', 3, struct gup_test)
-#define PIN_BENCHMARK _IOWR('g', 4, struct gup_test)
-#define PIN_LONGTERM_BENCHMARK _IOWR('g', 5, struct gup_test)
+#define PIN_FAST_BENCHMARK _IOWR('g', 2, struct gup_test)
+#define PIN_LONGTERM_BENCHMARK _IOWR('g', 3, struct gup_test)
+#define GUP_BASIC_TEST _IOWR('g', 4, struct gup_test)
+#define PIN_BASIC_TEST _IOWR('g', 5, struct gup_test)
struct gup_test {
__u64 get_delta_usec;
--- a/tools/testing/selftests/vm/gup_test.c~selftests-vm-only-some-gup_test-items-are-really-benchmarks
+++ a/tools/testing/selftests/vm/gup_test.c
@@ -14,12 +14,30 @@
/* Just the flags we need, copied from mm.h: */
#define FOLL_WRITE 0x01 /* check pte is writable */
+static char *cmd_to_str(unsigned long cmd)
+{
+ switch (cmd) {
+ case GUP_FAST_BENCHMARK:
+ return "GUP_FAST_BENCHMARK";
+ case PIN_FAST_BENCHMARK:
+ return "PIN_FAST_BENCHMARK";
+ case PIN_LONGTERM_BENCHMARK:
+ return "PIN_LONGTERM_BENCHMARK";
+ case GUP_BASIC_TEST:
+ return "GUP_BASIC_TEST";
+ case PIN_BASIC_TEST:
+ return "PIN_BASIC_TEST";
+ }
+ return "Unknown command";
+}
+
int main(int argc, char **argv)
{
struct gup_benchmark gup;
unsigned long size = 128 * MB;
int i, fd, filed, opt, nr_pages = 1, thp = -1, repeats = 1, write = 0;
- int cmd = GUP_FAST_BENCHMARK, flags = MAP_PRIVATE;
+ int cmd = GUP_FAST_BENCHMARK;
+ int flags = MAP_PRIVATE;
char *file = "/dev/zero";
char *p;
@@ -29,7 +47,7 @@ int main(int argc, char **argv)
cmd = PIN_FAST_BENCHMARK;
break;
case 'b':
- cmd = PIN_BENCHMARK;
+ cmd = PIN_BASIC_TEST;
break;
case 'L':
cmd = PIN_LONGTERM_BENCHMARK;
@@ -50,7 +68,7 @@ int main(int argc, char **argv)
thp = 0;
break;
case 'U':
- cmd = GUP_BENCHMARK;
+ cmd = GUP_BASIC_TEST;
break;
case 'u':
cmd = GUP_FAST_BENCHMARK;
@@ -104,18 +122,31 @@ int main(int argc, char **argv)
for (; (unsigned long)p < gup.addr + size; p += PAGE_SIZE)
p[0] = 0;
- for (i = 0; i < repeats; i++) {
+ /* Only report timing information on the *_BENCHMARK commands: */
+ if ((cmd == PIN_FAST_BENCHMARK) || (cmd == GUP_FAST_BENCHMARK) ||
+ (cmd == PIN_LONGTERM_BENCHMARK)) {
+ for (i = 0; i < repeats; i++) {
+ gup.size = size;
+ if (ioctl(fd, cmd, &gup))
+ perror("ioctl"), exit(1);
+
+ printf("%s: Time: get:%lld put:%lld us",
+ cmd_to_str(cmd), gup.get_delta_usec,
+ gup.put_delta_usec);
+ if (gup.size != size)
+ printf(", truncated (size: %lld)", gup.size);
+ printf("\n");
+ }
+ } else {
gup.size = size;
if (ioctl(fd, cmd, &gup)) {
perror("ioctl");
exit(1);
}
- printf("Time: get:%lld put:%lld us", gup.get_delta_usec,
- gup.put_delta_usec);
+ printf("%s: done\n", cmd_to_str(cmd));
if (gup.size != size)
- printf(", truncated (size: %lld)", gup.size);
- printf("\n");
+ printf("Truncated (size: %lld)\n", gup.size);
}
return 0;
_
Patches currently in -mm which might be from jhubbard@nvidia.com are
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-10-22 22:50 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-22 22:50 [to-be-updated] selftests-vm-only-some-gup_test-items-are-really-benchmarks.patch removed from -mm tree akpm
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).