C'è un modo per limitare il consumo complessivo della CPU?


23

Il mio laptop (un HP con un chip i3) si surriscalda come un matto ogni volta che eseguo un processo pesante di risorse (come una compilation di grandi dimensioni, estraendo tarball di grandi dimensioni o ... giocando a Flash).

Attualmente sto cercando alcune soluzioni di raffreddamento, ma mi è venuta l'idea di limitare il consumo globale di CPU. Ho pensato che se la CPU è ridotta, è probabile che la temperatura smetta di aumentare freneticamente e sono disposto a sacrificare un po 'di prestazioni per portare a termine il lavoro.

  1. Sbaglio nel mio ragionamento?
  2. Come posso procedere per limitare l'utilizzo complessivo della CPU?

Se aiuta, sto eseguendo Debian.


Credo che tu possa farlo con i cgroups, lasciandolo qui come puntatore anziché come risposta perché non sono sicuro, e non sono sicuro di come esattamente ...
derobert

Puoi provare a usare i cgroups. Ecco quesiton con un problema simile: unix.stackexchange.com/questions/14537/…
Grzegorz Wierzowiecki

Risposte:


10

Non so che limitare la CPU a tutto il sistema è qualcosa che è possibile senza un sacco di hacking, ma puoi facilmente limitare la quantità di CPU utilizzata da un singolo processo usando cpulimit

L'unico modo in cui riesco a pensare che tu sia in grado di usarlo in modo efficace è scrivere uno script wrapper (non posso davvero chiamarlo script, è così piccolo) per le applicazioni che conosci sono maiali delle risorse. Ad esempio, scopri che google-chrome utilizza molta CPU, puoi sostituire il binario google-chrome nel tuo percorso con qualcosa del tipo:

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

Non l'ho provato, quindi prendilo con un granello di sale. Dal sito Web di cpulimit, sembra che potresti essere in grado di impostare regole per i limiti della cpu su diverse applicazioni. Non sono sicuro, dovresti dare un'occhiata.


10

Un'altra alternativa che non è stata menzionata è quella cpufrequtilsche ho installato e usato sul mio laptop con Debian 6. Ti permette di cambiare l'algoritmo ( governatore , in cpufrequtilstermini terminologici) che il kernel usa per scalare la frequenza di clock su e giù in risposta per caricare - in particolare, il userspaceregolatore ti consente di bloccare la frequenza a qualcosa di tua scelta (ovviamente la CPU deve essere in grado di funzionare a questa velocità).

L'ho usato per bloccare un Atom a 800 MHz anziché 1,6 GHz, per esempio. È molto facile da usare.


1
Questa dovrebbe essere la risposta accettata. (O temp_throttle)
Vajk Hermecz,

6

È possibile limitare automaticamente i core della CPU in base alla temperatura utilizzando lo script temp_throttle . Può funzionare in background mentre ti concentri su cose più importanti. Un esempio su come eseguire:

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

* Disclaimer - Sono l'autore e il manutentore di temp_throttle *


3

Entra nel bios e sblocca la CPU. - Non c'è bisogno di intelligenza.


Che dire dei BIOS che non supportano il underclocking?
Daboross,

1
uso i cgroups, ma non ho visto un bios che non possa mai cambiare le impostazioni di frequenza.
Sirex,

Il mio laptop alienware m14x r1 (ammesso piuttosto male) non ha tale impostazione, niente di molto disponibile per cambiare nel BIOS oltre all'ordine di avvio e all'ora di sistema.
daboross,


1

Non è necessario cambiare il governatore, devi solo cambiare il valore di /sys/devices/system/cpu/*/cpufreq/scaling_max_freqper ogni core della cpu.

Ad esempio con questo per loop:

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

vedi anche il mio script setcpu .

( comandi originali trovati qui )


-2

È possibile utilizzare reniceper modificare la priorità del processo in base all'ID processo o gruppo. Dagli esempi per renice:

  1. Regola il valore corretto in modo che gli ID processo 987 e 32 abbiano un valore piacevole inferiore:

    renice -n 5 -p 987 32

  2. Regola il valore corretto in modo che gli ID gruppo 324 e 76 abbiano un valore più elevato, se l'utente dispone dei privilegi appropriati per farlo:

    renice -n -4 -g 324 76

  3. Regola il valore corretto in modo che l'ID utente numerico 8 e l'utente sas abbiano un valore piacevole inferiore: renice -n 4 -u 8 sas


4
Solo una nota aggiuntiva alla risposta: renice, strumenti belli o simili non influiranno sulla temperatura della CPU, il processo problematico continuerà a consumare i cicli della CPU.
Rufo El Magufo,

2
Nice e renice non limiteranno il consumo di CPU. Hanno semplicemente fissato delle priorità. Se nient'altro è in esecuzione contemporaneamente, il processo consumerà comunque tutta la potenza di elaborazione.
Rahmu,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.