dpdk: switch to in-memory mode, deprecate use of socket-mem
[vpp.git] / docs / usecases / vhost / vhost02.rst
1 .. _vhost02:
2
3 Creating the Virtual Machine
4 ----------------------------
5
6 We will now create the virtual machine. We use the "virsh create command". For the complete file we
7 use refer to :ref:`xmlexample`.
8
9 It is important to note that in the XML file we specify the socket path that is used to connect to
10 FD.io VPP.
11
12 This 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
24 Notice the **interface type** and the **path** to the socket.
25
26 Now 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
34 Create 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
46 The 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
61 Once the virtual machine is created notice the socket filename shows **Success** and
62 there are **Memory Regions**. At this point the VM and FD.io VPP are connected. Also
63 notice **qsz 256**. This system is running an older version of qemu. A queue size of 256
64 will affect vhost throughput. The qsz should be 1024. On the web you should be able to
65 find 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