cpufreqscaling: update

Signed-off-by: AuxXxilium <info@auxxxilium.tech>
This commit is contained in:
AuxXxilium 2024-06-20 20:25:37 +02:00
parent 351477b087
commit ed887db2bb
3 changed files with 42 additions and 29 deletions

View File

@ -13,7 +13,7 @@ cpucorecount=$(cat /proc/cpuinfo | grep processor | wc -l)
cpucorecount=$((cpucorecount - 1)) cpucorecount=$((cpucorecount - 1))
governor=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor) governor=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)
if [ -f "/usr/lib/modules/cpufreq_${1}" ] || [ "${1}" = "userspace" ]; then if [ -f "/usr/lib/modules/cpufreq_${1}" ] || [ "${1}" = "schedutil" ]; then
# Set correct cpufreq governor to allow user defined frequency scaling # Set correct cpufreq governor to allow user defined frequency scaling
if [ "$governor" != "${1}" ]; then if [ "$governor" != "${1}" ]; then
for i in $(seq 0 "${cpucorecount}"); do for i in $(seq 0 "${cpucorecount}"); do

View File

@ -17,7 +17,7 @@ set -euo pipefail
#fi #fi
# Frequency scaling function # Frequency scaling function
function userspace() { function main {
if [ $(cat /proc/cpuinfo | grep Intel | wc -l) -gt 0 ]; then if [ $(cat /proc/cpuinfo | grep Intel | wc -l) -gt 0 ]; then
CPU="INTEL" CPU="INTEL"
@ -98,30 +98,22 @@ function userspace() {
# Deamonize the main function... # Deamonize the main function...
while true; do while true; do
if [ -f "/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor" ]; then if [ -f /usr/sbin/stopscale ]; then
rm -f /usr/sbin/stopscale exit 0
# Get cpu cores count minus 1, to allow maping from 0
cpucorecount=$(cat /proc/cpuinfo | grep processor | wc -l)
cpucorecount=$((cpucorecount - 1))
governor=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)
if [ -f "/usr/lib/modules/cpufreq_${1}" ] || [ "${1}" = "userspace" ]; then
# Set correct cpufreq governor to allow user defined frequency scaling
if [ "$governor" != "${1}" ]; then
for i in $(seq 0 "${cpucorecount}"); do
echo "${1}" >/sys/devices/system/cpu/cpu"${i}"/cpufreq/scaling_governor
done
fi
governor=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)
if [ "$governor" = "userspace" ]; then
userspace
fi
sleep 0.5
else
echo "No cpufreq_${1} module found"
exit 1
fi
else
exit 1
fi fi
done # Get cpu cores count minus 1, to allow maping from 0
cpucorecount=$(cat /proc/cpuinfo | grep processor | wc -l)
cpucorecount=$((cpucorecount - 1))
governor=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)
# Set correct cpufreq governor to allow user defined frequency scaling
if [ "$governor" != "userspace" ]; then
for i in $(seq 0 "${cpucorecount}"); do
echo "userspace" >/sys/devices/system/cpu/cpu"${i}"/cpufreq/scaling_governor
done
fi
governor=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)
if [ "$governor" = "userspace" ]; then
main
fi
sleep 0.5
done

View File

@ -15,6 +15,7 @@ if [ "${1}" = "late" ]; then
cp -vf /usr/sbin/unscaler.sh /tmpRoot/usr/sbin/unscaler.sh cp -vf /usr/sbin/unscaler.sh /tmpRoot/usr/sbin/unscaler.sh
cp -vf /usr/sbin/rescaler.sh /tmpRoot/usr/sbin/rescaler.sh cp -vf /usr/sbin/rescaler.sh /tmpRoot/usr/sbin/rescaler.sh
if [ "${2}" = "userspace" ]; then
mkdir -p "/tmpRoot/usr/lib/systemd/system" mkdir -p "/tmpRoot/usr/lib/systemd/system"
DEST="/tmpRoot/usr/lib/systemd/system/cpufreqscaling.service" DEST="/tmpRoot/usr/lib/systemd/system/cpufreqscaling.service"
echo "[Unit]" >${DEST} echo "[Unit]" >${DEST}
@ -27,14 +28,34 @@ if [ "${1}" = "late" ]; then
echo "User=root" >>${DEST} echo "User=root" >>${DEST}
echo "Restart=always" >>${DEST} echo "Restart=always" >>${DEST}
echo "RestartSec=30" >>${DEST} echo "RestartSec=30" >>${DEST}
echo "ExecStart=/usr/sbin/scaler.sh \"${2}\"" >>${DEST} echo "ExecStart=/usr/sbin/scaler.sh" >>${DEST}
echo >>${DEST} echo >>${DEST}
echo "[X-Synology]" >>${DEST} echo "[X-Synology]" >>${DEST}
echo "Author=Virtualization Team" >>${DEST} echo "Author=Virtualization Team" >>${DEST}
mkdir -vp /tmpRoot/usr/lib/systemd/system/multi-user.target.wants mkdir -vp /tmpRoot/usr/lib/systemd/system/multi-user.target.wants
ln -vsf /usr/lib/systemd/system/cpufreqscaling.service /tmpRoot/usr/lib/systemd/system/multi-user.target.wants/cpufreqscaling.service ln -vsf /usr/lib/systemd/system/cpufreqscaling.service /tmpRoot/usr/lib/systemd/system/multi-user.target.wants/cpufreqscaling.service
else
mkdir -p "/tmpRoot/usr/lib/systemd/system"
DEST="/tmpRoot/usr/lib/systemd/system/cpufreqscaling.service"
echo "[Unit]" >${DEST}
echo "Description=Enable CPU Freq scaling" >>${DEST}
echo "DefaultDependencies=no" >>${DEST}
echo "IgnoreOnIsolate=true" >>${DEST}
echo "After=multi-user.target" >>${DEST}
echo >>${DEST}
echo "[Service]" >>${DEST}
echo "User=root" >>${DEST}
echo "Type=oneshot" >>${DEST}
echo "RemainAfterExit=yes" >>${DEST}
echo "ExecStart=/usr/sbin/rescaler.sh \"${2}\"" >>${DEST}
echo >>${DEST}
echo "[X-Synology]" >>${DEST}
echo "Author=Virtualization Team" >>${DEST}
mkdir -vp /tmpRoot/usr/lib/systemd/system/multi-user.target.wants
ln -vsf /usr/lib/systemd/system/cpufreqscaling.service /tmpRoot/usr/lib/systemd/system/multi-user.target.wants/cpufreqscaling.service
fi
if [ ! -f /tmpRoot/usr/syno/etc/esynoscheduler/esynoscheduler.db ]; then if [ ! -f /tmpRoot/usr/syno/etc/esynoscheduler/esynoscheduler.db ]; then
echo "copy esynoscheduler.db" echo "copy esynoscheduler.db"
mkdir -p /tmpRoot/usr/syno/etc/esynoscheduler mkdir -p /tmpRoot/usr/syno/etc/esynoscheduler