summaryrefslogtreecommitdiffstats
path: root/docs/release/configguide/low-latency.feature.configuration.description.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/release/configguide/low-latency.feature.configuration.description.rst')
-rw-r--r--docs/release/configguide/low-latency.feature.configuration.description.rst151
1 files changed, 151 insertions, 0 deletions
diff --git a/docs/release/configguide/low-latency.feature.configuration.description.rst b/docs/release/configguide/low-latency.feature.configuration.description.rst
new file mode 100644
index 000000000..c53aa52f4
--- /dev/null
+++ b/docs/release/configguide/low-latency.feature.configuration.description.rst
@@ -0,0 +1,151 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+=============================================
+Low Latency Feature Configuration Description
+=============================================
+
+Introduction
+------------
+In KVM4NFV project, we focus on the KVM hypervisor to enhance it for NFV, by
+looking at the following areas initially
+
+* Minimal Interrupt latency variation for data plane VNFs:
+ * Minimal Timing Variation for Timing correctness of real-time VNFs
+ * Minimal packet latency variation for data-plane VNFs
+* Inter-VM communication,
+* Fast live migration
+
+Configuration of Cyclictest
+---------------------------
+
+Cyclictest measures Latency of response to a stimulus. Achieving low latency
+with the KVM4NFV project requires setting up a special test environment.
+This environment includes the BIOS settings, kernel configuration, kernel
+parameters and the run-time environment.
+
+* For more information regarding the test environment, please visit
+ https://wiki.opnfv.org/display/kvm/KVM4NFV+Test++Environment
+ https://wiki.opnfv.org/display/kvm/Nfv-kvm-tuning
+
+Pre-configuration activities
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Intel POD10 is currently used as OPNFV-KVM4NFV test environment. The rpm
+packages from the latest build are downloaded onto Intel-Pod10 jump server
+from artifact repository. Yardstick running in a ubuntu docker container
+on Intel Pod10-jump server will configure the host(intel pod10 node1/node2
+based on job type), the guest and triggers the cyclictest on the guest using
+below sample yaml file.
+
+
+.. code:: bash
+
+ For IDLE-IDLE test,
+
+ host_setup_seqs:
+ - "host-setup0.sh"
+ - "reboot"
+ - "host-setup1.sh"
+ - "host-run-qemu.sh"
+
+ guest_setup_seqs:
+ - "guest-setup0.sh"
+ - "reboot"
+ - "guest-setup1.sh"
+
+.. figure:: images/idle-idle-test.png
+ :name: idle-idle-test
+ :width: 100%
+ :align: center
+
+.. code:: bash
+
+ For [CPU/Memory/IO]Stress-IDLE tests,
+
+ host_setup_seqs:
+ - "host-setup0.sh"
+ - "reboot"
+ - "host-setup1.sh"
+ - "stress_daily.sh" [cpustress/memory/io]
+ - "host-run-qemu.sh"
+
+ guest_setup_seqs:
+ - "guest-setup0.sh"
+ - "reboot"
+ - "guest-setup1.sh"
+
+.. figure:: images/stress-idle-test.png
+ :name: stress-idle-test
+ :width: 100%
+ :align: center
+
+The following scripts are used for configuring host and guest to create a
+special test environment and achieve low latency.
+
+Note: host-setup0.sh, host-setup1.sh and host-run-qemu.sh are run on the host,
+followed by guest-setup0.sh and guest-setup1.sh scripts on the guest VM.
+
+**host-setup0.sh**: Running this script will install the latest kernel rpm
+on host and will make necessary changes as following to create special test
+environment.
+
+ * Isolates CPUs from the general scheduler
+ * Stops timer ticks on isolated CPUs whenever possible
+ * Stops RCU callbacks on isolated CPUs
+ * Enables intel iommu driver and disables DMA translation for devices
+ * Sets HugeTLB pages to 1GB
+ * Disables machine check
+ * Disables clocksource verification at runtime
+
+**host-setup1.sh**: Running this script will make the following test
+environment changes.
+
+ * Disabling watchdogs to reduce overhead
+ * Disabling RT throttling
+ * Reroute interrupts bound to isolated CPUs to CPU 0
+ * Change the iptable so that we can ssh to the guest remotely
+
+**stress_daily.sh**: Scripts gets triggered only for stress-idle tests. Running this script
+make the following environment changes.
+
+ * Triggers stress_script.sh, which runs the stress command with necessary options
+ * CPU,Memory or IO stress can be applied based on the test type
+ * Applying stress only on the Host is handled in D-Release
+ * For Idle-Idle test the stress script is not triggered
+ * Stress is applied only on the free cores to prevent load on qemu process
+
+ **Note:**
+ - On Numa Node 1: 22,23 cores are allocated for QEMU process
+ - 24-43 are used for applying stress
+
+**host-run-qemu.sh**: Running this script will launch a guest vm on the host.
+ Note: download guest disk image from artifactory.
+
+**guest-setup0.sh**: Running this scrcipt on the guest vm will install the
+latest build kernel rpm, cyclictest and make the following configuration on
+guest vm.
+
+ * Isolates CPUs from the general scheduler
+ * Stops timer ticks on isolated CPUs whenever possible
+ * Uses polling idle loop to improve performance
+ * Disables clocksource verification at runtime
+
+**guest-setup1.sh**: Running this script on guest vm will do the following
+configurations.
+
+ * Disable watchdogs to reduce overhead
+ * Routes device interrupts to non-RT CPU
+ * Disables RT throttling
+
+Hardware configuration
+~~~~~~~~~~~~~~~~~~~~~~
+
+Currently Intel POD10 is used as test environment for kvm4nfv to execute
+cyclictest. As part of this test environment Intel pod10-jump is configured as
+jenkins slave and all the latest build artifacts are downloaded on to it.
+
+* For more information regarding hardware configuration, please visit
+ https://wiki.opnfv.org/display/pharos/Intel+Pod10
+ https://build.opnfv.org/ci/computer/intel-pod10/
+ http://artifacts.opnfv.org/octopus/brahmaputra/docs/octopus_docs/opnfv-jenkins-slave-connection.html