17fe2f639SDominik Brodowski#!/bin/bash 2*e78d0eabSThomas Gleixner# SPDX-License-Identifier: GPL-2.0-or-later 37fe2f639SDominik Brodowski 47fe2f639SDominik Brodowski 57fe2f639SDominik Brodowski# Author/Copyright(c): 2009, Thomas Renninger <trenn@suse.de>, Novell Inc. 67fe2f639SDominik Brodowski 77fe2f639SDominik Brodowski# Ondemand up_threshold and sampling rate test script for cpufreq-bench 87fe2f639SDominik Brodowski# mircobenchmark. 97fe2f639SDominik Brodowski# Modify the general variables at the top or extend or copy out parts 107fe2f639SDominik Brodowski# if you want to test other things 117fe2f639SDominik Brodowski# 127fe2f639SDominik Brodowski 137fe2f639SDominik Brodowski# Default with latest kernels is 95, before micro account patches 147fe2f639SDominik Brodowski# it was 80, cmp. with git commit 808009131046b62ac434dbc796 157fe2f639SDominik BrodowskiUP_THRESHOLD="60 80 95" 167fe2f639SDominik Brodowski# Depending on the kernel and the HW sampling rate could be restricted 177fe2f639SDominik Brodowski# and cannot be set that low... 187fe2f639SDominik Brodowski# E.g. before git commit cef9615a853ebc4972084f7 one could only set 197fe2f639SDominik Brodowski# min sampling rate of 80000 if CONFIG_HZ=250 207fe2f639SDominik BrodowskiSAMPLING_RATE="20000 80000" 217fe2f639SDominik Brodowski 227fe2f639SDominik Brodowskifunction measure() 237fe2f639SDominik Brodowski{ 247fe2f639SDominik Brodowski local -i up_threshold_set 257fe2f639SDominik Brodowski local -i sampling_rate_set 267fe2f639SDominik Brodowski 277fe2f639SDominik Brodowski for up_threshold in $UP_THRESHOLD;do 287fe2f639SDominik Brodowski for sampling_rate in $SAMPLING_RATE;do 297fe2f639SDominik Brodowski # Set values in sysfs 307fe2f639SDominik Brodowski echo $up_threshold >/sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold 317fe2f639SDominik Brodowski echo $sampling_rate >/sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate 327fe2f639SDominik Brodowski up_threshold_set=$(cat /sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold) 337fe2f639SDominik Brodowski sampling_rate_set=$(cat /sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate) 347fe2f639SDominik Brodowski 357fe2f639SDominik Brodowski # Verify set values in sysfs 367fe2f639SDominik Brodowski if [ ${up_threshold_set} -eq ${up_threshold} ];then 377fe2f639SDominik Brodowski echo "up_threshold: $up_threshold, set in sysfs: ${up_threshold_set}" 387fe2f639SDominik Brodowski else 397fe2f639SDominik Brodowski echo "WARNING: Tried to set up_threshold: $up_threshold, set in sysfs: ${up_threshold_set}" 407fe2f639SDominik Brodowski fi 417fe2f639SDominik Brodowski if [ ${sampling_rate_set} -eq ${sampling_rate} ];then 427fe2f639SDominik Brodowski echo "sampling_rate: $sampling_rate, set in sysfs: ${sampling_rate_set}" 437fe2f639SDominik Brodowski else 447fe2f639SDominik Brodowski echo "WARNING: Tried to set sampling_rate: $sampling_rate, set in sysfs: ${sampling_rate_set}" 457fe2f639SDominik Brodowski fi 467fe2f639SDominik Brodowski 477fe2f639SDominik Brodowski # Benchmark 487fe2f639SDominik Brodowski cpufreq-bench -o /var/log/cpufreq-bench/up_threshold_${up_threshold}_sampling_rate_${sampling_rate} 497fe2f639SDominik Brodowski done 507fe2f639SDominik Brodowski done 517fe2f639SDominik Brodowski} 527fe2f639SDominik Brodowski 537fe2f639SDominik Brodowskifunction create_plots() 547fe2f639SDominik Brodowski{ 557fe2f639SDominik Brodowski local command 567fe2f639SDominik Brodowski 577fe2f639SDominik Brodowski for up_threshold in $UP_THRESHOLD;do 587fe2f639SDominik Brodowski command="cpufreq-bench_plot.sh -o \"sampling_rate_${SAMPLING_RATE}_up_threshold_${up_threshold}\" -t \"Ondemand sampling_rate: ${SAMPLING_RATE} comparison - Up_threshold: $up_threshold %\"" 597fe2f639SDominik Brodowski for sampling_rate in $SAMPLING_RATE;do 607fe2f639SDominik Brodowski command="${command} /var/log/cpufreq-bench/up_threshold_${up_threshold}_sampling_rate_${sampling_rate}/* \"sampling_rate = $sampling_rate\"" 617fe2f639SDominik Brodowski done 627fe2f639SDominik Brodowski echo $command 637fe2f639SDominik Brodowski eval "$command" 647fe2f639SDominik Brodowski echo 657fe2f639SDominik Brodowski done 667fe2f639SDominik Brodowski 677fe2f639SDominik Brodowski for sampling_rate in $SAMPLING_RATE;do 687fe2f639SDominik Brodowski command="cpufreq-bench_plot.sh -o \"up_threshold_${UP_THRESHOLD}_sampling_rate_${sampling_rate}\" -t \"Ondemand up_threshold: ${UP_THRESHOLD} % comparison - sampling_rate: $sampling_rate\"" 697fe2f639SDominik Brodowski for up_threshold in $UP_THRESHOLD;do 707fe2f639SDominik Brodowski command="${command} /var/log/cpufreq-bench/up_threshold_${up_threshold}_sampling_rate_${sampling_rate}/* \"up_threshold = $up_threshold\"" 717fe2f639SDominik Brodowski done 727fe2f639SDominik Brodowski echo $command 737fe2f639SDominik Brodowski eval "$command" 747fe2f639SDominik Brodowski echo 757fe2f639SDominik Brodowski done 767fe2f639SDominik Brodowski 777fe2f639SDominik Brodowski command="cpufreq-bench_plot.sh -o \"up_threshold_${UP_THRESHOLD}_sampling_rate_${SAMPLING_RATE}\" -t \"Ondemand up_threshold: ${UP_THRESHOLD} and sampling_rate ${SAMPLING_RATE} comparison\"" 787fe2f639SDominik Brodowski for sampling_rate in $SAMPLING_RATE;do 797fe2f639SDominik Brodowski for up_threshold in $UP_THRESHOLD;do 807fe2f639SDominik Brodowski command="${command} /var/log/cpufreq-bench/up_threshold_${up_threshold}_sampling_rate_${sampling_rate}/* \"up_threshold = $up_threshold - sampling_rate = $sampling_rate\"" 817fe2f639SDominik Brodowski done 827fe2f639SDominik Brodowski done 837fe2f639SDominik Brodowski echo "$command" 847fe2f639SDominik Brodowski eval "$command" 857fe2f639SDominik Brodowski} 867fe2f639SDominik Brodowski 877fe2f639SDominik Brodowskimeasure 887fe2f639SDominik Brodowskicreate_plots 89