#!/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 }