3 These tests exercise net/vmw_vsock/ host<->guest sockets for VMware, KVM, and
6 The following tests are available:
8 * vsock_test - core AF_VSOCK socket functionality
9 * vsock_diag_test - vsock_diag.ko module for listing open sockets
11 The following prerequisite steps are not automated and must be performed prior
14 1. Build the kernel, make headers_install, and build these tests.
15 2. Install the kernel and tests on the host.
16 3. Install the kernel and tests inside the guest.
17 4. Boot the guest and ensure that the AF_VSOCK transport is enabled.
19 Invoke test binaries in both directions as follows:
21 # host=server, guest=client
22 (host)# $TEST_BINARY --mode=server \
25 (guest)# $TEST_BINARY --mode=client \
26 --control-host=$HOST_IP \
30 # host=client, guest=server
31 (guest)# $TEST_BINARY --mode=server \
34 (host)# $TEST_BINARY --mode=client \
35 --control-port=$GUEST_IP \
39 Some tests are designed to produce kernel memory leaks. Leaks detection,
40 however, is deferred to Kernel Memory Leak Detector. It is recommended to enable
41 kmemleak (CONFIG_DEBUG_KMEMLEAK=y) and explicitly trigger a scan after each test
44 # echo clear > /sys/kernel/debug/kmemleak
46 # echo "wait for any grace periods" && sleep 2
47 # echo scan > /sys/kernel/debug/kmemleak
48 # echo "wait for kmemleak" && sleep 5
49 # echo scan > /sys/kernel/debug/kmemleak
50 # cat /sys/kernel/debug/kmemleak
52 For more information see Documentation/dev-tools/kmemleak.rst.
56 'vsock_perf' is a simple tool to measure vsock performance. It works in
57 sender/receiver modes: sender connect to peer at the specified port and
58 starts data transmission to the receiver. After data processing is done,
59 it prints several metrics(see below).
63 # connect to CID 2, port 1234, send 1G of data, tx buf size is 1M
64 ./vsock_perf --sender 2 --port 1234 --bytes 1G --buf-size 1M
67 tx performance: A Gbits/s
70 A is calculated as "number of bits to send" / "time in tx loop"
73 # listen port 1234, rx buf size is 1M, socket buf size is 1G, SO_RCVLOWAT is 64K
74 ./vsock_perf --port 1234 --buf-size 1M --vsk-size 1G --rcvlowat 64K
77 rx performance: A Gbits/s
78 total in 'read()': B sec
80 average in 'read()': D ns
83 A is calculated as "number of received bits" / "time in rx loop".
84 B is time, spent in 'read()' system call(excluding 'poll()')
85 C is number of 'poll()' wake ups with POLLIN bit set.
86 D is B / C, e.g. average amount of time, spent in single 'read()'.