Genel CPU tüketimini sınırlamanın bir yolu var mı?


23

Dizüstü bilgisayarım (i3 yongası olan bir HP) kaynak yoğun bir işlem yaptığımda çılgın gibi aşırı ısınır (büyük bir derleme gibi, büyük tarball'lar ayıklamak veya ... Flash oynatmak).

Şu anda bazı soğutma çözümlerine bakıyorum ancak küresel CPU tüketimini sınırlandırma fikrine sahibim. CPU'nun kapatılması durumunda, şansın sıcaklığın çılgınca artmasını durduracağını ve işin yapılması için küçük bir performanstan ödün vermeye istekli olduğumu düşündüm.

  1. Sebepte yanlış mıyım?
  2. Genel olarak CPU kullanımını sınırlamak için nasıl ilerleyebilirim?

Eğer yardımı olacaksa, Debian'ı çalıştırıyorum.


Bunu gruplarla yapabileceğinizi düşünüyorum, bunu cevap yerine işaretçi olarak bırakarak yapabileceğinize eminim çünkü emin değilim ve tam olarak ne olduğundan emin değilim ...
derobert

Grupları kullanmayı deneyebilirsiniz. Benzer problemlerle ilgili soru: unix.stackexchange.com/questions/14537/…
Grzegorz Wierzowiecki

Yanıtlar:


10

CPU'yu tüm sistemle sınırlandırmanın çok fazla hack olmadan mümkün olabilecek bir şey olduğunu bilmiyorum, ancak cpulimit kullanarak tek bir işlem tarafından kullanılan CPU miktarını kolayca sınırlandırabilirsiniz.

Bunu etkin bir şekilde kullanabildiğinizi düşünebilmemin tek yolu, kaynak domuzları olduğunu bildiğiniz uygulamalar için bir sarmalayıcı komut dosyası yazmaktır (gerçekten bir komut dosyası diyemez, çok küçük). Örneğin, google-chrome’un çok fazla CPU kullandığını fark edersiniz, yolunuzdaki google-chrome binary’in yerine şöyle bir şey koyabilirsiniz:

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

Bunu henüz test etmedim, o yüzden tuzla karıştır. Cpulimit web sitesinden, farklı uygulamalarda cpu limitleri için kurallar koyabileceğiniz anlaşılıyor. Emin değilim, bir göz atmanız gerekecek.


10

Bahsetmediğim bir başka alternatif de, cpufrequtilsdizüstü bilgisayarıma Debian 6 ile kurduğum ve kullandığım alternatif . Çekirdeğin yanıt olarak saat hızını aşağı ve yukarı ölçeklendirmek için kullandığı algoritmayı ( vali , cpufrequtilsterminolojide) değiştirmenize izin veriyor yüklemek için - özellikle userspacevali, frekansı seçtiğiniz bir şeyde kilitlemenizi sağlar (elbette CPU'nun bu hızda çalışabilmesi gerekir).

Örneğin, bir Atom'u 1,6 GHz yerine 800 MHz'de kilitlemek için kullandım. Kullanımı çok kolay.


1
Bu kabul edilen cevap olmalı. (Veya temp_throttle)
Vajk Hermecz

6

CPU çekirdeğinizi temp_throttle betiğini kullanarak sıcaklığa göre otomatik olarak sınırlayabilirsiniz . Daha önemli şeylere odaklanırken arka planda çalışabilir. Nasıl çalıştırılacağına dair bir örnek:

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

* Sorumluluk reddi- temp_throttle yazarı ve sahibiyim *


3

Biyosuna gir ve CPU'yu altını kapat. - Akıllılığa gerek yok.


Underclock yapmayı desteklemeyen BIOS'lara ne demeli?
saat

1
cgroups kullanın, ancak tbh, frekans ayarlarını değiştiremeyen bir biyografi görmedim.
Sirex,

Benim kuşkusuzca kötü bir şekilde oluşturulmuş olan alienware m14x r1 dizüstü bilgisayarımın böyle bir ayarı yok, önyükleme sırası ve sistem zamanının yanı sıra bioslarda değiştirmek için fazla bir şey yok.
daboross


1

Valiyi değiştirmeye gerek yok, sadece /sys/devices/system/cpu/*/cpufreq/scaling_max_freqher işlemci çekirdeği için değerini değiştirmeniz gerekiyor .

Örneğin bu döngü için:

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

ayrıca bakınız setcpu betiğim .

( burada orijinal komutlar bulundu )


-2

reniceİşlem önceliğini işlem veya grup kimliği ile değiştirmek için kullanabilirsiniz . Örneklerden renice:

  1. Güzel değerini ayarlayın, böylece 987 ve 32 işlem kimlikleri daha düşük bir güzel değere sahip olur:

    renice -n 5 -p 987 32

  2. Güzel değeri, kullanıcı bunu yapmak için uygun yetkilere sahipse, 324 ve 76 numaralı grup kimlikleri daha yüksek bir değere sahip olacak şekilde ayarlayın:

    renice -n -4 -g 324 76

  3. Güzel değeri, sayısal kullanıcı kimliği 8 ve kullanıcı sas değerlerinin daha düşük güzel bir değere sahip olmasını sağlayacak şekilde ayarlayın: renice -n 4 -u 8 sas


4
Cevabınıza sadece ek bir not: Renice, nice veya benzeri araçlar CPU'nun sıcaklığını etkilemeyecek, problemli süreç CPU döngülerini yemeye devam edecektir.
Rufo El Magufo

2
Nice ve Renice, CPU tüketimini sınırlamayacak. Sadece öncelikleri belirlediler. Aynı anda başka hiçbir şey çalışmıyorsa, işlem hala tüm işlem gücünü tüketecektir.
rahmu
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.