From b4b790cd6754c0866af5fc785415690cb0280b30 Mon Sep 17 00:00:00 2001 From: Olivier Dion Date: Wed, 1 Feb 2023 16:04:14 -0500 Subject: [PATCH] Tests: Add get_possible_cpus_count utility MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- tests/utils/utils.sh | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tests/utils/utils.sh b/tests/utils/utils.sh index e23626309..30770e589 100644 --- a/tests/utils/utils.sh +++ b/tests/utils/utils.sh @@ -209,6 +209,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() { -- 2.39.5