mirror of
https://github.com/torvalds/linux.git
synced 2024-12-12 14:12:51 +00:00
8abbffd27c
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> Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
72 lines
2.4 KiB
Plaintext
72 lines
2.4 KiB
Plaintext
AF_VSOCK test suite
|
|
-------------------
|
|
These tests exercise net/vmw_vsock/ host<->guest sockets for VMware, KVM, and
|
|
Hyper-V.
|
|
|
|
The following tests are available:
|
|
|
|
* vsock_test - core AF_VSOCK socket functionality
|
|
* vsock_diag_test - vsock_diag.ko module for listing open sockets
|
|
|
|
The following prerequisite steps are not automated and must be performed prior
|
|
to running tests:
|
|
|
|
1. Build the kernel, make headers_install, and build these tests.
|
|
2. Install the kernel and tests on the host.
|
|
3. Install the kernel and tests inside the guest.
|
|
4. Boot the guest and ensure that the AF_VSOCK transport is enabled.
|
|
|
|
Invoke test binaries in both directions as follows:
|
|
|
|
# host=server, guest=client
|
|
(host)# $TEST_BINARY --mode=server \
|
|
--control-port=1234 \
|
|
--peer-cid=3
|
|
(guest)# $TEST_BINARY --mode=client \
|
|
--control-host=$HOST_IP \
|
|
--control-port=1234 \
|
|
--peer-cid=2
|
|
|
|
# host=client, guest=server
|
|
(guest)# $TEST_BINARY --mode=server \
|
|
--control-port=1234 \
|
|
--peer-cid=2
|
|
(host)# $TEST_BINARY --mode=client \
|
|
--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 Gbits/s
|
|
|
|
Output explanation:
|
|
A is calculated as "number of bits 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 Gbits/s
|
|
total in 'read()': B sec
|
|
POLLIN wakeups: C
|
|
average in 'read()': D ns
|
|
|
|
Output explanation:
|
|
A is calculated as "number of received bits" / "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()'.
|