From c8b5dd5aa379c9b8fd60a66be16351f62e5e5ebb Mon Sep 17 00:00:00 2001 From: Luc Provoost Date: Thu, 25 Feb 2021 18:34:11 +0100 Subject: Fix the tuned optimizations tuned-adm is now run through check_prox_system_setup.sh at the first system startup/reboot. This will result in the correct grub cmdline parameters. We are also coying the default rapid_rsa_key in the authorized_keys of the rapid user, which is now the default user to run the tests. Fixed also an issue in handle_mirror.c: using now ETYPE_IPv4. Changed deploycentostools.sh to reflect the changes done when building the image with disk-image-create. Change-Id: I5933d21faef9fe02b56c01d0b96e2c143cc5476d Signed-off-by: Luc Provoost --- VNFs/DPPD-PROX/handle_mirror.c | 2 +- .../rapid/check_prox_system_setup.sh | 60 ++++++++++++++-------- VNFs/DPPD-PROX/helper-scripts/rapid/config_file | 4 +- VNFs/DPPD-PROX/helper-scripts/rapid/createrapid.py | 2 +- .../helper-scripts/rapid/deploycentostools.sh | 6 +-- VNFs/DPPD-PROX/helper-scripts/rapid/prox_ctrl.py | 2 + .../helper-scripts/rapid/rapid_defaults.py | 2 +- .../DPPD-PROX/helper-scripts/rapid/rapid_parser.py | 6 +++ .../helper-scripts/rapid/stackdeployment.py | 3 +- 9 files changed, 56 insertions(+), 31 deletions(-) (limited to 'VNFs/DPPD-PROX') diff --git a/VNFs/DPPD-PROX/handle_mirror.c b/VNFs/DPPD-PROX/handle_mirror.c index 53e341e2..ba6e590c 100644 --- a/VNFs/DPPD-PROX/handle_mirror.c +++ b/VNFs/DPPD-PROX/handle_mirror.c @@ -71,7 +71,7 @@ static int handle_mirror_bulk(struct task_base *tbase, struct rte_mbuf **mbufs, for (uint16_t j = 0; j < n_pkts; ++j) { rte_pktmbuf_refcnt_update(mbufs2[j], (task->n_dests - 1) * task->multiplier); prox_rte_ipv4_hdr *pip = (prox_rte_ipv4_hdr *) (hdr[j] + 1); - if ((task->mirror_size != 0) && (hdr[j]->ether_type == RTE_ETHER_TYPE_IPV4) && ((pip->next_proto_id == IPPROTO_UDP) || (pip->next_proto_id == IPPROTO_TCP))) { + if ((task->mirror_size != 0) && (hdr[j]->ether_type == ETYPE_IPv4) && ((pip->next_proto_id == IPPROTO_UDP) || (pip->next_proto_id == IPPROTO_TCP))) { rte_pktmbuf_pkt_len(mbufs2[j]) = task->mirror_size; rte_pktmbuf_data_len(mbufs2[j]) = task->mirror_size; pip->total_length = rte_bswap16(task->mirror_size-sizeof(prox_rte_ether_hdr)); diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/check_prox_system_setup.sh b/VNFs/DPPD-PROX/helper-scripts/rapid/check_prox_system_setup.sh index 84e2f70f..834554dc 100755 --- a/VNFs/DPPD-PROX/helper-scripts/rapid/check_prox_system_setup.sh +++ b/VNFs/DPPD-PROX/helper-scripts/rapid/check_prox_system_setup.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash ## -## Copyright (c) 2010-2020 Intel Corporation +## Copyright (c) 2010-2021 Intel Corporation ## ## Licensed under the Apache License, Version 2.0 (the "License"); ## you may not use this file except in compliance with the License. @@ -14,43 +14,59 @@ ## See the License for the specific language governing permissions and ## limitations under the License. ## +## This script should run after booting: see check-prox-system-setup.service + NCPUS="$(lscpu | egrep '^CPU\(s\):' | awk '{ print $2 }')" MAXCOREID="$((NCPUS-1))" -filename="/etc/tuned/realtime-virtual-guest-variables.conf" -logfile="/opt/rapid/prox_system_setup.log" -if [ -f "$filename" ] +tuned_config="/etc/tuned/realtime-virtual-guest-variables.conf" +log_file="/opt/rapid/prox_system_setup.log" +system_ready="/opt/rapid/system_ready_for_rapid" +tuned_done="/opt/rapid/tuned_done" +after_boot_file="/opt/rapid/after_boot.sh" + +tuned_and_reboot () { + echo "Applying tuned profile">>$log_file + tuned-adm profile realtime-virtual-guest + touch "$tuned_done" + echo "Rebooting...">>$log_file + reboot + exit 0 +} + +if [ -f "$tuned_config" ] then while read -r line do case $line in isolated_cores=1-$MAXCOREID*) - echo "Isolated CPU(s) OK, no reboot: $line">>$logfile - FILE=/opt/rapid/after_boot.sh - if test -f "$FILE"; then - ("$FILE") - echo "Executing: $FILE">>$logfile + if test ! -f "$tuned_done"; then + tuned_and_reboot fi - touch /opt/rapid/system_ready_for_rapid + if test -f "$after_boot_file"; then + echo "Executing: $after_boot_file">>$log_file + ("$after_boot_file") + fi + echo "Isolated CPU(s) OK, no reboot: $line">>$log_file + ## rapid scripts will wait for the system_ready file to exist + ## Only then, they will be able to connect to the PROX instance + ## and start the testing + touch "$system_ready" exit 0 ;; isolated_cores=*) - echo "Isolated CPU(s) NOK, change the config and reboot: $line">>$logfile - sed -i "/^isolated_cores=.*/c\isolated_cores=1-$MAXCOREID" $filename - tuned-adm profile realtime-virtual-guest - reboot - exit 0 + echo "Isolated CPU(s) NOK: $line">>$log_file + sed -i "/^isolated_cores=.*/c\isolated_cores=1-$MAXCOREID" $tuned_config + tuned_and_reboot ;; *) echo "$line" ;; esac - done < "$filename" - echo "isolated_cores=1-$MAXCOREID" >> $filename - echo "No Isolated CPU(s) defined in config, line added: $line">>$logfile - tuned-adm profile realtime-virtual-guest - reboot + done < "$tuned_config" + echo "isolated_cores=1-$MAXCOREID" >> $tuned_config + echo "No Isolated CPU(s) defined in config, line added: isolated_cores=1-$MAXCOREID">>$log_file + tuned_and_reboot else - echo "$filename not found.">>$logfile + echo "$tuned_config not found.">>$log_file fi - diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/config_file b/VNFs/DPPD-PROX/helper-scripts/rapid/config_file index 0cd5c707..612f639f 100644 --- a/VNFs/DPPD-PROX/helper-scripts/rapid/config_file +++ b/VNFs/DPPD-PROX/helper-scripts/rapid/config_file @@ -3,7 +3,7 @@ cloud_name = openstackL6 stack_name = rapid heat_template= openstack-rapid.yaml heat_param = params_rapid.yaml -keypair_name = rapid_key -user = centos +keypair_name = rapid_rsa_key +user = rapid dataplane_subnet_mask = 24 ;push_gateway = http://192.168.36.61:9091/metrics/job/ diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/createrapid.py b/VNFs/DPPD-PROX/helper-scripts/rapid/createrapid.py index 0efea9a1..2ff503ae 100755 --- a/VNFs/DPPD-PROX/helper-scripts/rapid/createrapid.py +++ b/VNFs/DPPD-PROX/helper-scripts/rapid/createrapid.py @@ -53,7 +53,7 @@ def main(): rapid_stack_params = {} RapidStackManager.parse_config(rapid_stack_params) log_file = 'CREATE{}.log'.format(rapid_stack_params['stack_name']) - RapidLog.log_init(log_file, 'DEBUG', 'INFO', '2021.01.27') + RapidLog.log_init(log_file, 'DEBUG', 'INFO', '2021.03.15') #cloud_name = 'openstackL6' #stack_name = 'rapid' #heat_template = 'openstack-rapid.yaml' diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/deploycentostools.sh b/VNFs/DPPD-PROX/helper-scripts/rapid/deploycentostools.sh index e5199257..f4d92d88 100644 --- a/VNFs/DPPD-PROX/helper-scripts/rapid/deploycentostools.sh +++ b/VNFs/DPPD-PROX/helper-scripts/rapid/deploycentostools.sh @@ -18,15 +18,15 @@ # Directory for package build BUILD_DIR="/opt/rapid" DPDK_VERSION="20.05" -PROX_COMMIT="80dfeb5c734cc4d681f467e853a541a8a91fe1cf" +PROX_COMMIT="8442f6a8ce0962d818b7cd800150980c65983719" PROX_CHECKOUT="git checkout ${PROX_COMMIT}" ## Next line is overruling the PROX_COMMIT and will replace the version with a very specific patch. Should be commented out ## if you want to use a committed version of PROX with the COMMIT ID specified above ## As an example: Following line has the commit for testing IMIX, IPV6, ... It is the merge of all PROX commits on May 27th 2020 #PROX_CHECKOUT="git fetch \"https://gerrit.opnfv.org/gerrit/samplevnf\" refs/changes/23/70223/1 && git checkout FETCH_HEAD" MULTI_BUFFER_LIB_VER="0.52" -export RTE_SDK="${BUILD_DIR}/dpdk-${DPDK_VERSION}" -export RTE_TARGET="x86_64-native-linuxapp-gcc" +export RTE_SDK="${BUILD_DIR}/dpdk" +export RTE_TARGET="build" # By default, do not update OS OS_UPDATE="n" diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/prox_ctrl.py b/VNFs/DPPD-PROX/helper-scripts/rapid/prox_ctrl.py index 7c598ebe..3389bd6c 100644 --- a/VNFs/DPPD-PROX/helper-scripts/rapid/prox_ctrl.py +++ b/VNFs/DPPD-PROX/helper-scripts/rapid/prox_ctrl.py @@ -53,6 +53,8 @@ class prox_ctrl(object): self.test_connect() break except RuntimeWarning as ex: + RapidLog.debug("RuntimeWarning %d:\n%s" + % (ex.returncode, ex.output.strip())) attempts += 1 if attempts > 20: RapidLog.exception("Failed to connect to instance after %d\ diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_defaults.py b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_defaults.py index 530dfc99..f45b4dcf 100644 --- a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_defaults.py +++ b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_defaults.py @@ -21,7 +21,7 @@ class RapidDefaults(object): Class to define the test defaults """ test_params = { - 'version' : '2021.01.27', # Please do NOT change, used for debugging + 'version' : '2021.03.15', # Please do NOT change, used for debugging 'environment_file' : 'rapid.env', #Default string for environment 'test_file' : 'tests/basicrapid.test', #Default string for test 'machine_map_file' : 'machine.map', #Default string for machine map file diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_parser.py b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_parser.py index c1ab36a0..8ff586ee 100644 --- a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_parser.py +++ b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_parser.py @@ -55,6 +55,12 @@ class RapidConfigParser(object): test_params['vim_type'] = config.get('Varia', 'vim') test_params['key'] = config.get('ssh', 'key') test_params['user'] = config.get('ssh', 'user') + if test_params['user'] in ['rapid']: + if test_params['key'] != 'rapid_rsa_key': + RapidLog.debug(("Key file {} for user {} overruled by key file:" + " rapid_rsa_key").format(test_params['key'], + test_params['user'])) + test_params['key'] = 'rapid_rsa_key' test_params['total_number_of_machines'] = int(config.get('rapid', 'total_number_of_machines')) tests = [] diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/stackdeployment.py b/VNFs/DPPD-PROX/helper-scripts/rapid/stackdeployment.py index 925fd8bd..6374b843 100755 --- a/VNFs/DPPD-PROX/helper-scripts/rapid/stackdeployment.py +++ b/VNFs/DPPD-PROX/helper-scripts/rapid/stackdeployment.py @@ -152,7 +152,8 @@ class StackDeployment(object): def deploy(self, stack_name, keypair_name, heat_template, heat_param): self.key_name = keypair_name - self.private_key_filename = '{}.pem'.format(keypair_name) + #self.private_key_filename = '{}.pem'.format(keypair_name) + self.private_key_filename = keypair_name if not self.IsDeployed(stack_name): if not self.IsKey(): self.create_key() -- cgit 1.2.3-korg