xref: /kvmtool/Documentation/io-testing.txt (revision 13534ee80ce3daf355429bade1f935078e239f01)
1*13534ee8SJean-Philippe BruckerThis document describes how to test each device, which is required when
2*13534ee8SJean-Philippe Bruckermodifying the common I/O infrastructure.
3*13534ee8SJean-Philippe Brucker
4*13534ee8SJean-Philippe Brucker
5*13534ee8SJean-Philippe Brucker9P
6*13534ee8SJean-Philippe Brucker--
7*13534ee8SJean-Philippe Brucker
8*13534ee8SJean-Philippe Brucker  CONFIG_NET_9P_VIRTIO
9*13534ee8SJean-Philippe Brucker
10*13534ee8SJean-Philippe BruckerWithout a --disk parameter, kvmtool shares part of the host filesystem
11*13534ee8SJean-Philippe Bruckerwith the guest using 9p. Otherwise, use the `--9p <directory>,<tag>`
12*13534ee8SJean-Philippe Bruckerparameter to share a directory with the guest, and mount it in the guest
13*13534ee8SJean-Philippe Bruckerwith:
14*13534ee8SJean-Philippe Brucker
15*13534ee8SJean-Philippe Brucker	$ mount -t 9p <tag> <mountpoint>
16*13534ee8SJean-Philippe Brucker
17*13534ee8SJean-Philippe Brucker
18*13534ee8SJean-Philippe BruckerBALLOON
19*13534ee8SJean-Philippe Brucker-------
20*13534ee8SJean-Philippe Brucker
21*13534ee8SJean-Philippe Brucker  CONFIG_VIRTIO_BALLOON
22*13534ee8SJean-Philippe Brucker
23*13534ee8SJean-Philippe Brucker	$ lkvm run ... --balloon
24*13534ee8SJean-Philippe Brucker
25*13534ee8SJean-Philippe BruckerDisplay memory statistics:
26*13534ee8SJean-Philippe Brucker
27*13534ee8SJean-Philippe Brucker	$ lkvm stat -a -m
28*13534ee8SJean-Philippe Brucker		*** Guest memory statistics ***
29*13534ee8SJean-Philippe Brucker		...
30*13534ee8SJean-Philippe Brucker
31*13534ee8SJean-Philippe BruckerRemove 20MB of memory from the guest:
32*13534ee8SJean-Philippe Brucker
33*13534ee8SJean-Philippe Brucker	$ lkvm balloon -n guest-$(pidof lkvm) -i 20
34*13534ee8SJean-Philippe Brucker
35*13534ee8SJean-Philippe Brucker
36*13534ee8SJean-Philippe BruckerBLOCK
37*13534ee8SJean-Philippe Brucker-----
38*13534ee8SJean-Philippe Brucker
39*13534ee8SJean-Philippe Brucker  CONFIG_VIRTIO_BLK
40*13534ee8SJean-Philippe Brucker
41*13534ee8SJean-Philippe Brucker	$ lkvm run ... --disk <raw or qcow2 image>
42*13534ee8SJean-Philippe Brucker
43*13534ee8SJean-Philippe Brucker
44*13534ee8SJean-Philippe BruckerCONSOLE
45*13534ee8SJean-Philippe Brucker-------
46*13534ee8SJean-Philippe Brucker
47*13534ee8SJean-Philippe Brucker	$ lkvm run ... --console virtio
48*13534ee8SJean-Philippe Brucker
49*13534ee8SJean-Philippe BruckerSee also virtio-console.txt
50*13534ee8SJean-Philippe Brucker
51*13534ee8SJean-Philippe Brucker
52*13534ee8SJean-Philippe BruckerNET
53*13534ee8SJean-Philippe Brucker---
54*13534ee8SJean-Philippe Brucker
55*13534ee8SJean-Philippe Brucker  CONFIG_VIRTIO_NET	(guest)
56*13534ee8SJean-Philippe Brucker  CONFIG_VHOST_NET	(host)
57*13534ee8SJean-Philippe Brucker
58*13534ee8SJean-Philippe BruckerBy default kvmtool instantiates a user network device. In order to test
59*13534ee8SJean-Philippe Bruckerboth tap and vhost, setup a tap interface on a local network.
60*13534ee8SJean-Philippe Brucker
61*13534ee8SJean-Philippe BruckerIn the host:
62*13534ee8SJean-Philippe Brucker
63*13534ee8SJean-Philippe Brucker	# ip tuntap add tap0 mode tap user $USER
64*13534ee8SJean-Philippe Brucker	# ip link set tap0 up
65*13534ee8SJean-Philippe Brucker	# ip link add br0 type bridge
66*13534ee8SJean-Philippe Brucker	# ip link set tap0 master br0
67*13534ee8SJean-Philippe Brucker	# ip link set br0 up
68*13534ee8SJean-Philippe Brucker	# ip addr add 192.168.3.1/24 dev br0
69*13534ee8SJean-Philippe Brucker
70*13534ee8SJean-Philippe Brucker	$ lkvm run ... -n mode=tap,tapif=tap0,vhost=1
71*13534ee8SJean-Philippe Brucker
72*13534ee8SJean-Philippe BruckerIn the guest:
73*13534ee8SJean-Philippe Brucker
74*13534ee8SJean-Philippe Brucker	# ip link set eth0 up
75*13534ee8SJean-Philippe Brucker	# ip addr add 192.168.3.12/24 dev eth0
76*13534ee8SJean-Philippe Brucker	$ ping -c 1 192.168.3.1
77*13534ee8SJean-Philippe Brucker	64 bytes from 192.168.3.1: seq=0 ttl=64 time=0.303 ms
78*13534ee8SJean-Philippe Brucker
79*13534ee8SJean-Philippe Brucker
80*13534ee8SJean-Philippe BruckerRNG
81*13534ee8SJean-Philippe Brucker---
82*13534ee8SJean-Philippe Brucker
83*13534ee8SJean-Philippe Brucker  CONFIG_HW_RANDOM_VIRTIO
84*13534ee8SJean-Philippe Brucker
85*13534ee8SJean-Philippe Brucker	$ lkvm run ... --rng
86*13534ee8SJean-Philippe Brucker
87*13534ee8SJean-Philippe BruckerIn the guest:
88*13534ee8SJean-Philippe Brucker
89*13534ee8SJean-Philippe Brucker	$ cat /sys/devices/virtual/misc/hw_random/rng_available
90*13534ee8SJean-Philippe Brucker	virtio_rng.0
91*13534ee8SJean-Philippe Brucker
92*13534ee8SJean-Philippe Brucker
93*13534ee8SJean-Philippe BruckerSCSI
94*13534ee8SJean-Philippe Brucker----
95*13534ee8SJean-Philippe Brucker
96*13534ee8SJean-Philippe Brucker  CONFIG_SCSI_VIRTIO	(guest)
97*13534ee8SJean-Philippe Brucker  CONFIG_TCM_FILEIO	(host)
98*13534ee8SJean-Philippe Brucker  CONFIG_VHOST_SCSI	(host)
99*13534ee8SJean-Philippe Brucker
100*13534ee8SJean-Philippe BruckerIn the host, create a fileio backstore and a target:
101*13534ee8SJean-Philippe Brucker
102*13534ee8SJean-Philippe Brucker	# targetcli (https://github.com/open-iscsi/targetcli-fb)
103*13534ee8SJean-Philippe Brucker	/> cd backstores/fileio
104*13534ee8SJean-Philippe Brucker	/backstores/fileio> create kvmtool_1 /srv/kvmtool_1 2M
105*13534ee8SJean-Philippe Brucker	Created fileio kvmtool_1 with size 2097152
106*13534ee8SJean-Philippe Brucker	/backstores/fileio> cd /vhost
107*13534ee8SJean-Philippe Brucker	/vhost> create
108*13534ee8SJean-Philippe Brucker	Created target naa.500140571c9308aa.
109*13534ee8SJean-Philippe Brucker	Created TPG 1.
110*13534ee8SJean-Philippe Brucker	/vhost> cd naa.500140571c9308aa/tpg1/luns
111*13534ee8SJean-Philippe Brucker	/vhost/naa.50...8aa/tpg1/luns> create /backstores/fileio/kvmtool_1
112*13534ee8SJean-Philippe Brucker	Created LUN 0.
113*13534ee8SJean-Philippe Brucker
114*13534ee8SJean-Philippe Brucker	$ lkvm run ... --disk scsi:naa.500140571c9308aa
115*13534ee8SJean-Philippe Brucker	[    0.479644] scsi host0: Virtio SCSI HBA
116*13534ee8SJean-Philippe Brucker	[    0.483009] scsi 0:0:1:0: Direct-Access     LIO-ORG  kvmtool_1        4.0  PQ: 0 ANSI: 6
117*13534ee8SJean-Philippe Brucker
118*13534ee8SJean-Philippe Brucker	[    1.242833] sd 0:0:1:0: [sda] 4096 512-byte logical blocks: (2.10 MB/2.00 MiB)
119*13534ee8SJean-Philippe Brucker
120*13534ee8SJean-Philippe Brucker
121*13534ee8SJean-Philippe BruckerVSOCK
122*13534ee8SJean-Philippe Brucker-----
123*13534ee8SJean-Philippe Brucker
124*13534ee8SJean-Philippe Brucker  CONFIG_VSOCKETS
125*13534ee8SJean-Philippe Brucker  CONFIG_VIRTIO_VSOCKETS	(guest)
126*13534ee8SJean-Philippe Brucker  CONFIG_VHOST_VSOCK		(host)
127*13534ee8SJean-Philippe Brucker
128*13534ee8SJean-Philippe BruckerIn the host, start a vsock server:
129*13534ee8SJean-Philippe Brucker
130*13534ee8SJean-Philippe Brucker	$ socat - VSOCK-LISTEN:1234
131*13534ee8SJean-Philippe Brucker
132*13534ee8SJean-Philippe BruckerWe pick 12 as the guest ID. 0 and 1 are reserved, and the host has default
133*13534ee8SJean-Philippe BruckerID 2.
134*13534ee8SJean-Philippe Brucker
135*13534ee8SJean-Philippe Brucker	$ lkvm run ... --vsock 12
136*13534ee8SJean-Philippe Brucker
137*13534ee8SJean-Philippe BruckerIn the guest, send a message to the host:
138*13534ee8SJean-Philippe Brucker
139*13534ee8SJean-Philippe Brucker	$ echo Hello | socat - VSOCK-CONNECT:2:1234
140*13534ee8SJean-Philippe Brucker
141*13534ee8SJean-Philippe BruckerThe host server should display "Hello".
142