From: Olivier Dion Date: Wed, 1 Feb 2023 21:04:14 +0000 (-0500) Subject: Tests: Add get_possible_cpus_count utility X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=commitdiff_plain;h=198b841770f31d35afe1e50ff52e41e7599759e3 Tests: Add get_possible_cpus_count utility lttng-ust uses the possible number of CPUs to allocate its ring buffers. Certain tests have to take that into consideration in their calculation instead of relying on online processors. Thus, add the same logic for calculating the possible CPUs on the system. Change-Id: I9f14afba3e4adad9547cbd9386f8e1b1b55a3253 Signed-off-by: Olivier Dion Signed-off-by: Jérémie Galarneau --- diff --git a/tests/utils/utils.sh b/tests/utils/utils.sh index ea354cf62..78bee0c63 100644 --- a/tests/utils/utils.sh +++ b/tests/utils/utils.sh @@ -214,6 +214,38 @@ function randstring() echo } +# Helpers for get_possible_cpus. +function get_possible_cpus_count_from_sysfs_possible_mask() +{ + local max_possible_cpu_id=$(cut -d '-' -f 2 < /sys/devices/system/cpu/possible) + echo $((max_possible_cpu_id+1)) +} + +function get_max_cpus_count_from_sysfs_cpu_directories() +{ + local max_possible_cpu_id= \ + $(find /sys/devices/system/cpu/ -mindepth 1 -maxdepth 1 -regex ".+cpu[0-9]+" | \ + sed -e 's/cpu//g' | \ + awk -F '/' '{ if ($NF > N) N = $NF } END { print N }') + echo $((max_possible_cpu_id+1)) +} + +# Return the number of possible CPUs. +function get_possible_cpus_count() +{ + local possible_cpus_count=$(get_possible_cpus_count_from_sysfs_possible_mask) + + if [ $? -ne 0 ]; then + possible_cpus_count=$(get_max_cpus_count_from_sysfs_cpu_directories) + local configured_cpus_count=$(getconf _NPROCESSORS_CONF) + possible_cpus_count=$(($configured_cpus_count > $possible_cpus_count \ + ? $configured_cpus_count \ + : $possible_cpus_count)) + fi + + echo $possible_cpus_count +} + # Return the number of _configured_ CPUs. function conf_proc_count() {