6256b0d106
This update replaced the compute personality & subfunction to worker, and updated internal and customer visible references. In addition, the compute-huge package has been renamed to worker-utils as it contains various scripts/services that used to affine running tasks or interface IRQ to specific CPUs. The worker_reserved.conf is now installed to /etc/platform. The cpu function 'VM' has also been renamed to 'Application'. Tests Performed: Non-containerized deployment AIO-SX: Sanity and Nightly automated test suite AIO-DX: Sanity and Nightly automated test suite 2+2 System: Sanity and Nightly automated test suite 2+2 System: Horizon Patch Orchestration Kubernetes deployment: AIO-SX: Create, delete, reboot and rebuild instances 2+2+2 System: worker nodes are unlock enable and no alarms Story: 2004022 Task: 27013 Change-Id: I0e0be6b3a6f25f7fb8edf64ea4326854513aa396 Signed-off-by: Tao Liu <tao.liu@windriver.com>
242 lines
9.1 KiB
Bash
242 lines
9.1 KiB
Bash
#!/bin/bash
|
|
|
|
#
|
|
# Copyright (c) 2015-2016 Wind River Systems, Inc.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
source /etc/init.d/cpumap_functions.sh
|
|
|
|
export NR_CPUS_LIST=("4" "8" "16" "32" "64" "128")
|
|
if [ ! -z ${1} ]; then
|
|
NR_CPUS_LIST=(${1//,/ })
|
|
fi
|
|
|
|
function test_cpumap_to_cpulist {
|
|
local NR_CPUS=$1
|
|
declare -A CPULISTS
|
|
|
|
if [ ${NR_CPUS} -ge 4 ]; then
|
|
CPULISTS["0"]=""
|
|
CPULISTS["1"]="0"
|
|
CPULISTS["2"]="1"
|
|
CPULISTS["3"]="0-1"
|
|
CPULISTS["5"]="0,2"
|
|
CPULISTS["7"]="0-2"
|
|
CPULISTS["F"]="0-3"
|
|
CPULISTS["9"]="0,3"
|
|
fi
|
|
if [ ${NR_CPUS} -ge 8 ]; then
|
|
CPULISTS["00"]=""
|
|
CPULISTS["11"]="0,4"
|
|
CPULISTS["FF"]="0-7"
|
|
CPULISTS["81"]="0,7"
|
|
fi
|
|
if [ ${NR_CPUS} -ge 16 ]; then
|
|
CPULISTS["0000"]=""
|
|
CPULISTS["1111"]="0,4,8,12"
|
|
CPULISTS["FFF"]="0-11"
|
|
CPULISTS["F0F"]="0-3,8-11"
|
|
CPULISTS["F0F0"]="4-7,12-15"
|
|
CPULISTS["FFFF"]="0-15"
|
|
CPULISTS["FFFE"]="1-15"
|
|
CPULISTS["8001"]="0,15"
|
|
fi
|
|
if [ ${NR_CPUS} -ge 32 ]; then
|
|
CPULISTS["00000000"]=""
|
|
CPULISTS["11111111"]="0,4,8,12,16,20,24,28"
|
|
CPULISTS["0F0F0F0F"]="0-3,8-11,16-19,24-27"
|
|
CPULISTS["F0F0F0F0"]="4-7,12-15,20-23,28-31"
|
|
CPULISTS["FFFFFFFF"]="0-31"
|
|
CPULISTS["FFFFFFFE"]="1-31"
|
|
CPULISTS["80000001"]="0,31"
|
|
fi
|
|
if [ ${NR_CPUS} -ge 64 ]; then
|
|
CPULISTS["0000000000000000"]=""
|
|
CPULISTS["1111111111111111"]="0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60"
|
|
CPULISTS["0F0F0F0F0F0F0F0F"]="0-3,8-11,16-19,24-27,32-35,40-43,48-51,56-59"
|
|
CPULISTS["F0F0F0F0F0F0F0F0"]="4-7,12-15,20-23,28-31,36-39,44-47,52-55,60-63"
|
|
CPULISTS["FFFFFFFFFFFFFFFF"]="0-63"
|
|
CPULISTS["FFFFFFFFFFFFFFFE"]="1-63"
|
|
CPULISTS["8000000000000001"]="0,63"
|
|
fi
|
|
if [ ${NR_CPUS} -ge 128 ]; then
|
|
CPULISTS["00000000000000000000000000000000"]=""
|
|
CPULISTS["11111111111111111111111111111111"]="0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124"
|
|
CPULISTS["0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F"]="0-3,8-11,16-19,24-27,32-35,40-43,48-51,56-59,64-67,72-75,80-83,88-91,96-99,104-107,112-115,120-123"
|
|
CPULISTS["F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0"]="4-7,12-15,20-23,28-31,36-39,44-47,52-55,60-63,68-71,76-79,84-87,92-95,100-103,108-111,116-119,124-127"
|
|
CPULISTS["FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"]="0-127"
|
|
CPULISTS["FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE"]="1-127"
|
|
CPULISTS["80000000000000000000000000000001"]="0,127"
|
|
fi
|
|
|
|
for CPUMAP in ${!CPULISTS[@]}; do
|
|
EXPECTED=${CPULISTS[${CPUMAP}]}
|
|
CPULIST=$(cpumap_to_cpulist ${CPUMAP} ${NR_CPUS})
|
|
if [ "${CPULIST}" != "${EXPECTED}" ]; then
|
|
printf "\n"
|
|
echo "error: (cpumap_to_list ${CPUMAP} ${NR_CPUS}) returned \"${CPULIST}\" instead of \"${EXPECTED}\""
|
|
fi
|
|
printf "."
|
|
done
|
|
|
|
printf "\n"
|
|
}
|
|
|
|
function test_cpulist_to_cpumap {
|
|
local NR_CPUS=$1
|
|
declare -A CPUMAPS
|
|
|
|
if [ ${NR_CPUS} -ge 4 ]; then
|
|
CPUMAPS[" "]="0"
|
|
CPUMAPS["0"]="1"
|
|
CPUMAPS["1"]="2"
|
|
CPUMAPS["0-1"]="3"
|
|
CPUMAPS["0,2"]="5"
|
|
CPUMAPS["0-2"]="7"
|
|
CPUMAPS["0-3"]="F"
|
|
CPUMAPS["0,3"]="9"
|
|
fi
|
|
if [ ${NR_CPUS} -ge 8 ]; then
|
|
CPUMAPS["0,4"]="11"
|
|
CPUMAPS["0-7"]="FF"
|
|
CPUMAPS["0,7"]="81"
|
|
fi
|
|
if [ ${NR_CPUS} -ge 16 ]; then
|
|
CPUMAPS["0,4,8,12"]="1111"
|
|
CPUMAPS["0-11"]="FFF"
|
|
CPUMAPS["0-3,8-11"]="F0F"
|
|
CPUMAPS["4-7,12-15"]="F0F0"
|
|
CPUMAPS["0-15"]="FFFF"
|
|
CPUMAPS["1-15"]="FFFE"
|
|
CPUMAPS["0,15"]="8001"
|
|
fi
|
|
if [ ${NR_CPUS} -ge 32 ]; then
|
|
CPUMAPS["0,4,8,12,16,20,24,28"]="11111111"
|
|
CPUMAPS["0-3,8-11,16-19,24-27"]="F0F0F0F"
|
|
CPUMAPS["4-7,12-15,20-23,28-31"]="F0F0F0F0"
|
|
CPUMAPS["0-31"]="FFFFFFFF"
|
|
CPUMAPS["1-31"]="FFFFFFFE"
|
|
CPUMAPS["0,31"]="80000001"
|
|
fi
|
|
if [ ${NR_CPUS} -ge 64 ]; then
|
|
CPUMAPS["0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60"]="1111111111111111"
|
|
CPUMAPS["0-3,8-11,16-19,24-27,32-35,40-43,48-51,56-59"]="F0F0F0F0F0F0F0F"
|
|
CPUMAPS["4-7,12-15,20-23,28-31,36-39,44-47,52-55,60-63"]="F0F0F0F0F0F0F0F0"
|
|
CPUMAPS["0-63"]="FFFFFFFFFFFFFFFF"
|
|
CPUMAPS["1-63"]="FFFFFFFFFFFFFFFE"
|
|
CPUMAPS["0,63"]="8000000000000001"
|
|
fi
|
|
if [ ${NR_CPUS} -ge 128 ]; then
|
|
CPUMAPS["0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124"]="11111111111111111111111111111111"
|
|
CPUMAPS["0-3,8-11,16-19,24-27,32-35,40-43,48-51,56-59,64-67,72-75,80-83,88-91,96-99,104-107,112-115,120-123"]="F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F"
|
|
CPUMAPS["4-7,12-15,20-23,28-31,36-39,44-47,52-55,60-63,68-71,76-79,84-87,92-95,100-103,108-111,116-119,124-127"]="F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0"
|
|
CPUMAPS["0-127"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
CPUMAPS["1-127"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE"
|
|
CPUMAPS["0,127"]="80000000000000000000000000000001"
|
|
fi
|
|
|
|
for CPULIST in ${!CPUMAPS[@]}; do
|
|
EXPECTED=${CPUMAPS[${CPULIST}]}
|
|
CPUMAP=$(cpulist_to_cpumap ${CPULIST} ${NR_CPUS})
|
|
if [ "${CPUMAP}" != "${EXPECTED}" ]; then
|
|
printf "\n"
|
|
echo "error: (cpulist_to_cpumap ${CPULIST} ${NR_CPUS}) returned \"${CPUMAP}\" instead of \"${EXPECTED}\""
|
|
fi
|
|
printf "."
|
|
done
|
|
|
|
printf "\n"
|
|
}
|
|
|
|
function test_invert_cpumap {
|
|
local NR_CPUS=$1
|
|
declare -A INVERSES
|
|
|
|
if [ $((${NR_CPUS} % 4)) -ne 0 ]; then
|
|
echo "test_invert_cpumap skipping NR_CPUS=${NR_CPUS}; not a multiple of 4"
|
|
return 0
|
|
fi
|
|
|
|
if [ ${NR_CPUS} -ge 4 ]; then
|
|
INVERSES["0"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
|
|
INVERSES["1"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE"
|
|
INVERSES["2"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD"
|
|
INVERSES["3"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC"
|
|
INVERSES["5"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA"
|
|
INVERSES["7"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8"
|
|
INVERSES["F"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0"
|
|
INVERSES["9"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6"
|
|
fi
|
|
if [ ${NR_CPUS} -ge 8 ]; then
|
|
INVERSES["11"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE"
|
|
INVERSES["FF"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00"
|
|
INVERSES["F0"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F"
|
|
INVERSES["81"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E"
|
|
fi
|
|
if [ ${NR_CPUS} -ge 16 ]; then
|
|
INVERSES["1111"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEE"
|
|
INVERSES["FFF"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000"
|
|
INVERSES["F0F"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0"
|
|
INVERSES["F0F0"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0F"
|
|
INVERSES["0F0F"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0"
|
|
INVERSES["FFFF"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000"
|
|
INVERSES["FFFE"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFF0001"
|
|
INVERSES["8001"]="FFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFE"
|
|
fi
|
|
if [ ${NR_CPUS} -ge 32 ]; then
|
|
INVERSES["11111111"]="FFFFFFFFFFFFFFFFFFFFFFFFEEEEEEEE"
|
|
INVERSES["0F0F0F0F"]="FFFFFFFFFFFFFFFFFFFFFFFFF0F0F0F0"
|
|
INVERSES["F0F0F0F0"]="FFFFFFFFFFFFFFFFFFFFFFFF0F0F0F0F"
|
|
INVERSES["FFFFFFFF"]="FFFFFFFFFFFFFFFFFFFFFFFF00000000"
|
|
INVERSES["FFFFFFFE"]="FFFFFFFFFFFFFFFFFFFFFFFF00000001"
|
|
INVERSES["80000001"]="FFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFE"
|
|
fi
|
|
if [ ${NR_CPUS} -ge 64 ]; then
|
|
INVERSES["1111111111111111"]="FFFFFFFFFFFFFFFFEEEEEEEEEEEEEEEE"
|
|
INVERSES["0F0F0F0F0F0F0F0F"]="FFFFFFFFFFFFFFFFF0F0F0F0F0F0F0F0"
|
|
INVERSES["F0F0F0F0F0F0F0F0"]="FFFFFFFFFFFFFFFF0F0F0F0F0F0F0F0F"
|
|
INVERSES["FFFFFFFFFFFFFFFF"]="FFFFFFFFFFFFFFFF0000000000000000"
|
|
INVERSES["FFFFFFFFFFFFFFFE"]="FFFFFFFFFFFFFFFF0000000000000001"
|
|
INVERSES["8000000000000001"]="FFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFE"
|
|
fi
|
|
if [ ${NR_CPUS} -ge 128 ]; then
|
|
INVERSES["11111111111111111111111111111111"]="EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE"
|
|
INVERSES["0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F"]="F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0"
|
|
INVERSES["F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0"]="0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F"
|
|
INVERSES["FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"]="00000000000000000000000000000000"
|
|
INVERSES["FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE"]="00000000000000000000000000000001"
|
|
INVERSES["80000000000000000000000000000001"]="7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE"
|
|
fi
|
|
|
|
for CPUMAP in ${!INVERSES[@]}; do
|
|
EXPECTED=${INVERSES[${CPUMAP}]}
|
|
if [ ${NR_CPUS} -lt 128 ]; then
|
|
EXPECTED=$(echo ${EXPECTED} | cut --complement -c1-$((32-((${NR_CPUS}+3)/4))))
|
|
fi
|
|
EXPECTED=$(echo ${EXPECTED} | sed -e "s/^0*//")
|
|
if [ -z ${EXPECTED} ]; then
|
|
EXPECTED="0"
|
|
fi
|
|
INVERSE=$(invert_cpumap ${CPUMAP} ${NR_CPUS})
|
|
if [ "${INVERSE}" != "${EXPECTED}" ]; then
|
|
printf "\n"
|
|
echo "error: (invert_cpumap ${CPUMAP} ${NR_CPUS}) returned \"${INVERSE}\" instead of \"${EXPECTED}\""
|
|
fi
|
|
printf "."
|
|
done
|
|
|
|
printf "\n"
|
|
}
|
|
|
|
for NR_CPUS in ${NR_CPUS_LIST[@]}; do
|
|
echo "NR_CPUS=${NR_CPUS}"
|
|
test_cpumap_to_cpulist ${NR_CPUS}
|
|
test_cpulist_to_cpumap ${NR_CPUS}
|
|
test_invert_cpumap ${NR_CPUS}
|
|
echo ""
|
|
done
|
|
|
|
exit 0
|