08b8ce1d6c
Change-Id: Ic7a144ffda0d0a3e0f6f9bc1a4790ab36fdf002e Signed-off-by: jdenisco <jdenisco@cisco.com>
112 lines
3.8 KiB
ReStructuredText
112 lines
3.8 KiB
ReStructuredText
.. _vhost02:
|
|
|
|
Creating the Virtual Machine
|
|
----------------------------
|
|
|
|
We will now create the virtual machine. We use the "virsh create command". For the complete file we
|
|
use refer to :ref:`xmlexample`.
|
|
|
|
It is important to note that in the XML file we specify the socket path that is used to connect to
|
|
FD.io VPP.
|
|
|
|
This is done with a section that looks like this
|
|
|
|
.. code-block:: console
|
|
|
|
<interface type='vhostuser'>
|
|
<mac address='52:54:00:4c:47:f2'/>
|
|
<source type='unix' path='/tmp//vm00.sock' mode='server'/>
|
|
<driver rx_queue_size='1024' tx_queue_size='1024'/>
|
|
<model type='virtio'/>
|
|
<alias name='net1'/>
|
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
|
|
</interface>
|
|
|
|
Notice the **interface type** and the **path** to the socket.
|
|
|
|
Now we create the VM. The virsh list command shows the VMs that have been created. We start with no VMs.
|
|
|
|
.. code-block:: console
|
|
|
|
$ virsh list
|
|
Id Name State
|
|
----------------------------------------------------
|
|
|
|
Create the VM with the virsh create command specifying our xml file.
|
|
|
|
.. code-block:: console
|
|
|
|
$ virsh create ./iperf3-vm.xml
|
|
Domain iperf-server3 created from ./iperf3-vm.xml
|
|
|
|
$ virsh list
|
|
Id Name State
|
|
----------------------------------------------------
|
|
65 iperf-server3 running
|
|
|
|
The VM is now created.
|
|
|
|
.. note::
|
|
|
|
After a VM is created an xml file can created with "virsh dumpxml".
|
|
|
|
.. code-block:: console
|
|
|
|
$ virsh dumpxml iperf-server3
|
|
<domain type='kvm' id='65'>
|
|
<name>iperf-server3</name>
|
|
<uuid>e23d37c1-10c3-4a6e-ae99-f315a4165641</uuid>
|
|
<memory unit='KiB'>262144</memory>
|
|
.....
|
|
|
|
Once the virtual machine is created notice the socket filename shows **Success** and
|
|
there are **Memory Regions**. At this point the VM and FD.io VPP are connected. Also
|
|
notice **qsz 1024**. A queue size of 256 will affect vhost throughput. The qsz should
|
|
be 1024. In QEMU 2.10.0 and libvirt 3.7.0 and later versions this is specified in the
|
|
xml file with the line **<driver rx_queue_size='1024' tx_queue_size='1024'/>** shown above
|
|
and in the example.
|
|
|
|
.. code-block:: console
|
|
|
|
vpp# show vhost
|
|
Virtio vhost-user interfaces
|
|
Global:
|
|
coalesce frames 32 time 1e-3
|
|
number of rx virtqueues in interrupt mode: 0
|
|
Interface: VirtualEthernet0/0/0 (ifindex 3)
|
|
virtio_net_hdr_sz 12
|
|
features mask (0xffffffffffffffff):
|
|
features (0x58208000):
|
|
VIRTIO_NET_F_MRG_RXBUF (15)
|
|
VIRTIO_NET_F_GUEST_ANNOUNCE (21)
|
|
VIRTIO_F_ANY_LAYOUT (27)
|
|
VIRTIO_F_INDIRECT_DESC (28)
|
|
VHOST_USER_F_PROTOCOL_FEATURES (30)
|
|
protocol features (0x3)
|
|
VHOST_USER_PROTOCOL_F_MQ (0)
|
|
VHOST_USER_PROTOCOL_F_LOG_SHMFD (1)
|
|
|
|
socket filename /tmp/vm00.sock type client errno "Success"
|
|
|
|
rx placement:
|
|
thread 1 on vring 1, polling
|
|
tx placement: spin-lock
|
|
thread 0 on vring 0
|
|
thread 1 on vring 0
|
|
|
|
Memory regions (total 2)
|
|
region fd guest_phys_addr memory_size userspace_addr mmap_offset mmap_addr
|
|
====== ===== ================== ================== ================== ================== =============== ===
|
|
0 31 0x0000000000000000 0x00000000000a0000 0x00007f1db9c00000 0x0000000000000000 0x00007f7db0400 000
|
|
1 32 0x00000000000c0000 0x000000000ff40000 0x00007f1db9cc0000 0x00000000000c0000 0x00007f7d94ec0 000
|
|
|
|
Virtqueue 0 (TX)
|
|
qsz 1024 last_avail_idx 0 last_used_idx 0
|
|
avail.flags 0 avail.idx 256 used.flags 1 used.idx 0
|
|
kickfd 33 callfd 34 errfd -1
|
|
|
|
Virtqueue 1 (RX)
|
|
qsz 1024 last_avail_idx 8 last_used_idx 8
|
|
avail.flags 0 avail.idx 8 used.flags 1 used.idx 8
|
|
kickfd 29 callfd 35 errfd -1
|