0a465cf0fb40357a808d3198767558d3a81fa5bc
[csit.git] / docs / report / introduction / methodology_kvm_vms_vhost_user.rst
1 KVM VMs vhost-user
2 ------------------
3
4 QEMU is used for VPP-VM testing enviroment. By default, standard QEMU version
5 preinstalled from OS repositories is used on VIRL/vpp_device functional testing
6 (qemu-2.11.x for Ubuntu 18.04, qemu-2.5.0 for Ubuntu 16.04). For perfomance
7 testing QEMU is downloaded from `project homepage <qemu.org>`_ and compiled
8 during testing. This allows framework to easily inject QEMU patches in case of
9 need. In QEMU version <2.8 we used it for increasing QEMU virtion queue size.
10 In CSIT setup DUTs have small VM image `/var/lib/vm/vhost-nested.img`. QEMU
11 binary can be adjusted in global settings. VM image must have installed at least
12 qemu-guest-agent, sshd, bridge-utils, VirtIO support and Testpmd/L3fwd
13 application. Username/password for the VM must be cisco/cisco and
14 NOPASSWD sudo access. The interface naming is based on driver (management
15 interface type is Intel E1000), all E1000 interfaces will be named mgmt<n> and
16 all VirtIO interfaces will be named virtio<n>. In VM
17 "/etc/init.d/qemu-guest-agent" you must set "TRANSPORT=isa-serial:/dev/ttyS1"
18 because ttyS0 is used by serial console and ttyS1 is dedicated for
19 qemu-guest-agent in QEMU setup. There is python library for QEMU setup, start
20 and some utilities "resources/libraries/python/QemuUtils.py"
21
22 FD.io CSIT performance lab is testing VPP vhost with KVM VMs using
23 following environment settings:
24
25 - Tests with varying Qemu virtio queue (a.k.a. vring) sizes: [vr1024] 1024
26   descriptors to optimize for packet throughput.
27 - Tests with varying Linux :abbr:`CFS (Completely Fair Scheduler)`
28   settings: [cfs] default settings, [cfsrr1] CFS RoundRobin(1) policy
29   applied to all data plane threads handling test packet path including
30   all VPP worker threads and all Qemu testpmd poll-mode threads.
31 - Resulting test cases are all combinations with [vr1024] and
32   [cfs,cfsrr1] settings.
33 - Adjusted Linux kernel :abbr:`CFS (Completely Fair Scheduler)`
34   scheduler policy for data plane threads used in CSIT is documented in
35   `CSIT Performance Environment Tuning wiki
36   <https://wiki.fd.io/view/CSIT/csit-perf-env-tuning-ubuntu1604>`_.
37 - The purpose is to verify performance impact (MRR and NDR/PDR
38   throughput) and same test measurements repeatability, by making VPP
39   and VM data plane threads less susceptible to other Linux OS system
40   tasks hijacking CPU cores running those data plane threads.