Nonaktifkan "ondemand" CPU scaling daemon


13

Saya memiliki server yang, pada saat upgrade ke 10,04, sekarang menjalankan daemon penskalaan CPU "ondemand". Mengapa ini secara otomatis menginstal ini? Saya tidak ingin server saya menghemat daya dengan mengorbankan kinerja.


5
Anda keliru mengira gubernur ondemand sebagai gubernur.
Leon Nardella

3
Setuju dengan Leon. Ondemand mempercepat jika ada yang harus dilakukan dan melambat jika tidak digunakan. Itu tidak membatasi kemampuan CPU untuk mengubah kecepatan, tetapi mengambil keuntungan darinya.
maco


Ini meningkatkan waktu respons pada server yang kebanyakan tidak digunakan.
Seorang Siswa di Universitas

Jawaban:


32

Alih-alih menonaktifkan eksekusi /etc/init.d/ondemandskrip (seperti yang disarankan oleh George), Anda harus menggunakan perintah ini

sudo update-rc.d ondemand disable

Untuk membuat sistem init tidak memulai skrip, ini adalah cara yang dikenal untuk melakukannya! Menonaktifkan izin exec ( sudo chmod -x /etc/init.d/ondemand) mungkin ditimpa jika paket diperbarui.


Jika saya melakukannya: sudo update-rc.d other_governor diaktifkan, apakah ini akan menetapkan gubernur permanen yang diinginkan?
userDepth

5

Penskalaan frekuensi tidak statis. Begitu ada pekerjaan yang harus dilakukan, CPU beraksi, status P meningkat, dan semuanya terbang.

Ini diaktifkan karena secara luas dipandang sebagai hal yang baik. Menghemat energi Anda (baik untuk dompet Anda dan lingkungan). Menjaga panas ( sangat penting di ruang server). Dan itu cukup kentara.

Terlebih lagi pada chip Intel modern, jika Anda melakukan penskalaan, Anda dapat menggunakan "turbo boost" di mana satu core akan berjalan pada kecepatan yang lebih tinggi daripada stok untuk sementara waktu. Ini sangat berguna untuk paku kerja single-threaded. Tanpa penskalaan diaktifkan, Anda tidak akan mendapatkan ini.


Berapa lama waktu yang dibutuhkan untuk meningkatkan pada P4 Xeon?
Seorang Siswa di Universitas

Datang di jawaban lama ini dan sementara saya setuju dengan Oli, ada kasus pengguna tertentu di mana Anda ingin menonaktifkan penskalaan CPU - Perekaman audio misalnya. Kecuali Anda memiliki kebutuhan khusus, tinggalkan di tempat permintaan
Panther

Secara kebetulan, apakah ada cara untuk mengetahui proses mana yang terus mengubah nilai minimum / penskalaan frekuensi? Itu selalu berubah dan saya tidak tahu mengapa. lihat askubuntu.com/questions/800797/how-to-enable-turbo-boost
Sebastien Lorber

2

Anda dapat menginstal alat debian rcconf :

sudo apt-get install rcconf

kemudian nonaktifkan layanan "ondemand" dari sana.


Saya tidak dapat menemukan peringatan penghentian tentang alat rcconf: Anda kehilangan intinya dan memberikan URL yang sepenuhnya salah. Saya tidak bermaksud cara Arch mengkonfigurasi skrip rc, tetapi alat debian dan itu terlihat hidup dan sehat.
Manuel

Terima kasih telah menunjukkan dan menyediakan tautan yang bermanfaat! (Saya menghapus komentar awal dan salah saya)
gila tentang natty

Juga mengedit respons asli!
Manuel

2

Setel semua CPU ke gubernur kinerja:

for GOVERNOR in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; \
do \
    echo "performance" | sudo tee $GOVERNOR; \
done

