X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=VNFs%2FDPPD-PROX%2Fhelper-scripts%2Frapid%2Fcheck_prox_system_setup.sh;h=3cf1113d9d4e75f8d46940aa4a9c09eb6f9c346c;hb=894f62216ca3c97ef0c1c09b9475459b9324b1bb;hp=7d66bd39bc9786f4ce2773a82baa13f47a267410;hpb=36fdd91214ab495f634933f241ace985ef03e3a6;p=samplevnf.git 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 7d66bd39..3cf1113d 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-2019 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,39 +14,65 @@ ## 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="/home/centos/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 - modprobe uio - insmod /root/dpdk/build/kmod/igb_uio.ko - 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 "$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 + while read -r line + do + case $line in + isolated_cores=1-$MAXCOREID*) + if test ! -f "$tuned_done"; then + tuned_and_reboot + fi + 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" + ## On some systems, we still need to use the igb_uio driver. + ## Example: good performance on AWS with the ENA interface. + ## Make sure that you change devbind.sh to use the preferred + ## driver. vfio is the default. + modprobe uio + insmod /opt/rapid/dpdk/build/kmod/igb_uio.ko wc_activate=1 + exit 0 + ;; + isolated_cores=*) + 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 < "$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 -