Disabling cpufreq/boost at boot time sometimes fails

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

I'm using systemd-239-45 on RHEL 8.4 x86_64 AMD nodes on which I disable Turbo Core/Turbo Boost by writing '0' into the following file:

/sys/devices/system/cpu/cpufreq/boost

I want it to be disabled automatically at boot. For that matter I tried 3 different ways (only one at a time)

1) a service unit configured like this:

[Unit]
Description=Disable CPU Turbo Boost


[Service]
# using tee here to have an output in journalctl to understand when this service
# fails to start
ExecStart=/bin/sh -c "/usr/bin/echo 0 | /bin/tee /sys/devices/system/cpu/cpufreq/boost" ExecStop=/bin/sh -c "/usr/bin/echo 1 | /bin/tee /sys/devices/system/cpu/cpufreq/boost"
RemainAfterExit=yes

[Install]
WantedBy=sysinit.target

2) adding an entry for systemd-tmpfiles-setup.service like this:

w /sys/devices/system/cpu/cpufreq/boost - - - - 0

3) using modprobe.d like this:

install acpi_cpufreq /sbin/modprobe --ignore-install acpi_cpufreq $CMDLINE_OPTS && echo 0 > /sys/devices/system/cpu/cpufreq/boost


I noticed that *sometimes* using 1) or 2) /sys/devices/system/cpu/cpufreq/boost ended up with '1' instead of '0'

I didn't see any error in journal for 2) (tmpfiles.d option) and for 1) (systemd service) I saw:


Jul 04 15:06:25 xxxx systemd[1]: Started Disable CPU Turbo Boost.
Jul 04 15:06:25 xxxx sh[2788]: /bin/tee: /sys/devices/system/cpu/cpufreq/boost: Permission denied
Jul 04 15:06:25 xxxx sh[2788]: 0
Jul 04 15:06:25 xxxx systemd[1]: disable-cpu-turboboost.service: Main process exited, code=exited, status=1/FAILURE Jul 04 15:06:25 xxxx systemd[1]: disable-cpu-turboboost.service: Failed with result 'exit-code'.

I did not manage to find out if there were a race condition and if so what ordering dependencies should be stated. I tried to compare a "working" and "not working" systemd-analyse output but I did not find anything obvious (at least for me)

Besides, /sys is mounted in the fstab (as expected)

sysfs   /sys     sysfs    defaults       0 0

is there a corresponding transient .mount unit somewhere ?

Notes:

a) SELinux is disabled

b) I don't think any other service or process is touching the /sys/devices/system/cpu/cpufreq/boost file

c) in the event the system boot up with the wrong value, manually echo 0 into the file (which exists) always work

Can you help me figuring in what direction I should look, if it is systemd related at all ?

Thanks for your help

--
Thomas HUMMEL



[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux