17fe2f639SDominik Brodowski#!/bin/bash 27fe2f639SDominik Brodowski 37fe2f639SDominik Brodowski# This program is free software: you can redistribute it and/or modify 47fe2f639SDominik Brodowski# it under the terms of the GNU General Public License as published by 57fe2f639SDominik Brodowski# the Free Software Foundation; either version 2, or (at your option) 67fe2f639SDominik Brodowski# any later version. 77fe2f639SDominik Brodowski 87fe2f639SDominik Brodowski# This program is distributed in the hope that it will be useful, 97fe2f639SDominik Brodowski# but WITHOUT ANY WARRANTY; without even the implied warranty of 107fe2f639SDominik Brodowski# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 117fe2f639SDominik Brodowski# GNU General Public License for more details. 127fe2f639SDominik Brodowski 137fe2f639SDominik Brodowski# You should have received a copy of the GNU General Public License 147fe2f639SDominik Brodowski# along with this program; if not, write to the Free Software 157fe2f639SDominik Brodowski# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 167fe2f639SDominik Brodowski# 02110-1301, USA. 177fe2f639SDominik Brodowski 187fe2f639SDominik Brodowski# Author/Copyright(c): 2009, Thomas Renninger <trenn@suse.de>, Novell Inc. 197fe2f639SDominik Brodowski 207fe2f639SDominik Brodowski# Ondemand up_threshold and sampling rate test script for cpufreq-bench 217fe2f639SDominik Brodowski# mircobenchmark. 227fe2f639SDominik Brodowski# Modify the general variables at the top or extend or copy out parts 237fe2f639SDominik Brodowski# if you want to test other things 247fe2f639SDominik Brodowski# 257fe2f639SDominik Brodowski 267fe2f639SDominik Brodowski# Default with latest kernels is 95, before micro account patches 277fe2f639SDominik Brodowski# it was 80, cmp. with git commit 808009131046b62ac434dbc796 287fe2f639SDominik BrodowskiUP_THRESHOLD="60 80 95" 297fe2f639SDominik Brodowski# Depending on the kernel and the HW sampling rate could be restricted 307fe2f639SDominik Brodowski# and cannot be set that low... 317fe2f639SDominik Brodowski# E.g. before git commit cef9615a853ebc4972084f7 one could only set 327fe2f639SDominik Brodowski# min sampling rate of 80000 if CONFIG_HZ=250 337fe2f639SDominik BrodowskiSAMPLING_RATE="20000 80000" 347fe2f639SDominik Brodowski 357fe2f639SDominik Brodowskifunction measure() 367fe2f639SDominik Brodowski{ 377fe2f639SDominik Brodowski local -i up_threshold_set 387fe2f639SDominik Brodowski local -i sampling_rate_set 397fe2f639SDominik Brodowski 407fe2f639SDominik Brodowski for up_threshold in $UP_THRESHOLD;do 417fe2f639SDominik Brodowski for sampling_rate in $SAMPLING_RATE;do 427fe2f639SDominik Brodowski # Set values in sysfs 437fe2f639SDominik Brodowski echo $up_threshold >/sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold 447fe2f639SDominik Brodowski echo $sampling_rate >/sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate 457fe2f639SDominik Brodowski up_threshold_set=$(cat /sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold) 467fe2f639SDominik Brodowski sampling_rate_set=$(cat /sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate) 477fe2f639SDominik Brodowski 487fe2f639SDominik Brodowski # Verify set values in sysfs 497fe2f639SDominik Brodowski if [ ${up_threshold_set} -eq ${up_threshold} ];then 507fe2f639SDominik Brodowski echo "up_threshold: $up_threshold, set in sysfs: ${up_threshold_set}" 517fe2f639SDominik Brodowski else 527fe2f639SDominik Brodowski echo "WARNING: Tried to set up_threshold: $up_threshold, set in sysfs: ${up_threshold_set}" 537fe2f639SDominik Brodowski fi 547fe2f639SDominik Brodowski if [ ${sampling_rate_set} -eq ${sampling_rate} ];then 557fe2f639SDominik Brodowski echo "sampling_rate: $sampling_rate, set in sysfs: ${sampling_rate_set}" 567fe2f639SDominik Brodowski else 577fe2f639SDominik Brodowski echo "WARNING: Tried to set sampling_rate: $sampling_rate, set in sysfs: ${sampling_rate_set}" 587fe2f639SDominik Brodowski fi 597fe2f639SDominik Brodowski 607fe2f639SDominik Brodowski # Benchmark 617fe2f639SDominik Brodowski cpufreq-bench -o /var/log/cpufreq-bench/up_threshold_${up_threshold}_sampling_rate_${sampling_rate} 627fe2f639SDominik Brodowski done 637fe2f639SDominik Brodowski done 647fe2f639SDominik Brodowski} 657fe2f639SDominik Brodowski 667fe2f639SDominik Brodowskifunction create_plots() 677fe2f639SDominik Brodowski{ 687fe2f639SDominik Brodowski local command 697fe2f639SDominik Brodowski 707fe2f639SDominik Brodowski for up_threshold in $UP_THRESHOLD;do 717fe2f639SDominik 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 %\"" 727fe2f639SDominik Brodowski for sampling_rate in $SAMPLING_RATE;do 737fe2f639SDominik Brodowski command="${command} /var/log/cpufreq-bench/up_threshold_${up_threshold}_sampling_rate_${sampling_rate}/* \"sampling_rate = $sampling_rate\"" 747fe2f639SDominik Brodowski done 757fe2f639SDominik Brodowski echo $command 767fe2f639SDominik Brodowski eval "$command" 777fe2f639SDominik Brodowski echo 787fe2f639SDominik Brodowski done 797fe2f639SDominik Brodowski 807fe2f639SDominik Brodowski for sampling_rate in $SAMPLING_RATE;do 817fe2f639SDominik 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\"" 827fe2f639SDominik Brodowski for up_threshold in $UP_THRESHOLD;do 837fe2f639SDominik Brodowski command="${command} /var/log/cpufreq-bench/up_threshold_${up_threshold}_sampling_rate_${sampling_rate}/* \"up_threshold = $up_threshold\"" 847fe2f639SDominik Brodowski done 857fe2f639SDominik Brodowski echo $command 867fe2f639SDominik Brodowski eval "$command" 877fe2f639SDominik Brodowski echo 887fe2f639SDominik Brodowski done 897fe2f639SDominik Brodowski 907fe2f639SDominik 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\"" 917fe2f639SDominik Brodowski for sampling_rate in $SAMPLING_RATE;do 927fe2f639SDominik Brodowski for up_threshold in $UP_THRESHOLD;do 937fe2f639SDominik Brodowski command="${command} /var/log/cpufreq-bench/up_threshold_${up_threshold}_sampling_rate_${sampling_rate}/* \"up_threshold = $up_threshold - sampling_rate = $sampling_rate\"" 947fe2f639SDominik Brodowski done 957fe2f639SDominik Brodowski done 967fe2f639SDominik Brodowski echo "$command" 977fe2f639SDominik Brodowski eval "$command" 987fe2f639SDominik Brodowski} 997fe2f639SDominik Brodowski 1007fe2f639SDominik Brodowskimeasure 1017fe2f639SDominik Brodowskicreate_plots