Apakah ada cara untuk membatasi konsumsi CPU secara keseluruhan?


23

Laptop saya (HP dengan chip i3) terlalu panas seperti orang gila setiap kali saya menjalankan proses sumber daya yang berat (seperti kompilasi besar, mengekstraksi tarbal besar atau ... memainkan Flash).

Saat ini saya mencari beberapa solusi pendingin tetapi mendapat ide untuk membatasi konsumsi CPU global. Saya pikir jika CPU ditutup, kemungkinan suhu akan berhenti meningkat dengan panik, dan saya bersedia mengorbankan sedikit kinerja untuk menyelesaikan pekerjaan.

  1. Apakah saya salah dalam alasan saya?
  2. Bagaimana saya bisa melanjutkan untuk membatasi penggunaan CPU secara keseluruhan?

Jika itu membantu, saya menjalankan Debian.


Saya percaya Anda dapat melakukan ini dengan cgroup, meninggalkan ini di sini sebagai pointer daripada jawaban karena saya tidak yakin, dan saya tidak yakin bagaimana tepatnya ...
derobert

Anda dapat mencoba menggunakan cgroup. Ini pertanyaan dengan masalah yang sama: unix.stackexchange.com/questions/14537/…
Grzegorz Wierzowiecki

Jawaban:


10

Saya tidak tahu bahwa membatasi CPU untuk seluruh sistem adalah sesuatu yang mungkin dilakukan tanpa banyak peretasan, tetapi Anda dapat dengan mudah membatasi jumlah CPU yang digunakan oleh satu proses menggunakan cpulimit

Satu-satunya cara saya bisa memikirkan Anda untuk dapat menggunakan ini secara efektif adalah menulis skrip pembungkus (tidak bisa benar-benar menyebutnya skrip, itu sangat kecil) untuk aplikasi yang Anda tahu adalah sumber daya babi. Katakan misalnya, Anda menemukan google-chrome menggunakan banyak CPU, Anda dapat mengganti biner google-chrome di jalur Anda dengan sesuatu seperti:

#! /bin/bash
cpulimit --limit 70 /usr/bin/google-chrome-bin

Saya belum menguji ini jadi bawa dengan sebutir garam. Dari situs web cpulimit, sepertinya Anda mungkin dapat menetapkan aturan batas cpu pada aplikasi yang berbeda. Saya tidak yakin, Anda harus melihatnya.


10

Alternatif lain yang belum disebutkan adalah cpufrequtils, yang telah saya instal dan gunakan di laptop saya dengan Debian 6. Ini memungkinkan Anda untuk mengubah algoritme ( gubernur , dalam cpufrequtilsterminologi) yang digunakan kernel untuk skala kecepatan clock naik dan turun sebagai respons untuk memuat - khususnya, userspacegubernur memungkinkan Anda untuk mengunci frekuensi pada sesuatu yang Anda pilih (tentu saja CPU harus mampu berjalan pada kecepatan ini).

Saya telah menggunakannya untuk mengunci Atom pada 800MHz, bukan 1.6GHz, misalnya. Ini sangat mudah digunakan.


1
Ini harus menjadi jawaban yang diterima. (Atau temp_throttle)
Vajk Hermecz

6

Anda dapat membatasi inti CPU Anda secara otomatis berdasarkan suhu menggunakan skrip temp_throttle . Itu dapat berjalan di latar belakang saat Anda fokus pada hal-hal yang lebih penting. Contoh cara menjalankan:

sudo ./temp_throttle.sh 80 # Will limit CPU cores when 80C is reached.

* Disclaimer- Saya adalah penulis dan pengelola temp_throttle *


3

Pergilah ke bios dan underclock cpu. - Tidak perlu kepintaran.


Bagaimana dengan BIOS yang tidak mendukung underclocking?
Daboross

1
gunakan cgroups, tapi tbh saya belum pernah melihat bios yang tidak bisa mengubah pengaturan frekuensi.
Sirex

Laptop alienware saya (diakui cukup buruk) m14x r1 tidak memiliki pengaturan seperti itu, tidak banyak yang tersedia untuk mengubah bios selain urutan boot dan waktu sistem.
Daboross


1

Tidak perlu mengubah gubernur, Anda hanya perlu mengubah nilai /sys/devices/system/cpu/*/cpufreq/scaling_max_frequntuk setiap inti cpu.

Misalnya dengan ini untuk loop:

for f in /sys/devices/system/cpu/*/cpufreq/scaling_max_freq; do
    sudo sh -c "echo $1 > $f" 
done

lihat juga skrip setcpu saya .

( perintah asli ditemukan di sini )


-2

Anda dapat menggunakan reniceuntuk mengubah prioritas proses dengan proses atau id grup. Dari contoh untuk renice:

  1. Sesuaikan nilai bagus sehingga ID proses 987 dan 32 akan memiliki nilai bagus lebih rendah:

    renice -n 5 -p 987 32

  2. Sesuaikan nilai bagus sehingga ID grup 324 dan 76 akan memiliki nilai bagus yang lebih tinggi, jika pengguna memiliki hak yang sesuai untuk melakukannya:

    renice -n -4 -g 324 76

  3. Sesuaikan nilai bagus sehingga angka pengguna ID 8 dan pengguna juga akan memiliki nilai bagus yang lebih rendah: renice -n 4 -u 8 sas


4
Hanya catatan tambahan untuk jawabannya: renice, nice atau alat serupa lainnya tidak akan berpengaruh pada suhu CPU, proses bermasalah akan terus memakan siklus CPU.
Rufo El Magufo

2
Nice dan renice tidak akan membatasi konsumsi CPU. Mereka hanya menetapkan prioritas. Jika tidak ada yang berjalan pada saat yang sama, proses akan tetap menggunakan semua daya pemrosesan.
rahmu
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.