test/scheduler: add test of cppc_cpufreq
current test only include intel acpi-cpufreq and pstate. Add test of cppc_cpufreq which works on most arm platforms. Change-Id: I5b34c15be7992e5a521d6acf7b5c30a0c4baaf9a Signed-off-by: Richael Zhuang <richael.zhuang@arm.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9404 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
This commit is contained in:
parent
5e1e850bdc
commit
454561bf89
@ -291,6 +291,41 @@ map_cpufreq() {
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
|
cppc_cpufreq)
|
||||||
|
cpufreq_setspeed[cpu_idx]=$(< "$cpu/cpufreq/scaling_setspeed")
|
||||||
|
scaling_min_freqs[cpu_idx]=$(< "$cpu/cpufreq/scaling_min_freq")
|
||||||
|
scaling_max_freqs[cpu_idx]=$(< "$cpu/cpufreq/scaling_max_freq")
|
||||||
|
cpuinfo_max_freqs[cpu_idx]=$(< "$cpu/cpufreq/cpuinfo_max_freq")
|
||||||
|
nominal_perf[cpu_idx]=$(< "$cpu/acpi_cppc/nominal_perf")
|
||||||
|
highest_perf[cpu_idx]=$(< "$cpu/acpi_cppc/highest_perf")
|
||||||
|
|
||||||
|
#the unit of highest_perf and nominal_perf differs on different arm platforms.
|
||||||
|
#For highest_perf, it maybe 300 or 3000000, both means 3.0GHz.
|
||||||
|
if ((highest_perf[cpu_idx] > nominal_perf[cpu_idx] && (\
|
||||||
|
highest_perf[cpu_idx] == cpuinfo_max_freqs[cpu_idx] || \
|
||||||
|
highest_perf[cpu_idx] * 10000 == cpuinfo_max_freqs[cpu_idx]))); then
|
||||||
|
cpufreq_is_turbo[cpu_idx]=1
|
||||||
|
else
|
||||||
|
cpufreq_is_turbo[cpu_idx]=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ((nominal_perf[cpu_idx] < 10000)); then
|
||||||
|
nominal_perf[cpu_idx]=$((nominal_perf[cpu_idx] * 10000))
|
||||||
|
fi
|
||||||
|
|
||||||
|
num_freqs=$(((nominal_perf[cpu_idx] - scaling_min_freqs[cpu_idx]) / 100000 + 1 + \
|
||||||
|
cpufreq_is_turbo[cpu_idx]))
|
||||||
|
|
||||||
|
available_freqs=()
|
||||||
|
for ((freq = 0; freq < num_freqs; freq++)); do
|
||||||
|
if ((freq == 0 && cpufreq_is_turbo[cpu_idx] == 1)); then
|
||||||
|
available_freqs[freq]=$((scaling_max_freqs[cpu_idx]))
|
||||||
|
else
|
||||||
|
available_freqs[freq]=$((nominal_perf[cpu_idx] - (\
|
||||||
|
freq - cpufreq_is_turbo[cpu_idx]) * 100000))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
if [[ -e $sysfs_cpu/cpufreq/boost ]]; then
|
if [[ -e $sysfs_cpu/cpufreq/boost ]]; then
|
||||||
|
@ -38,6 +38,7 @@ update_main_core_cpufreq() {
|
|||||||
case "$main_core_driver" in
|
case "$main_core_driver" in
|
||||||
acpi-cpufreq) main_core_setspeed=${cpufreq_setspeed[spdk_main_core]} ;;
|
acpi-cpufreq) main_core_setspeed=${cpufreq_setspeed[spdk_main_core]} ;;
|
||||||
intel_pstate | intel_cpufreq) main_core_setspeed=$main_core_set_max_freq ;;
|
intel_pstate | intel_cpufreq) main_core_setspeed=$main_core_set_max_freq ;;
|
||||||
|
cppc_cpufreq) main_core_setspeed=${cpufreq_setspeed[spdk_main_core]} ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,6 +57,10 @@ verify_dpdk_governor() {
|
|||||||
# - governor set to performance
|
# - governor set to performance
|
||||||
# - lowering max_freq and min_freq for the main core
|
# - lowering max_freq and min_freq for the main core
|
||||||
# - having max_freq and min_freq at lowest supported frequency
|
# - having max_freq and min_freq at lowest supported frequency
|
||||||
|
# - cppc_cpufreq:
|
||||||
|
# - governor set to userspace
|
||||||
|
# - lowering setspeed for the main core
|
||||||
|
# - having setspeed at lowest supported frequency
|
||||||
|
|
||||||
local -g cpus
|
local -g cpus
|
||||||
|
|
||||||
@ -105,6 +110,12 @@ verify_dpdk_governor() {
|
|||||||
&& ((main_core_set_max_freq == main_core_set_min_freq)) \
|
&& ((main_core_set_max_freq == main_core_set_min_freq)) \
|
||||||
&& ((dir == 0))
|
&& ((dir == 0))
|
||||||
;;
|
;;
|
||||||
|
cppc_cpufreq)
|
||||||
|
[[ $main_core_governor == userspace ]] \
|
||||||
|
&& [[ -n ${main_core_freqs_map[main_core_setspeed]} ]] \
|
||||||
|
&& ((main_core_setspeed == main_core_freqs[-1])) \
|
||||||
|
&& ((dir == 0))
|
||||||
|
;;
|
||||||
esac && all_set=1
|
esac && all_set=1
|
||||||
|
|
||||||
# Print stats after first sane sample was taken
|
# Print stats after first sane sample was taken
|
||||||
|
Loading…
Reference in New Issue
Block a user