diff options
author | Conrad Meyer <cem@FreeBSD.org> | 2015-10-26 19:34:12 +0000 |
---|---|---|
committer | Conrad Meyer <cem@FreeBSD.org> | 2015-10-26 19:34:12 +0000 |
commit | 2a4fd6b17a3ca38cb1f1cdc5154ba59c66199e38 (patch) | |
tree | 556d1a6d688264cbe1665811bb99876a56115293 /tools/tools/ioat/ioatcontrol.c | |
parent | 9e3bbf26a9a1fad9d718cd990fc7ac8401906c13 (diff) | |
download | src-2a4fd6b17a3ca38cb1f1cdc5154ba59c66199e38.tar.gz src-2a4fd6b17a3ca38cb1f1cdc5154ba59c66199e38.zip |
ioat: Add support for Block Fill operations
The IOAT hardware supports writing a 64-bit pattern to some destination
buffer. The same limitations on buffer length apply as for copy
operations. Throughput is a bit higher (probably because fill does not
have to spend bandwidth reading from a source in memory).
Support for testing Block Fill has been added to ioatcontrol(8) and the
ioat_test device. ioatcontrol(8) accepts the '-f' flag, which tests
Block Fill. (If the flag is omitted, the tool tests copy by default.)
The '-V' flag, in conjunction with '-f', verifies that buffers are
filled in the expected pattern.
Tested on: Broadwell DE (Xeon D-1500)
Sponsored by: EMC / Isilon Storage Division
Notes
Notes:
svn path=/head/; revision=290021
Diffstat (limited to 'tools/tools/ioat/ioatcontrol.c')
-rw-r--r-- | tools/tools/ioat/ioatcontrol.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/tools/tools/ioat/ioatcontrol.c b/tools/tools/ioat/ioatcontrol.c index 88fbea657fa3..e55ce4f605d3 100644 --- a/tools/tools/ioat/ioatcontrol.c +++ b/tools/tools/ioat/ioatcontrol.c @@ -48,7 +48,7 @@ static void usage(void) { - printf("Usage: %s [-V] <channel #> <txns> [<bufsize> " + printf("Usage: %s [-fV] <channel #> <txns> [<bufsize> " "[<chain-len> [duration]]]\n", getprogname()); exit(EX_USAGE); } @@ -58,9 +58,13 @@ main(int argc, char **argv) { struct ioat_test t; int fd, ch; + bool fflag; - while ((ch = getopt(argc, argv, "V")) != -1) { + while ((ch = getopt(argc, argv, "fV")) != -1) { switch (ch) { + case 'f': + fflag = true; + break; case 'V': t.verify = true; break; @@ -78,6 +82,10 @@ main(int argc, char **argv) t.buffer_size = 256 * 1024; t.chain_depth = 2; t.duration = 0; + t.testkind = IOAT_TEST_DMA; + + if (fflag) + t.testkind = IOAT_TEST_FILL; t.channel_index = atoi(argv[0]); if (t.channel_index > 8) { |