| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- 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
- Some tests are designed to produce kernel memory leaks. Leaks detection,
- however, is deferred to Kernel Memory Leak Detector. It is recommended to enable
- kmemleak (CONFIG_DEBUG_KMEMLEAK=y) and explicitly trigger a scan after each test
- suite run, e.g.
- # echo clear > /sys/kernel/debug/kmemleak
- # $TEST_BINARY ...
- # echo "wait for any grace periods" && sleep 2
- # echo scan > /sys/kernel/debug/kmemleak
- # echo "wait for kmemleak" && sleep 5
- # echo scan > /sys/kernel/debug/kmemleak
- # cat /sys/kernel/debug/kmemleak
- For more information see Documentation/dev-tools/kmemleak.rst.
- 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()'.
|