Відповіді:
Я не думаю, що ви можете змінити типовий режим, не перекомпілювавши ядро. Під цим я маю на увазі те, яке вибирає ядро під час завантаження.
Однак ви можете сказати йому використовувати інший регулятор під час запуску, тому, якщо ви хочете ефективно встановити типовий засіб без перекомпіляції, ви можете додати щось до /etc/rc.local
чи інший сценарій запуску.
/sys
Каталогу немає на диску; це фальшива файлова система RAM, яка насправді є інтерфейсом для отримання інформації та відправки команд до ядра. Це все відносно /sys/devices/system/cpu
, так:
> cd /sys/devices/system/cpu
Вам також потрібно мати root, щоб зробити write ( echo blahblah >
). У будь-якому випадку відносно вищевказаного каталогу, щоб переглянути доступні регулятори:
> cat cpu0/cpufreq/scaling_available_governors
conservative ondemand userspace powersave performance
Мабуть, ваш є ondemand
(але читайте "Готча" нижче про це); перевіряти:
> cat cpu0/cpufreq/scaling_governor
ondemand
Щоб змінити його:
echo performance > cpu0/cpufreq/scaling_governor
Зауважте, це або має бути виконано корінь, або так
sudo sh -c "echo performance > cpu0/cpufreq/scaling_governor"
Попросту sudo
не працюватиме , тому що є редирект, >
.
Тепер ви помітите, що /sys/devices/system/cpu/cpufreq
каталог (НЕ такий самий, як /sys/devices/system/cpu/cpu0/cpufreq
!), Який раніше містив файлові файли для налаштування губернатора вимоги, порожній.
У Raspbian є скрипт init, названий збентежено raspi-config
(ні, він не має нічого спільного з іншим, який запускається під першим завантаженням також заплутаним іменем apply_noobs_os_config.sh
), який використовує цю техніку для встановлення губернатора, ondemand
якщо не клавіша shift утримується (запас ядра Raspbian powersave
складено в). Він не робить нічого іншого, тому безпечно відключити це ( systemctl disable raspi-config
), або ви можете відредагувати це відповідно до відповіді Горкаморки , але тоді ви ризикуєте його відредагувати оновленням системи тощо - хто знає, що хто планує з цим робити.
Ви можете спробувати додати версію non-sudo до версії /etc/rc.local
. Це може статися після закінчення raspi-config
сценарію.
tee
: echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
.
cpufrequtils
та sysfsutils
. Після їх встановлення ви можете встановити губернатор та інші параметри з /etc/default/cpufrequtils
і /etc/sysfs.conf
- дивіться тут: wiki.debian.org/HowTo/CpuFrequencyScaling
Я створив невелику програму, щоб змінити її і дозволити їй змінювати кожне завантаження, автоматично створивши сценарій init.d.
подібне питання щодо обміну стеками RPi тут.
Якщо перефразовувати це, швидкість попиту піднімається до максимуму, коли процесор на 95% зайнятий. Ви можете знизити кількість зайнятого часу до нижчого відсотка (це означає, що він буде набирати більше, коли не такий зайнятий):
"запис цілого значення у файл (ви можете поставити таке, наприклад, у файл запуску /etc/rc.local): echo 60> / sys / devices / system / cpu / cpufreq / ondemand / up_threshold"
так, теоретично ... ви можете поставити цей відсоток на щось неймовірно низьке, як 10 або 5, що означатиме, що він завжди працює на макс.
Сподіваюсь, це допомагає. Не забудьте підбити бал того, хто опублікував це у пов’язаній статті!
Альтернативним рішенням (якщо ви використовуєте Raspbian) може бути зміна сценарію init.d в /etc/init.d/raspi-config, щоб завжди відключити регулятор масштабування. Це поведінка за замовчуванням - це ввімкнути її лише при запуску, якщо натискається одна з клавіш shift:
#!/bin/sh
### BEGIN INIT INFO
# Provides: raspi-config
# Required-Start: udev mountkernfs $remote_fs
# Required-Stop:
# Default-Start: S
# Default-Stop:
# Short-Description: Switch to ondemand cpu governor (unless shift key is pressed)
# Description:
### END INIT INFO
. /lib/lsb/init-functions
case "$1" in
start)
log_daemon_msg "Checking if shift key is held down"
timeout 1 thd --dump /dev/input/event* | grep -q "LEFTSHIFT\|RIGHTSHIFT"
if [ $? -eq 0 ]; then
printf " Yes. Not enabling ondemand scaling governor"
log_end_msg 0
else
printf " No. Switching to ondemand scaling governor"
SYS_CPUFREQ_GOVERNOR=/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor if [ -e $SYS_CPUFREQ_GOVERNOR ]; t
hen
echo "ondemand" > $SYS_CPUFREQ_GOVERNOR
echo 50 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
echo 100000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
echo 50 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
echo 1 | sudo tee /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
fi
log_end_msg 0
fi
;;
*)
echo "Usage: $0 start" >&2
exit 3
;;
esac
echo "performance" | sudo tee / sys / devices / system / cpu / cpu0 / cpufreq / skaliranje_governor