86 lines · 2.9 KB · Text
RawDownload
AF_VSOCK test suite-------------------These tests exercise net/vmw_vsock/ host<->guest sockets for VMware, KVM, andHyper-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 priorto 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 enablekmemleak (CONFIG_DEBUG_KMEMLEAK=y) and explicitly trigger a scan after each testsuite 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 insender/receiver modes: sender connect to peer at the specified port andstarts 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/stotal in 'read()': B secPOLLIN wakeups: Caverage 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()'.