Skip to content

Commit

Permalink
Merge pull request #3896 from antonlacon/le10-systemd-cpufreq
Browse files Browse the repository at this point in the history
init: move cpufreq tuning to systemd service
  • Loading branch information
MilhouseVH committed Nov 15, 2019
2 parents fda5158 + 2118568 commit ecbd566
Show file tree
Hide file tree
Showing 7 changed files with 68 additions and 22 deletions.
9 changes: 0 additions & 9 deletions packages/sysutils/busybox/scripts/init
Original file line number Diff line number Diff line change
Expand Up @@ -966,15 +966,6 @@ prepare_sysroot() {
# hide kernel log messages on console
echo '1 4 1 7' > /proc/sys/kernel/printk

# set ondemand up_threshold
if [ -e /sys/devices/system/cpu/cpufreq/ondemand/up_threshold ]; then
echo 50 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
else
for f in $(ls /sys/devices/system/cpu/cpufreq/policy*/ondemand/up_threshold 2>/dev/null) ; do
echo 50 > $f
done
fi

# run platform_init script if exists
if [ -f "./platform_init" ]; then
./platform_init
Expand Down
4 changes: 4 additions & 0 deletions packages/sysutils/systemd/package.mk
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,9 @@ post_makeinstall_target() {
cp $PKG_DIR/scripts/userconfig-setup $INSTALL/usr/bin
cp $PKG_DIR/scripts/usercache-setup $INSTALL/usr/bin

# use systemd to set cpufreq governor and tunables
find_file_path scripts/cpufreq && cp -PRv $FOUND_PATH $INSTALL/usr/bin

mkdir -p $INSTALL/usr/sbin
cp $PKG_DIR/scripts/kernel-overlays-setup $INSTALL/usr/sbin

Expand Down Expand Up @@ -268,4 +271,5 @@ post_install() {
enable_service usercache.service
enable_service kernel-overlays.service
enable_service hwdb.service
enable_service cpufreq.service
}
17 changes: 17 additions & 0 deletions packages/sysutils/systemd/scripts/cpufreq
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/sh

# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2015 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)

SYS_CPUFREQ_GOV=$( cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor )
SYS_CPUFREQ_DIR="/sys/devices/system/cpu/cpufreq"

# Configure frequency scaling properties
if [ $SYS_CPUFREQ_GOV = "ondemand" ]; then
for policy in ${SYS_CPUFREQ_DIR}/ondemand ${SYS_CPUFREQ_DIR}/policy*/; do
if [ -e $policy/up_threshold ]; then
echo 50 > $policy/up_threshold
fi
done
fi
11 changes: 11 additions & 0 deletions packages/sysutils/systemd/system.d/cpufreq.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[Unit]
Description=Set CPU frequency governor and its tunables
ConditionPathExists=/usr/bin/cpufreq

[Service]
Type=oneshot
ExecStart=/usr/bin/cpufreq
RemainAfterExit=yes

[Install]
WantedBy=basic.target
18 changes: 18 additions & 0 deletions projects/Amlogic/packages/systemd/scripts/cpufreq
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/bin/sh

# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2015 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)

SYS_CPUFREQ_GOV=$( cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor )
SYS_ONDEMAND_DIR="/sys/devices/system/cpu/cpufreq/ondemand/"

# Configure frequency scaling properties
if [ "${SYS_CPUFREQ_GOV}" = "ondemand" ]; then
echo 1 > "${SYS_ONDEMAND_DIR}/io_is_busy"
echo 50 > "${SYS_ONDEMAND_DIR}/up_threshold"
echo 100000 > "${SYS_ONDEMAND_DIR}/sampling_rate"
echo 50 > "${SYS_ONDEMAND_DIR}/sampling_down_factor"
else
echo "cpufreq: settings not found for current cpu governor." | systemd-cat -p info
fi
13 changes: 0 additions & 13 deletions projects/RPi/initramfs/platform_init

This file was deleted.

18 changes: 18 additions & 0 deletions projects/RPi/packages/systemd/scripts/cpufreq
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/bin/sh

# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2015 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)

SYS_CPUFREQ_GOV=$( cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor )
SYS_ONDEMAND_DIR="/sys/devices/system/cpu/cpufreq/ondemand/"

# Configure frequency scaling properties
if [ "${SYS_CPUFREQ_GOV}" = "ondemand" ]; then
echo 1 > "${SYS_ONDEMAND_DIR}/io_is_busy"
echo 50 > "${SYS_ONDEMAND_DIR}/up_threshold"
echo 100000 > "${SYS_ONDEMAND_DIR}/sampling_rate"
echo 50 > "${SYS_ONDEMAND_DIR}/sampling_down_factor"
else
echo "cpufreq: settings not found for current cpu governor." | systemd-cat -p info
fi

0 comments on commit ecbd566

Please sign in to comment.