![]() SOCK_SEQPACKET is supported for virtio transport, so do not interpret such type of socket as unknown. Signed-off-by: Arseniy Krasnov <avkrasnov@salutedevices.com> Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> Acked-by: Michael S. Tsirkin <mst@redhat.com> Link: https://lore.kernel.org/r/20240124193255.3417803-1-avkrasnov@salutedevices.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
||
---|---|---|
.. | ||
.gitignore | ||
control.c | ||
control.h | ||
Makefile | ||
msg_zerocopy_common.c | ||
msg_zerocopy_common.h | ||
README | ||
timeout.c | ||
timeout.h | ||
util.c | ||
util.h | ||
vsock_diag_test.c | ||
vsock_perf.c | ||
vsock_test_zerocopy.c | ||
vsock_test_zerocopy.h | ||
vsock_test.c | ||
vsock_uring_test.c |
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:
- Build the kernel, make headers_install, and build these tests.
- Install the kernel and tests on the host.
- Install the kernel and tests inside the guest.
- 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()'.