1*4882a593Smuzhiyun#!/bin/bash 2*4882a593Smuzhiyun 3*4882a593Smuzhiyunusage() 4*4882a593Smuzhiyun{ 5*4882a593Smuzhiyunecho "Usage: npu_freq_scaling.sh [test_second] [every_freq_stay_second]" 6*4882a593Smuzhiyunecho "example: npu_freq_test.sh 3600 30" 7*4882a593Smuzhiyunecho "means npu_freq_test.sh will run 1 hour and every cpu frequency stay 30s" 8*4882a593Smuzhiyun} 9*4882a593Smuzhiyun 10*4882a593Smuzhiyunecho "test will run $1 seconds" 11*4882a593Smuzhiyunecho "every npu frqeucny will stay $2 seconds" 12*4882a593Smuzhiyun 13*4882a593SmuzhiyunNPU_PATH=/sys/devices/platform/*.npu/devfreq/*.npu 14*4882a593Smuzhiyun 15*4882a593Smuzhiyununset FREQS 16*4882a593Smuzhiyunread -a FREQS < $NPU_PATH/available_frequencies 17*4882a593SmuzhiyunRANDOM=$$$(date +%s) 18*4882a593Smuzhiyuntime_cnt=0 19*4882a593Smuzhiyun 20*4882a593Smuzhiyunwhile true; do 21*4882a593Smuzhiyun if [ $time_cnt -ge $1 ] 22*4882a593Smuzhiyun then 23*4882a593Smuzhiyun echo "======TEST SUCCESSFUL, QUIT=====" 24*4882a593Smuzhiyun exit 0 25*4882a593Smuzhiyun fi 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun echo userspace > $NPU_PATH/governor 28*4882a593Smuzhiyun FREQ=${FREQS[$RANDOM % ${#FREQS[@]} ]} 29*4882a593Smuzhiyun echo "set ddr frequency to $FREQ" 30*4882a593Smuzhiyun echo ${FREQ} > $NPU_PATH/userspace/set_freq 31*4882a593Smuzhiyun sleep $2 32*4882a593Smuzhiyun let "time_cnt=$time_cnt+$2" 33*4882a593Smuzhiyundone 34*4882a593Smuzhiyun 35