Semua gubernur yang didukung oleh kernel Linux:

  • kinerja Jalankan CPU pada frekuensi maksimum.
  • powersave Jalankan CPU pada frekuensi minimum.
  • userspace Jalankan CPU pada frekuensi yang ditentukan pengguna.
  • ondemand Mengukur frekuensi secara dinamis sesuai dengan beban saat ini. Melompat ke frekuensi tertinggi dan kemudian mundur saat waktu idle meningkat.
  • konservatif Mengukur frekuensi secara dinamis sesuai dengan beban saat ini. Timbangan frekuensi lebih lambat dari permintaan.
  • schedutil Scheduler-driven pemilihan frekuensi CPU

Lihat https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt


2
Catatan, sudo echo > ...tidak melakukan apa yang Anda harapkan: askubuntu.com/q/230476/158442
muru

1

Untuk membuat semua CPU berjalan pada kinerja maksimum secara terus-menerus pada desktop atau server Ubuntu, jalankan:

sudo chmod -x /etc/init.d/ondemand

di prompt shell dan masukkan kata sandi Anda. Ini menonaktifkan skrip shell yang membuat semua CPU berjalan dengan kecepatan "OnDemand", menjadikannya default untuk kecepatan penuh (Kinerja). Anda harus me-reboot agar ini berlaku.

Saya hanya menguji ini di Ubuntu Jaunty 9.04, tetapi harus berfungsi dan tidak menimbulkan masalah pada versi Ubuntu apa pun.

Saya pikir default Ubuntu aneh untuk ini. Desktop atau server harus berjalan dengan kecepatan penuh, menurut saya.

Salam, George


1
Saya tidak berpikir itu aneh. Meskipun tentu saja ponsel adalah skenario paling penting untuk penghematan daya, mengurangi penggunaan daya juga berarti lebih sedikit kebisingan kipas dalam skenario desktop, dan lebih sedikit panas untuk ditangani di ruang server. Menjalankan terus-menerus pada kecepatan maksimum sedikit menyia-nyiakan, hanya benar-benar diperlukan untuk kasus yang jarang terjadi di mana ondemandsalah.
bobince

@ bobince - Anda mungkin benar, tetapi untuk desktop saya perhatikan bahwa OnDemand memberikan respons yang lamban dibandingkan dengan Performance, dan saya pikir komputer masih dapat tidur dengan baik dengan perubahan di atas. Itu harus menjadi pilihan dalam Sistem / Administrasi atau Sistem / Preferensi.
George Gesslein II

Benar, satu-satunya tempat yang masuk akal adalah pada laptop di mana waktu pengisian daya diperpendek dan waktu baterai diperpanjang dengan meningkatkan skala CPU.
LassePoulsen

menyelamatkan lingkungan, siapa saja ??
gila tentang natty

1

Pada beberapa sistem, sayangnya gubernur 'ondemand' rusak.

Ini adalah kasus untuk "Intel (R) Core (TM) 2 Quad CPU Q9300 @ 2.50GHz" dan kernel 2.6.32-42.

Kernel berpikir ia dapat mengatur frekuensi secara individual untuk setiap CPU sementara perangkat keras sebenarnya hanya memungkinkan pengaturan frekuensi pada kelompok-kelompok beberapa CPU (mis. CPU 0 dan 1 bersamaan, dan CPU 2 dan 3 bersamaan).

Anda mungkin mengetahui bahwa kernel tidak mengetahui hal ini dengan melihat file / sys / devices / system / cpu / cpu * / cpufreq / terpengaruh_cpus yang berisi "0", "1", "2", "3" bukannya "0 1", "0 1", "2 3", "2 3".

Efek yang terlihat dari missmatch ini adalah proses single-threaded yang mulai menjalankan kecepatan penuh pada satu CPU (Gubernur 'ondemand' bereaksi cepat), dan kemudian, setelah sekitar 20 detik (tergantung pada pengaturan detail), kehilangan beberapa kecepatannya.

Alasannya adalah OS, dengan gubernur 'ondemand', secara berkala menerapkan freq rendah pada CPU idle, tidak berharap bahwa itu juga secara implisit akan mengubah freq dari CPU sibuk kami. Bahkan tidak terlihat ketika Anda melihat / sys / devices / system / cpu / cpu * / cpufreq / * cur_freq atau / proc / cpuinfo, OS tidak menyadarinya!

