Czy istnieje sposób na ograniczenie całkowitego zużycia procesora?


23

Mój laptop (HP z układem i3) przegrzewa się jak szalony za każdym razem, gdy uruchamiam proces wymagający dużych zasobów (jak duża kompilacja, wyodrębnianie dużych plików tar lub ... odtwarzanie Flasha).

Obecnie szukam rozwiązań chłodzących, ale wpadłem na pomysł ograniczenia globalnego zużycia procesora. Doszedłem do wniosku, że jeśli procesor jest ograniczony, są szanse, że temperatura przestanie gwałtownie rosnąć i jestem gotów poświęcić trochę wydajności, aby wykonać zadanie.

  1. Czy mylę się w swoim rozumowaniu?
  2. Jak mogę ograniczyć ogólne zużycie procesora?

Jeśli to pomoże, uruchamiam Debiana.


Wierzę, że możesz to zrobić z cgroups, pozostawiając to tutaj jako wskaźnik zamiast odpowiedzi, ponieważ nie jestem pewien i nie jestem pewien, jak dokładnie ...
derobert

Możesz spróbować użyć cgroups. Oto pytanie
Grzegorz

Odpowiedzi:


10

Nie wiem, czy ograniczenie procesora do całego systemu jest czymś, co jest możliwe bez dużego hakowania, ale możesz łatwo ograniczyć ilość procesora zużywanego przez pojedynczy proces za pomocą cpulimit

Jedynym sposobem, w jaki mogę myśleć o tym, że potrafisz skutecznie to wykorzystać, jest napisanie skryptu opakowania (nie mogę tak naprawdę nazwać go skryptem, jest tak mały) dla aplikacji, o których wiesz, że to świnie zasobów. Powiedzmy na przykład, że Google Chrome używa dużo procesora, możesz zastąpić plik binarny Google Chrome na swojej ścieżce czymś takim jak:

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

Nie testowałem tego, więc weź to z odrobiną soli. Ze strony cpulimit wydaje się, że możesz ustawić reguły dla limitów procesorów w różnych aplikacjach. Nie jestem pewien, musiałbyś rzucić okiem.


10

Inną alternatywą, o której nie wspomniano, jest cpufrequtilszainstalowana i używana na moim laptopie z Debianem 6. Pozwala ona zmienić algorytm ( gubernator , cpufrequtilsterminologicznie), którego jądro używa do skalowania częstotliwości taktowania w górę i w dół w odpowiedzi ładować - w szczególności userspaceregulator pozwala zablokować częstotliwość na dowolny sposób (oczywiście procesor musi być zdolny do pracy z tą prędkością).

Użyłem go na przykład do zablokowania atomu na częstotliwości 800 MHz zamiast 1,6 GHz. Jest bardzo łatwy w użyciu.


1
To powinna być zaakceptowana odpowiedź. (Lub temp_throttle)
Vajk Hermecz

6

Możesz ograniczyć rdzenie procesora automatycznie na podstawie temperatury za pomocą skryptu temp_throttle . Może działać w tle, gdy skupiasz się na ważniejszych rzeczach. Przykład uruchomienia:

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

* Oświadczenie - Jestem autorem i opiekunem temp_throttle *


3

Wejdź w bios i podkręć procesor. - Nie potrzeba sprytu.


Co z BIOSami, które nie obsługują podkręcania?
daboross

1
używam cgroups, ale tbh nie widziałem bios, który nigdy nie zmieni ustawień częstotliwości.
Sirex

Mój (co prawda dość źle zbudowany) laptop Alienware M14x R1 nie ma takiego ustawienia, nic więcej nie można zmienić w BIOSie poza kolejnością uruchamiania i czasem systemowym.
daboross


1

Nie ma potrzeby zmiany gubernatora, wystarczy zmienić wartość /sys/devices/system/cpu/*/cpufreq/scaling_max_freqdla każdego rdzenia procesora.

Np. Z tym dla pętli:

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

zobacz także mój skrypt setcpu .

( znaleziono oryginalne polecenia )


-2

Możesz użyć, reniceaby zmienić priorytet procesu według identyfikatora procesu lub grupy. Z przykładów dla renice:

  1. Dostosuj wartość nice, aby identyfikatory procesów 987 i 32 miały niższą wartość nice:

    renice -n 5 -p 987 32

  2. Dostosuj wartość nice, aby identyfikatory grup 324 i 76 miały wyższą wartość nice, jeśli użytkownik ma odpowiednie uprawnienia:

    renice -n -4 -g 324 76

  3. Dostosuj wartość nice, aby numeryczny identyfikator użytkownika 8 i użytkownik sas mieli niższą wartość nice: renice -n 4 -u 8 sas


4
Tylko dodatkowa uwaga do odpowiedzi: renice, ładne lub inne podobne narzędzia nie wpłyną na temperaturę procesora, problematyczny proces będzie kontynuował jedzenie cykli procesora.
Rufo El Magufo

2
Ładne i renice nie ograniczą zużycia procesora. Po prostu ustalają priorytety. Jeśli nic więcej nie działa w tym samym czasie, proces nadal zużywa całą moc przetwarzania.
rahmu
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.