From 0838eae19fa6107f713fc0a2187978cebd3623f0 Mon Sep 17 00:00:00 2001 From: Maciek Konstantynowicz Date: Wed, 8 May 2019 14:57:19 +0100 Subject: [PATCH] report: edits to methodology_kvm_vms_vhost_user Change-Id: Iaa2cd0bbe6171ac800489b897ddae079332b48ee Signed-off-by: Maciek Konstantynowicz (cherry picked from commit 3a5e059cfbe8961799fb5e89e716c506175332d7) --- .../methodology_kvm_vms_vhost_user.rst | 103 ++++++++++++--------- 1 file changed, 57 insertions(+), 46 deletions(-) diff --git a/docs/report/introduction/methodology_kvm_vms_vhost_user.rst b/docs/report/introduction/methodology_kvm_vms_vhost_user.rst index dae1e5a875..79f1134881 100644 --- a/docs/report/introduction/methodology_kvm_vms_vhost_user.rst +++ b/docs/report/introduction/methodology_kvm_vms_vhost_user.rst @@ -1,63 +1,74 @@ KVM VMs vhost-user ------------------ -QEMU is used for vhost testing enviroment. By default, standard QEMU version -preinstalled from OS repositories is used (qemu-2.11.1 for Ubuntu 18.04, -qemu-2.5.0 for Ubuntu 16.04) and the path to the QEMU binary can be adjusted -in `Constants.py`. +QEMU is used for KVM VM vhost-user testing enviroment. By default, +standard QEMU version is used, preinstalled from OS repositories +(qemu-2.11.1 for Ubuntu 18.04, qemu-2.5.0 for Ubuntu 16.04). The path +to the QEMU binary can be adjusted in `Constants.py`. -FD.io CSIT performance lab is testing VPP vhost with KVM VMs using +FD.io CSIT performance lab is testing VPP vhost-user with KVM VMs using following environment settings: -- Tests with varying Qemu virtio queue (a.k.a. vring) sizes: [vr1024] 1024 - descriptors to optimize for packet throughput. +- Tests with varying QEMU virtio queue (a.k.a. vring) sizes: [vr1024] + 1024 descriptors to optimize for packet throughput. - Tests with varying Linux :abbr:`CFS (Completely Fair Scheduler)` - settings: [cfs] default settings, [cfsrr1] CFS RoundRobin(1) policy - applied to all data plane threads handling test packet path including - all VPP worker threads and all Qemu testpmd poll-mode threads. + settings: i) [cfs] default settings, ii) [cfsrr1] CFS RoundRobin(1) + policy applied to all data plane threads handling test packet path + including all VPP worker threads and all QEMU testpmd poll-mode + threads. - Resulting test cases are all combinations with [vr1024] and [cfs,cfsrr1] settings. - Adjusted Linux kernel :abbr:`CFS (Completely Fair Scheduler)` scheduler policy for data plane threads used in CSIT is documented in `CSIT Performance Environment Tuning wiki `_. -- The purpose is to verify performance impact (MRR and NDR/PDR - throughput) and same test measurements repeatability, by making VPP - and VM data plane threads less susceptible to other Linux OS system - tasks hijacking CPU cores running those data plane threads. -CSIT does support two types VM definitions: Image or Kernel. +Testing with different CFS settings enables verifying the impact of +making VPP and VM data plane threads less susceptible to other Linux OS +system tasks hijacking CPU cores running those data plane threads. -Image VM +CSIT supports two types of VMs: + +- **Image-VM**: used for all functional, VPP_device, and regular + performance tests except NFV density tests. + +- **Kernel-VM**: new VM type introduced for NFV density tests to provide + greater in-VM application install flexibility and to further reduce + test execution time by simpler VM lifecycle management. + +Image-VM ~~~~~~~~ -CSIT can use a pre-created VM image. The path to image can be adjusted in -`Constants.py`. For convenience and full compatibility CSIT repository contains -a set of scripts to prepare `Built-root `_ based -embedded Linux image with all the dependencies needed to run DPDK testpmd, DPDK -l3fwd, Linux bridge or Linux IPv4 forwarding. - -Built-root was chosen for a VM image to be lightweight and booting time -should not impact tests duration. - -VM image must have installed at least qemu-guest-agent, sshd, bridge-utils, -VirtIO support and DPDK Testpmd/L3fwd application. Username/password for the VM -must be cisco/cisco and NOPASSWD sudo access. The interface naming is based on -driver (management interface type is Intel E1000), all E1000 interfaces will be -named mgmt and all VirtIO interfaces will be named virtio. In VM -"/etc/init.d/qemu-guest-agent" must be set to "TRANSPORT=isa-serial:/dev/ttyS1" -because ttyS0 is used by serial console and ttyS1 is dedicated for -qemu-guest-agent in QEMU setup. - -Kernel VM +CSIT can use a pre-created VM image. The path to the image can be +adjusted in `Constants.py`. For convenience and full compatibility CSIT +repository contains a set of scripts to prepare `Built-root +`_ based embedded Linux image with all the +dependencies needed to run DPDK Testpmd, DPDK L3Fwd, Linux bridge or +Linux IPv4 forwarding. + +Built-root was chosen for a VM image to make it lightweight and with +fast booting time to limit impact on tests duration. + +In order to execute CSIT tests, VM image must have following software +installed: qemu-guest-agent, sshd, bridge-utils, VirtIO support and DPDK +Testpmd/L3fwd applications. Username/password for the VM must be +``cisco``/``cisco`` and ``NOPASSWD`` sudo access. The interface naming +is based on the driver (management interface type is Intel E1000), all +E1000 interfaces will be named ``mgmt`` and all VirtIO interfaces +will be named ``virtio``. In VM ``/etc/init.d/qemu-guest-agent`` must +be set to ``TRANSPORT=isa-serial:/dev/ttyS1`` because ttyS0 is used by +serial console and ttyS1 is dedicated for qemu-guest-agent in QEMU +setup. + +Kernel-VM ~~~~~~~~~ -As an alternative to image VM, CSIT can use a kernel KVM image as a boot kernel. -This option allows better configurability of what application is running in VM -userspace. As a filesystem root9p is used which allows to map the host OS -filesystem as read only guest OS filesystem. +CSIT can use a kernel KVM image as a boot kernel, as an alternative to +image VM. This option allows better configurability of what application +is running in VM userspace. Using root9p filesystem allows mapping the +host-OS filesystem as read only guest-OS filesystem. -Example of custom init script for the kernel VM: +Example of custom init script for the kernel-VM: :: @@ -79,10 +90,10 @@ Example of custom init script for the kernel VM: $vnf_bin poweroff -f -The `$vnf_bin` variable is replaced, during runtime by the QemuUtils libraries, -by the path to NF binary and its parameters. This allows CSIT to run the -applications installed on host OS, for example VPP of the same version as -running on host OS. +QemuUtils library during runtime replaces the ``$vnf_bin`` variable by +the path to NF binary and its parameters. This allows CSIT to run any +application installed on host OS, for example the same version of VPP +as running on the host-OS. -Kernel KVM image must be available on host filesystem as a prerequisite. -The path to kernel image is defined in `Constants.py`. +Kernel-VM image must be available in the host filesystem as a +prerequisite. The path to kernel-VM image is defined in `Constants.py`. -- 2.16.6