10b025033SStefan HajnocziAF_VSOCK test suite 20b025033SStefan Hajnoczi------------------- 30b025033SStefan HajnocziThese tests exercise net/vmw_vsock/ host<->guest sockets for VMware, KVM, and 40b025033SStefan HajnocziHyper-V. 50b025033SStefan Hajnoczi 60b025033SStefan HajnocziThe following tests are available: 70b025033SStefan Hajnoczi 8cdbcc18dSStefan Hajnoczi * vsock_test - core AF_VSOCK socket functionality 90b025033SStefan Hajnoczi * vsock_diag_test - vsock_diag.ko module for listing open sockets 100b025033SStefan Hajnoczi 110b025033SStefan HajnocziThe following prerequisite steps are not automated and must be performed prior 120b025033SStefan Hajnoczito running tests: 130b025033SStefan Hajnoczi 1443985468SStefan Hajnoczi1. Build the kernel, make headers_install, and build these tests. 150b025033SStefan Hajnoczi2. Install the kernel and tests on the host. 160b025033SStefan Hajnoczi3. Install the kernel and tests inside the guest. 170b025033SStefan Hajnoczi4. Boot the guest and ensure that the AF_VSOCK transport is enabled. 180b025033SStefan Hajnoczi 190b025033SStefan HajnocziInvoke test binaries in both directions as follows: 200b025033SStefan Hajnoczi 210b025033SStefan Hajnoczi # host=server, guest=client 220b025033SStefan Hajnoczi (host)# $TEST_BINARY --mode=server \ 230b025033SStefan Hajnoczi --control-port=1234 \ 240b025033SStefan Hajnoczi --peer-cid=3 250b025033SStefan Hajnoczi (guest)# $TEST_BINARY --mode=client \ 260b025033SStefan Hajnoczi --control-host=$HOST_IP \ 270b025033SStefan Hajnoczi --control-port=1234 \ 280b025033SStefan Hajnoczi --peer-cid=2 290b025033SStefan Hajnoczi 300b025033SStefan Hajnoczi # host=client, guest=server 310b025033SStefan Hajnoczi (guest)# $TEST_BINARY --mode=server \ 320b025033SStefan Hajnoczi --control-port=1234 \ 330b025033SStefan Hajnoczi --peer-cid=2 340b025033SStefan Hajnoczi (host)# $TEST_BINARY --mode=client \ 350b025033SStefan Hajnoczi --control-port=$GUEST_IP \ 360b025033SStefan Hajnoczi --control-port=1234 \ 370b025033SStefan Hajnoczi --peer-cid=3 388abbffd2SArseniy Krasnov 39*50f94344SMichal LuczajSome tests are designed to produce kernel memory leaks. Leaks detection, 40*50f94344SMichal Luczajhowever, is deferred to Kernel Memory Leak Detector. It is recommended to enable 41*50f94344SMichal Luczajkmemleak (CONFIG_DEBUG_KMEMLEAK=y) and explicitly trigger a scan after each test 42*50f94344SMichal Luczajsuite run, e.g. 43*50f94344SMichal Luczaj 44*50f94344SMichal Luczaj # echo clear > /sys/kernel/debug/kmemleak 45*50f94344SMichal Luczaj # $TEST_BINARY ... 46*50f94344SMichal Luczaj # echo "wait for any grace periods" && sleep 2 47*50f94344SMichal Luczaj # echo scan > /sys/kernel/debug/kmemleak 48*50f94344SMichal Luczaj # echo "wait for kmemleak" && sleep 5 49*50f94344SMichal Luczaj # echo scan > /sys/kernel/debug/kmemleak 50*50f94344SMichal Luczaj # cat /sys/kernel/debug/kmemleak 51*50f94344SMichal Luczaj 52*50f94344SMichal LuczajFor more information see Documentation/dev-tools/kmemleak.rst. 53*50f94344SMichal Luczaj 548abbffd2SArseniy Krasnovvsock_perf utility 558abbffd2SArseniy Krasnov------------------- 568abbffd2SArseniy Krasnov'vsock_perf' is a simple tool to measure vsock performance. It works in 578abbffd2SArseniy Krasnovsender/receiver modes: sender connect to peer at the specified port and 588abbffd2SArseniy Krasnovstarts data transmission to the receiver. After data processing is done, 598abbffd2SArseniy Krasnovit prints several metrics(see below). 608abbffd2SArseniy Krasnov 618abbffd2SArseniy KrasnovUsage: 628abbffd2SArseniy Krasnov# run as sender 638abbffd2SArseniy Krasnov# connect to CID 2, port 1234, send 1G of data, tx buf size is 1M 648abbffd2SArseniy Krasnov./vsock_perf --sender 2 --port 1234 --bytes 1G --buf-size 1M 658abbffd2SArseniy Krasnov 668abbffd2SArseniy KrasnovOutput: 678abbffd2SArseniy Krasnovtx performance: A Gbits/s 688abbffd2SArseniy Krasnov 698abbffd2SArseniy KrasnovOutput explanation: 708abbffd2SArseniy KrasnovA is calculated as "number of bits to send" / "time in tx loop" 718abbffd2SArseniy Krasnov 728abbffd2SArseniy Krasnov# run as receiver 738abbffd2SArseniy Krasnov# listen port 1234, rx buf size is 1M, socket buf size is 1G, SO_RCVLOWAT is 64K 748abbffd2SArseniy Krasnov./vsock_perf --port 1234 --buf-size 1M --vsk-size 1G --rcvlowat 64K 758abbffd2SArseniy Krasnov 768abbffd2SArseniy KrasnovOutput: 778abbffd2SArseniy Krasnovrx performance: A Gbits/s 788abbffd2SArseniy Krasnovtotal in 'read()': B sec 798abbffd2SArseniy KrasnovPOLLIN wakeups: C 808abbffd2SArseniy Krasnovaverage in 'read()': D ns 818abbffd2SArseniy Krasnov 828abbffd2SArseniy KrasnovOutput explanation: 838abbffd2SArseniy KrasnovA is calculated as "number of received bits" / "time in rx loop". 848abbffd2SArseniy KrasnovB is time, spent in 'read()' system call(excluding 'poll()') 858abbffd2SArseniy KrasnovC is number of 'poll()' wake ups with POLLIN bit set. 868abbffd2SArseniy KrasnovD is B / C, e.g. average amount of time, spent in single 'read()'. 87