blob: b9d1f5696c9bdf79c871ecf33563347d81ab72f0 [file] [log] [blame]
John DeNisco06dcd452018-07-26 12:45:10 -04001.. _vhost02:
2
3Creating the Virtual Machine
4----------------------------
5
6We will now create the virtual machine. We use the "virsh create command". For the complete file we
7use refer to :ref:`xmlexample`.
8
9It is important to note that in the XML file we specify the socket path that is used to connect to
10FD.io VPP.
11
12This is done with a section that looks like this
13
14.. code-block:: console
15
16 <interface type='vhostuser'>
17 <mac address='52:54:00:4c:47:f2'/>
18 <source type='unix' path='/tmp//vm00.sock' mode='server'/>
19 <model type='virtio'/>
20 <alias name='net1'/>
21 <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
22 </interface>
23
24Notice the **interface type** and the **path** to the socket.
25
26Now we create the VM. The virsh list command shows the VMs that have been created. We start with no VMs.
27
28.. code-block:: console
29
30 $ virsh list
31 Id Name State
32 ----------------------------------------------------
33
34Create the VM with the virsh create command specifying our xml file.
35
36.. code-block:: console
37
38 $ virsh create ./iperf3-vm.xml
39 Domain iperf-server3 created from ./iperf3-vm.xml
40
41 $ virsh list
42 Id Name State
43 ----------------------------------------------------
44 65 iperf-server3 running
45
46The VM is now created.
47
48.. note::
49
50 After a VM is created an xml file can created with "virsh dumpxml".
51
52.. code-block:: console
53
54 $ virsh dumpxml iperf-server3
55 <domain type='kvm' id='65'>
56 <name>iperf-server3</name>
57 <uuid>e23d37c1-10c3-4a6e-ae99-f315a4165641</uuid>
58 <memory unit='KiB'>262144</memory>
59 .....
60
61Once the virtual machine is created notice the socket filename shows **Success** and
62there are **Memory Regions**. At this point the VM and FD.io VPP are connected. Also
63notice **qsz 256**. This system is running an older version of qemu. A queue size of 256
64will affect vhost throughput. The qsz should be 1024. On the web you should be able to
65find ways to install a newer version of qemu or change the queue size.
66
67.. code-block:: console
68
69 vpp# show vhost
70 Virtio vhost-user interfaces
71 Global:
72 coalesce frames 32 time 1e-3
73 number of rx virtqueues in interrupt mode: 0
74 Interface: VirtualEthernet0/0/0 (ifindex 3)
75 virtio_net_hdr_sz 12
76 features mask (0xffffffffffffffff):
77 features (0x58208000):
78 VIRTIO_NET_F_MRG_RXBUF (15)
79 VIRTIO_NET_F_GUEST_ANNOUNCE (21)
80 VIRTIO_F_ANY_LAYOUT (27)
81 VIRTIO_F_INDIRECT_DESC (28)
82 VHOST_USER_F_PROTOCOL_FEATURES (30)
83 protocol features (0x3)
84 VHOST_USER_PROTOCOL_F_MQ (0)
85 VHOST_USER_PROTOCOL_F_LOG_SHMFD (1)
86
87 socket filename /tmp/vm00.sock type client errno "Success"
88
89 rx placement:
90 thread 1 on vring 1, polling
91 tx placement: spin-lock
92 thread 0 on vring 0
93 thread 1 on vring 0
94
95 Memory regions (total 2)
96 region fd guest_phys_addr memory_size userspace_addr mmap_offset mmap_addr
97 ====== ===== ================== ================== ================== ================== =============== ===
98 0 31 0x0000000000000000 0x00000000000a0000 0x00007f1db9c00000 0x0000000000000000 0x00007f7db0400 000
99 1 32 0x00000000000c0000 0x000000000ff40000 0x00007f1db9cc0000 0x00000000000c0000 0x00007f7d94ec0 000
100
101 Virtqueue 0 (TX)
102 qsz 256 last_avail_idx 0 last_used_idx 0
103 avail.flags 0 avail.idx 256 used.flags 1 used.idx 0
104 kickfd 33 callfd 34 errfd -1
105
106 Virtqueue 1 (RX)
107 qsz 256 last_avail_idx 8 last_used_idx 8
108 avail.flags 0 avail.idx 8 used.flags 1 used.idx 8
109 kickfd 29 callfd 35 errfd -1