bf2dbdb441ff0b653c5995fde4f148af2bec9def
[kvmfornfv.git] / docs / configurationguide / low-latency.feature.configuration.description.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. http://creativecommons.org/licenses/by/4.0
3
4 Introduction
5 ============
6
7 In KVM4NFV project, we focus on the KVM hypervisor to enhance it for NFV, by
8 looking at the following areas initially
9
10 * Minimal Interrupt latency variation for data plane VNFs:
11    * Minimal Timing Variation for Timing correctness of real-time VNFs
12    * Minimal packet latency variation for data-plane VNFs
13 * Inter-VM communication,
14 * Fast live migration
15
16 Configuration of Cyclictest
17 ===========================
18
19 Cyclictest measures Latency of response to a stimulus. Achieving low latency
20 with the KVM4NFV project requires setting up a special test environment.
21 This environment includes the BIOS settings, kernel configuration, kernel
22 parameters and the run-time environment.
23
24 * For more information regarding the test environment, please visit
25   https://wiki.opnfv.org/display/kvm/KVM4NFV+Test++Environment
26   https://wiki.opnfv.org/display/kvm/Nfv-kvm-tuning
27
28 Pre-configuration activities
29 ----------------------------
30
31 Intel POD1 is currently used as OPNFV-KVM4NFV test environment. The latest
32 build packages are downloaded onto Intel Pod1-jump server from artifact
33 repository. Yardstick running in a ubuntu docker container on Intel Pod1-jump
34 server will trigger the cyclictest.
35
36 Running cyclictest through Yardstick will Configure the host(Pod1-node1), the
37 guest, executes  cyclictest on the guest.
38
39 The following scripts are used for configuring host and guest to create a
40 special test environment and achieve low latency.
41
42 Note: host-setup0.sh, host-setup1.sh and host-run-qemu.sh are run on the host,
43 followed by guest-setup0.sh and guest-setup1.sh scripts on the guest VM.
44
45 **host-setup0.sh**: Running this script will install the latest kernel rpm
46 on host and will make necessary changes as following to create special test
47 environment
48
49    * Isolates CPUs from the general scheduler
50    * Stops timer ticks on isolated CPUs whenever possible
51    * Stops RCU callbacks on isolated CPUs
52    * Enables intel iommu driver and disables DMA translation for devices
53    * Sets HugeTLB pages to 1GB
54    * Disables machine check
55    * Disables clocksource verification at runtime
56
57 **host-setup1.sh**: Running this script will make the following test
58 environment changes
59
60    * Disabling watchdogs to reduce overhead
61    * Disabling RT throttling
62    * Reroute interrupts bound to isolated CPUs to CPU 0
63    * Change the iptable so that we can ssh to the guest remotely
64
65 **host-run-qemu.sh**: Running this script will launch a guest vm on the host.
66      Note: download guest disk image from artifactory
67
68 **guest-setup0.sh**: Running this scrcipt on the guest vm will install the
69 latest build kernel rpm, cyclictest and make the following configuration on
70 guest vm.
71
72    * Isolates CPUs from the general scheduler
73    * Stops timer ticks on isolated CPUs whenever possible
74    * Uses polling idle loop to improve performance
75    * Disables clocksource verification at runtime
76
77 **guest-setup1.sh**: Running this script on guest vm will do the following
78 configurations
79
80    * Disable watchdogs to reduce overhead
81    * Routes device interrupts to non-RT CPU
82    * Disables RT throttling
83
84 Hardware configuration
85 ----------------------
86
87 Currently Intel POD1 is used as test environment for kvmfornfv to execute
88 cyclictest. As part of this test environment Intel pod1-jump is configured as
89 jenkins slave and all the latest build artifacts are downloaded on to it.
90 Intel pod1-node1 is the host on which a guest vm will be launched as a part of
91 running cylictest through yardstick.
92
93 * For more information regarding hardware configuration, please visit
94   https://wiki.opnfv.org/display/pharos/Intel+Pod1
95   https://build.opnfv.org/ci/computer/intel-pod1/
96   http://artifacts.opnfv.org/octopus/brahmaputra/docs/octopus_docs/opnfv-jenkins-slave-connection.html