Messages in this thread Patch in this message | | | Date | Tue, 20 Dec 2022 11:35:38 +0100 | From | Stefano Garzarella <> | Subject | Re: [RFC PATCH v5 4/4] test/vsock: vsock_perf utility |
| |
On Tue, Dec 20, 2022 at 07:23:46AM +0000, Arseniy Krasnov wrote: >This adds utility to check vsock rx/tx performance. > >Usage as sender: >./vsock_perf --sender <cid> --port <port> --bytes <bytes to send> >Usage as receiver: >./vsock_perf --port <port> --rcvlowat <SO_RCVLOWAT> > >Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru> >--- > tools/testing/vsock/Makefile | 3 +- > tools/testing/vsock/README | 34 +++ > tools/testing/vsock/vsock_perf.c | 441 +++++++++++++++++++++++++++++++ > 3 files changed, 477 insertions(+), 1 deletion(-) > create mode 100644 tools/testing/vsock/vsock_perf.c > >diff --git a/tools/testing/vsock/Makefile b/tools/testing/vsock/Makefile >index f8293c6910c9..43a254f0e14d 100644 >--- a/tools/testing/vsock/Makefile >+++ b/tools/testing/vsock/Makefile >@@ -1,8 +1,9 @@ > # SPDX-License-Identifier: GPL-2.0-only >-all: test >+all: test vsock_perf > test: vsock_test vsock_diag_test > vsock_test: vsock_test.o timeout.o control.o util.o > vsock_diag_test: vsock_diag_test.o timeout.o control.o util.o >+vsock_perf: vsock_perf.o > > CFLAGS += -g -O2 -Werror -Wall -I. -I../../include -I../../../usr/include -Wno-pointer-sign -fno-strict-overflow -fno-strict-aliasing -fno-common -MMD -U_FORTIFY_SOURCE -D_GNU_SOURCE > .PHONY: all test clean >diff --git a/tools/testing/vsock/README b/tools/testing/vsock/README >index 4d5045e7d2c3..e6f6735bba05 100644 >--- a/tools/testing/vsock/README >+++ b/tools/testing/vsock/README >@@ -35,3 +35,37 @@ Invoke test binaries in both directions as follows: > --control-port=$GUEST_IP \ > --control-port=1234 \ > --peer-cid=3 >+ >+vsock_perf utility >+------------------- >+'vsock_perf' is a simple tool to measure vsock performance. It works in >+sender/receiver modes: sender connect to peer at the specified port and >+starts data transmission to the receiver. After data processing is done, >+it prints several metrics(see below). >+ >+Usage: >+# run as sender >+# connect to CID 2, port 1234, send 1G of data, tx buf size is 1M >+./vsock_perf --sender 2 --port 1234 --bytes 1G --buf-size 1M >+ >+Output: >+tx performance: A Gb/s >+ >+Output explanation: >+A is calculated as "number of bytes to send" / "time in tx loop" >+ >+# run as receiver >+# listen port 1234, rx buf size is 1M, socket buf size is 1G, SO_RCVLOWAT is 64K >+./vsock_perf --port 1234 --buf-size 1M --vsk-size 1G --rcvlowat 64K >+ >+Output: >+rx performance: A Gb/s >+total in 'read()': B sec >+POLLIN wakeups: C >+average in 'read()': D ns >+ >+Output explanation: >+A is calculated as "number of received bytes" / "time in rx loop". >+B is time, spent in 'read()' system call(excluding 'poll()') >+C is number of 'poll()' wake ups with POLLIN bit set. >+D is B / C, e.g. average amount of time, spent in single 'read()'.
Since now we prints Gbits/s I think we should update the previous lines. But the rest looks good to me. So with the updated README:
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Thanks, Stefano
| |