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

110 lines
1.9 KiB
Bash

#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
. /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
echo default
}
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
default)
return
;;
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 ${governor} >${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 ${governor} >${GPU_FREQ}/governor 2>/dev/null
if [ "$?" = 0 ]
then
return
fi
done
fi
}
onlinethreads() {
set_online_threads ${1} ${2}
}
performance() {
set_cpu_gov performance
set_dmc_gov performance
}
ondemand() {
set_cpu_gov ondemand
set_dmc_gov ondemand
}
schedutil() {
set_cpu_gov schedutil
set_dmc_gov ondemand
}
powersave() {
set_cpu_gov powersave
set_dmc_gov powersave
}