path: root/tools/tools/ioat/ioatcontrol.8
diff options
authorConrad Meyer <cem@FreeBSD.org>2015-10-22 04:38:05 +0000
committerConrad Meyer <cem@FreeBSD.org>2015-10-22 04:38:05 +0000
commit7c69db50df6638818a20acdee8fe57240358e496 (patch)
tree511f4aaffd042632494654fc4192e5c257afb7aa /tools/tools/ioat/ioatcontrol.8
parentb81eee4a223460fc326de905c6d127bc985078c4 (diff)
Improve flexibility of ioat_test / ioatcontrol(8)
The test logic now preallocates memory before running the test. The buffer size is now configurable. Post-copy verification is configurable. The number of copies to chain into one transaction (one interrupt) is configurable. A 'duration' mode is added, which repeats the test until the duration has elapsed, reporting the B/s and transactions completed. ioatcontrol.8 has been updated to document the new arguments. Initial limits (on this particular Broadwell-DE) (and when the interrupts are working) seem to be: 256 interrupts/sec or ~6 GB/s, whichever limit is more restrictive. Unfortunately, it seems the interrupt-reset handling on Broadwell isn't working as intended. That will be fixed in a later commit. Sponsored by: EMC / Isilon Storage Division
Notes: svn path=/head/; revision=289733
Diffstat (limited to 'tools/tools/ioat/ioatcontrol.8')
1 files changed, 56 insertions, 6 deletions
diff --git a/tools/tools/ioat/ioatcontrol.8 b/tools/tools/ioat/ioatcontrol.8
index 762ce14fc830..b04db858fb8b 100644
--- a/tools/tools/ioat/ioatcontrol.8
+++ b/tools/tools/ioat/ioatcontrol.8
@@ -24,7 +24,7 @@
.\" $FreeBSD$
-.Dd August 24, 2015
+.Dd October 21, 2015
@@ -33,18 +33,64 @@
.Xr ioat 4
+.Op Fl V
.Ar channel_number
-.Ar num_loops
+.Ar num_txns
+.Ar [ bufsize
+.Ar [ chain-len
+.Ar [ duration ] ] ]
allows one to issue some number of test operations to the
.Xr ioat 4
driver on a specific hardware channel.
+The arguments are as follows:
+.Bl -tag -width Ds
+.It Fl V
+Verify copies for accuracy
-Each loop will allocate two chunks of memory, write data patterns to them,
-submit a DMA request to copy one buffer to the other, and compare the contents
-in the callback.
-If the contents are not as expected, an error is reported.
+operates in one of two modes; if the
+.Ar duration
+argument is passed,
+tries to estimate the copy rate in bytes per second by running
+.Ar num_txns
+repeatedly in loop.
+.Ar duration
+is not passed,
+only runs through
+.Ar num_txns
+once and prints the total bytes copied, as well as error information.
+.Ar bufsize
+argument determines the size of buffers to use for each
+.Fn ioat_copy
+The default is 256 KB.
+.Ar chain-len
+argument determines the number of copies to chain together in a single DMA
+The default is 1, and the maximum is currently 4.
+.Ar duration
+argument specifies an approximate time limit for the test, in milliseconds.
+The test will allocate two chunks of memory for each component of each
+transaction's chain.
+It will initialize them with specific data patterns.
+During the test, it submits DMA requests to copy between pairs of buffers.
+If the
+.Fl V
+flag was specified, it will compare the contents in the callback for a copy
.Pa /dev/ioat_test
@@ -55,6 +101,10 @@ and
exposes it with
.Cd hw.ioat.enable_ioat_test=1 .
+The wait channel
+.Va test_submit
+indicates that the test code is keeping the DMA engine full of work.
.Xr ioat 4