Jadi, pada sistem ini solusinya adalah beralih kembali ke gubernur 'kinerja' yang sederhana.

PS: Dalam kasus saya, menjalankan CPU terus-menerus pada freq penuh mereka tidak mengubah apa pun tentang kebisingan kipas. Saya kira ketika sebuah CPU idle, frekuensi yang lebih rendah atau lebih tinggi tidak akan berdampak banyak pada penggunaan daya.


0

Saya memiliki prosesor baru AMD Athlon II X4 631 (prosesor Fusion untuk soket FM1) dan tidak menghemat energi apa pun (saya mencarinya dengan meteran energi)! Saya tidak memiliki inti turbo, jadi saya tidak perlu pengaturan permintaan. Kebanyakan prosesor baru menyimpan enery sendiri.

Saat melakukan pembandingan, ada sedikit perbedaan, dalam kisaran 1-2%, saat membandingkan ondemand dan pengaturan kinerja.


Selamat datang di AskUbuntu! Anda mungkin ingin mencadangkan pernyataan Anda dengan statistik / penelitian lengkap karena jawaban Anda bisa disalahpahami sebagai pendapat daripada jawaban yang diteliti.
Oyibo

Ini juga salah, Apple mendapat masalah minggu ini karena memperlambat perangkat untuk menghemat daya
Xen2050

-1

Ini sudah tua, tetapi karena tidak ada yang menyebutkannya, dan demi kelengkapan, saya akan menambahkan bahwa argumen bagaimana CPU yang berjalan pada kecepatan maksimum akan menghabiskan daya, menghasilkan panas, suara kipas dll . SALAH .

Hampir semua CPU modern, terutama Desktop / Server CPU, akan memasuki mode tidur nyenyak ketika idle (google race to idle.).

Penskalaan voltase mungkin akan menghemat lebih banyak daya, jadi pada laptop ini dapat sedikit meningkatkan waktu berjalan, tetapi pada desktop dan server yang menjalankan gubernur kinerja akan baik-baik saja untuk sebagian besar pengguna 'normal' (yang tidak menjalankan farm server atau sejenisnya.).

Saya menggunakan kinerja gov dengan i7-2600k saya dan suhu CPU biasanya sekitar 30 C.


Ini juga salah. Pantau suhu CPU dan ubah frekuensi untuk melihat sendiri (kecuali jika sistem Anda tidak mengimplementasikannya dengan benar / benar). Lihat tautan Apple juga, terdengar seperti penskalaan frekuensi / kecepatan biasa
Xen2050

@ Xen2050, untuk melihat sendiri untuk apa? Apakah Anda menyiratkan bahwa CPU yang berjalan pada 70 derajat Celcius selama 2 detik, mungkin mengkonsumsi lebih banyak daya, daripada yang berjalan 5-6 detik pada 60 Derajat, atau sesuatu ke arah itu? Ini tidak sesederhana memonitor suhu CPU pada saat tertentu.
Denis

@ Xen2050 tautan Anda menunjuk ke iPhone, yang merupakan lengkungan atau prosesor yang sama sekali berbeda. Saya telah menunjukkan bahwa penskalaan tegangan dalam kombo dengan gubernur tertentu dapat membantu pada laptop misalnya, dan menyebutkan desktop (Workstation), dan prosesor server secara eksplisit, tetapi pada kenyataannya apa yang saya bicarakan ada bahkan di ponsel juga selama bertahun-tahun sekarang ( Situasinya mungkin lebih rumit dalam kasus ini. Seorang gubernur yang tepat mungkin diperlukan bagi MPU untuk menggunakan negara C / P tertentu dengan benar). Pokoknya baca sekali lagi apa yang telah saya ketik, dan google 'berlomba untuk menganggur' dan prosesor mode tidur nyenyak.
Denis
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.