From 6fd923895a663923f0569078eceb3818373b3e1d Mon Sep 17 00:00:00 2001
From: Feng Pan <fpan@redhat.com>
Date: Tue, 25 Oct 2016 19:07:37 -0400
Subject: Add support for isolcpu and VPP thread pinning

Also depend on https://github.com/radez/puppet-fdio/pull/14

JIRA: APEX-337

opnfv-tht-pr: 92

Change-Id: Ic3d2f04bfd1983c38e09a2bfa3992a572fc9c6c1
Signed-off-by: Feng Pan <fpan@redhat.com>
---
 build/build_perf_image.sh              | 11 +++++++++++
 config/deploy/os-nosdn-fdio-noha.yaml  | 10 ++++++++++
 config/deploy/os-odl_l2-fdio-ha.yaml   | 10 ++++++++++
 config/deploy/os-odl_l2-fdio-noha.yaml | 10 ++++++++++
 lib/overcloud-deploy-functions.sh      |  4 ++++
 lib/python/apex/deploy_settings.py     |  2 +-
 6 files changed, 46 insertions(+), 1 deletion(-)

diff --git a/build/build_perf_image.sh b/build/build_perf_image.sh
index 68a1804f..68f74ea2 100644
--- a/build/build_perf_image.sh
+++ b/build/build_perf_image.sh
@@ -41,3 +41,14 @@ if [ "$CATEGORY" == "kernel" ]; then
   fi
 fi
 
+if [ "$CATEGORY" == "vpp" ]; then
+  if [ "$KEY" == "main-core" ]; then
+    sudo sed -i "/${ROLE}VPPMainCore:/c\  ${ROLE}VPPMainCore: '${VALUE}'" /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml
+  fi
+  if [ "$KEY" == "corelist-workers" ]; then
+    sudo sed -i "/${ROLE}VPPCorelistWorkers:/c\  ${ROLE}VPPCorelistWorkers: '${VALUE}'" /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml
+  fi
+  if [ "$KEY" == "uio-driver" ]; then
+    sudo sed -i "/${ROLE}UIODriver:/c\  ${ROLE}UIODriver: '${VALUE}'" /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml
+  fi
+fi
\ No newline at end of file
diff --git a/config/deploy/os-nosdn-fdio-noha.yaml b/config/deploy/os-nosdn-fdio-noha.yaml
index 4d27ae87..660237d6 100644
--- a/config/deploy/os-nosdn-fdio-noha.yaml
+++ b/config/deploy/os-nosdn-fdio-noha.yaml
@@ -15,9 +15,19 @@ deploy_options:
       kernel:
         hugepages: 1024
         hugepagesz: 2M
+        isolcpus: 1,2
+      vpp:
+        main-core: 1
+        corelist-workers: 2
+        uio-driver: uio_pci_generic
     Compute:
       kernel:
         hugepagesz: 2M
         hugepages: 2048
         intel_iommu: 'on'
         iommu: pt
+        isolcpus: 1,2
+      vpp:
+        main-core: 1
+        corelist-workers: 2
+        uio-driver: uio_pci_generic
diff --git a/config/deploy/os-odl_l2-fdio-ha.yaml b/config/deploy/os-odl_l2-fdio-ha.yaml
index d75dc1dc..82836573 100644
--- a/config/deploy/os-odl_l2-fdio-ha.yaml
+++ b/config/deploy/os-odl_l2-fdio-ha.yaml
@@ -18,9 +18,19 @@ deploy_options:
         hugepagesz: 2M
         intel_iommu: 'on'
         iommu: pt
+        isolcpus: 1,2
+      vpp:
+        main-core: 1
+        corelist-workers: 2
+        uio-driver: uio_pci_generic
     Compute:
       kernel:
         hugepagesz: 2M
         hugepages: 2048
         intel_iommu: 'on'
         iommu: pt
+        isolcpus: 1,2
+      vpp:
+        main-core: 1
+        corelist-workers: 2
+        uio-driver: uio_pci_generic
diff --git a/config/deploy/os-odl_l2-fdio-noha.yaml b/config/deploy/os-odl_l2-fdio-noha.yaml
index 207c6f34..53d6181a 100644
--- a/config/deploy/os-odl_l2-fdio-noha.yaml
+++ b/config/deploy/os-odl_l2-fdio-noha.yaml
@@ -18,9 +18,19 @@ deploy_options:
         hugepagesz: 2M
         intel_iommu: 'on'
         iommu: pt
+        isolcpus: 1,2
+      vpp:
+        main-core: 1
+        corelist-workers: 2
+        uio-driver: uio_pci_generic
     Compute:
       kernel:
         hugepagesz: 2M
         hugepages: 2048
         intel_iommu: 'on'
         iommu: pt
+        isolcpus: 1,2
+      vpp:
+        main-core: 1
+        corelist-workers: 2
+        uio-driver: uio_pci_generic
diff --git a/lib/overcloud-deploy-functions.sh b/lib/overcloud-deploy-functions.sh
index a42162f2..a62b00ff 100755
--- a/lib/overcloud-deploy-functions.sh
+++ b/lib/overcloud-deploy-functions.sh
@@ -199,6 +199,10 @@ if [ -n "${public_network_controller_interface}" ]; then
 fi
 EOI
 
+    echo -e "${blue}INFO: Including /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml ${reset}"
+    if [ "$debug" == 'TRUE' ]; then
+      ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" "cat /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml"
+    fi
     DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/numa.yaml"
   fi
 
diff --git a/lib/python/apex/deploy_settings.py b/lib/python/apex/deploy_settings.py
index c27eecf9..5490c6e9 100644
--- a/lib/python/apex/deploy_settings.py
+++ b/lib/python/apex/deploy_settings.py
@@ -24,7 +24,7 @@ REQ_DEPLOY_SETTINGS = ['sdn_controller',
 OPT_DEPLOY_SETTINGS = ['performance', 'vsperf']
 
 VALID_ROLES = ['Controller', 'Compute', 'ObjectStorage']
-VALID_PERF_OPTS = ['kernel', 'nova']
+VALID_PERF_OPTS = ['kernel', 'nova', 'vpp']
 VALID_DATAPLANES = ['ovs', 'ovs_dpdk', 'fdio']
 
 
-- 
cgit