distribution/packages/jelos/profile.d/99-freqfunctions

99 lines
2 KiB
Bash

#!/bin/bash
# SPDX-License-Identifier: Apache-2.0
# Copyright (C) 2021-present Fewtarius (https://github.com/fewtarius)
. /etc/os-release
set_online_threads() {
AVAILABLE_CPUS=$(($(ls /sys/devices/system/cpu | grep cpu[0-9] | wc -l) - 1))
MODE=${2}
if [ -z "${MODE}" ]
then
MODE=0
fi
case ${1} in
all)
THREADS=0
MODE="1"
;;
*)
THREADS=${1}
;;
esac
if [ "${THREADS}" -gt 0 ]
then
for thread in $(seq 0 1 ${1})
do
echo 1 | tee /sys/devices/system/cpu/cpu${thread}/online >/dev/null 2>&1
done
fi
for thread in $(seq ${THREADS} 1 ${AVAILABLE_CPUS})
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
echo $1 >${DMC_FREQ}/governor 2>/dev/null || echo dmc_$1 >${DMC_FREQ}/governor 2>/dev/null
fi
}
set_gpu_gov() {
if [ -e "${GPU_FREQ}/governor" ]
then
echo $1 >${GPU_FREQ}/governor 2>/dev/null || echo dmc_$1 >${GPU_FREQ}/governor 2>/dev/null
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
}