#!/bin/bash # SPDX-License-Identifier: Apache-2.0 # Copyright (C) 2021-present Fewtarius (https://github.com/fewtarius) . /etc/os-release get_threads() { for THREAD in $(seq 1 1 $(find /sys/devices/system/cpu -name online | wc -l)) do echo ${THREAD} done echo all } set_online_threads() { AVAILABLE_THREADS=$(($(find /sys/devices/system/cpu -name online | wc -l) - 1)) MODE=${2} if [ -z "${MODE}" ] then MODE=0 fi case ${1} in all) THREADS=0 MODE="1" ;; 0) THREADS=1 ;; *) THREADS=${1} ;; esac for thread in $(seq 0 1 ${THREADS}) do echo 1 | tee /sys/devices/system/cpu/cpu${thread}/online >/dev/null 2>&1 done for thread in $(seq ${THREADS} 1 ${AVAILABLE_THREADS}) do echo ${MODE} | tee /sys/devices/system/cpu/cpu${thread}/online >/dev/null 2>&1 done } set_cpu_gov() { for POLICY in $(ls /sys/devices/system/cpu/cpufreq 2>/dev/null | grep policy[0-9]) do if [ -e "/sys/devices/system/cpu/cpufreq/${POLICY}/scaling_governor" ] then echo $1 >/sys/devices/system/cpu/cpufreq/${POLICY}/scaling_governor 2>/dev/null fi done } set_dmc_gov() { if [ -e "${DMC_FREQ}/governor" ] then for governor in $1 dmc_$1 simple_$1 do echo $1 >${DMC_FREQ}/governor 2>/dev/null || echo dmc_$1 >${DMC_FREQ}/governor 2>/dev/null if [ "$?" = 0 ] then return fi done fi } set_gpu_gov() { if [ -e "${GPU_FREQ}/governor" ] then for governor in $1 dmc_$1 simple_$1 do echo $1 >${GPU_FREQ}/governor 2>/dev/null if [ "$?" = 0 ] then return fi done fi } set_amdgpu_perf() { for AMDGPU_PERF_DEVICE in $(find /sys/devices -name power_dpm_force_performance_level 2>/dev/null) do echo $1 >${AMDGPU_PERF} 2>/dev/null done } onlinethreads() { set_online_threads ${1} ${2} } performance() { set_cpu_gov performance set_amdgpu_perf profile_peak set_gpu_gov performance set_dmc_gov performance } ondemand() { set_cpu_gov ondemand set_amdgpu_perf auto set_gpu_gov ondemand set_dmc_gov ondemand } schedutil() { set_cpu_gov schedutil set_amdgpu_perf auto set_gpu_gov ondemand set_dmc_gov ondemand } powersave() { set_cpu_gov powersave set_amdgpu_perf low set_gpu_gov powersave set_dmc_gov powersave }