summaryrefslogtreecommitdiffstats
path: root/VNFs/DPPD-PROX/helper-scripts/rapid/check_prox_system_setup.sh
blob: 3cf1113d9d4e75f8d46940aa4a9c09eb6f9c346c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/usr/bin/env bash
##
## 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.
## You may obtain a copy of the License at
##
##     http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## 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))"

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*)
                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 "$tuned_config not found.">>$log_file
fi