Bagaimana cara mengubah gubernur default?

12

Saya ingin mengubah gubernur default pada pi saya dari ondemand ke kinerja. Apakah ada cara untuk melakukan ini?

Matius
sumber

Jawaban:

21

Saya tidak berpikir Anda dapat mengubah default tanpa mengkompilasi ulang kernel. Maksud saya, kernel yang dipilih ketika boot.

Namun, Anda bisa mengatakannya untuk menggunakan gubernur yang berbeda saat menjalankan, jadi jika Anda ingin secara efektif mengatur default tanpa kompilasi ulang, Anda dapat menambahkan sesuatu ke /etc/rc.localatau beberapa skrip start-up lainnya.

The /sysdirektori tidak pada disk; ini merupakan sistem file palsu RAM yang sebenarnya merupakan antarmuka untuk mendapatkan informasi dari dan mengirim perintah ke kernel. Ini semua relatif terhadap /sys/devices/system/cpu, jadi:

> cd /sys/devices/system/cpu

Anda juga harus menjadi root untuk melakukan write ( echo blahblah >). Lagi pula, relatif terhadap direktori di atas, untuk melihat gubernur yang tersedia:

> cat cpu0/cpufreq/scaling_available_governors
conservative ondemand userspace powersave performance

Rupanya milik Anda adalah ondemand(tetapi baca "Gotcha" di bawah tentang ini); untuk memeriksa:

> cat cpu0/cpufreq/scaling_governor
ondemand

Untuk mengubahnya:

echo performance > cpu0/cpufreq/scaling_governor

Perhatikan ini harus dilakukan root, atau seperti ini

sudo sh -c "echo performance > cpu0/cpufreq/scaling_governor"

Hanya sudotidak akan berfungsi karena ada redirect >,.

Anda sekarang akan melihat /sys/devices/system/cpu/cpufreqdirektori, (TIDAK sama dengan /sys/devices/system/cpu/cpu0/cpufreq!), Yang sebelumnya berisi filehandle untuk mengkonfigurasi ondemand gubernur, kosong.


Kena kau...

Pada Raspbian ada skrip init, nama yang membingungkan raspi-config(tidak, tidak ada hubungannya dengan yang lain, yang dijalankan saat boot pertama oleh yang juga membingungkan apply_noobs_os_config.sh), yang menggunakan teknik ini untuk mengatur gubernur ondemandkecuali jika tombol shift ditekan (kernel stock Raspbian telah powersavedikompilasi dalam). Itu tidak melakukan hal lain, jadi aman untuk menonaktifkan ini ( systemctl disable raspi-config), atau Anda dapat mengeditnya sesuai jawaban Gorkamorka , tetapi kemudian Anda berisiko tidak diedit oleh pembaruan sistem, dll. - siapa tahu apa yang orang rencanakan dengan itu.

Anda dapat mencoba menambahkan versi non-sudo di atas /etc/rc.local. Ini dapat terjadi setelah raspi-configskrip keluar.

goldilocks
sumber
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
goldilocks
2
Ketimbang membutuhkan beralih ke root, hanya menggunakan tee: echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor.
Nama Palsu
2
Cara lain: sudo sh -c "echo performance> cpu0 / cpufreq / scaling_governor"
Moonchild
Karena Raspbian didasarkan pada Debian, Anda harus dapat menemukan paket cpufrequtilsdan sysfsutils. Setelah menginstalnya, Anda dapat mengatur gubernur dan parameter lainnya dari /etc/default/cpufrequtilsdan /etc/sysfs.conf- lihat di sini: wiki.debian.org/HowTo/CpuFrequencyScaling
mbirth
4

Saya membuat programm kecil untuk mengubahnya dan membiarkannya diubah setiap boot dengan secara otomatis membuat skrip init.d.

Tautan ke proyek saya

MeisterD
sumber
3

pertanyaan serupa pada pertukaran tumpukan RPi di sini.

untuk memparafrasekannya, kecepatan on demand meningkat hingga max saat cpu sibuk 95%. Anda dapat menurunkan jumlah waktu sibuk ke persentase yang lebih rendah (artinya jam akan lebih tinggi bila tidak sibuk) dengan:

"Menulis nilai integer ke file (Anda dapat meletakkan yang berikut sebagai contoh di file startup /etc/rc.local): echo 60> / sys / devices / system / cpu / cpufreq / ondemand / up_threshold"

jadi, secara teoritis ... Anda bisa menempatkan persentase ini pada sesuatu yang sangat rendah seperti 10 atau 5, yang berarti akan selalu berjalan maksimal.

Semoga ini membantu. Pastikan untuk menilai orang yang memposting ini di artikel tertaut!

dave k
sumber
3
Itu sebenarnya bukan jawaban untuk pertanyaan, "bagaimana saya mengubah gubernur dari ondemand menjadi kinerja (mereka adalah dua gubernur yang berbeda ).
goldilocks
1
@goldilocks Saya pikir jawaban ini masih menambahkan sesuatu yang berguna untuk pertanyaan karena ini menjelaskan bagaimana membuat yang satu berperilaku seperti yang lain.
Dmitry Grigoryev
2

Solusi alternatif (jika Anda menjalankan Raspbian) bisa dengan memodifikasi skrip init.d di /etc/init.d/raspi-config untuk selalu menonaktifkan gubernur penskalaan. Perilaku defaultnya adalah hanya mengaktifkannya saat startup jika salah satu tombol shift ditekan:

#!/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
Gorkamorka
sumber
-3

gema "kinerja" | sudo tee / sys / devices / system / cpu / cpu0 / cpufreq / scaling_governor

Kurdt94
sumber
Meskipun ini dapat menjawab pertanyaan, jawaban yang baik membutuhkan lebih banyak informasi daripada yang Anda berikan di sini. Juga, jawaban Anda tidak apa-apa bahwa jawaban di atas belum disediakan.
Steve Robillard