Geceleri zorla underclocking


23

Masaüstüm her zaman açık kalıyor. Sunucu görevi görür ve diğer yarı-temel ev işlerini de gerçekleştirir. Gün boyunca OnDemand CPU ayarını kullanır. Bu aslında sadece CPU frekansını ihtiyaç duyduğu gibi ölçeklendirir ve bu benim için gerçekten iyi çalışır.

Gece vakti etrafta uçuyor. Elbette çoğu zaman düşük bir güçle rölantide çalışıyor, ancak bazen bir şeyler yapmak için hızlanır. PowerSave'de kalmasını tercih ederim ve görevlerin tamamlanması biraz daha uzun sürdü.

Ek olarak, küçük bir Afrika köyünün, bir yılda istediği zaman kullandığı (Minecraft'ta göz kamaştırıcı) aynı miktarda güç tüketebilen bir Nvidia kartına (GTX 580) sahibim. Bilinmeyen nedenlerden dolayı (şüphesiz masaüstünde bir şey oluyor), bu durum hızlanıyor, fanlar uzaya lazerleri ateşlemek için şarj ediyorlar gibi geliyor. Geceleri, gidebildiği kadarıyla kartı alttan görmek istiyorum.

Bunları zorlamak için basit bir root-run cron betiği düşündüm ama çalışma saatlerim değişken. Geçen hafta 70 saatlik bir çalışma haftası vardı, bu yüzden her gün çok erken kalktım ve hala çok geç kaldım. Sistem süper underclock modundayken honking olsaydı, çok öfkeli olurdu. Söyleyebileceğim bir şey var mı, "Underclock eğer:

  • Saat 10:00 ile 09:00 arasında
  • 10 dakikadır fare / klavye etkinliği olmamıştır
  • Oynanan bir film yok

Bu koşullardan biri doğru değilse, underclock'un anında geri dönmesi gerekir . Bilgisayarı uykusundan uyandırmak için bir cron senaryosunun gelmesini beklemek istemiyorum. Benzer şekilde, hepsi gerçek olur olmaz, uyumaya devam etmesi gerekir.

Seçeneklerim neler?


Şu an hangi versiyondasınız? Makineme gelene kadar acpi olaylarını veya pm-tools paketini kullanarak olayları bağlayabilmeniz gerektiğini söyleyeceğim.
hometoast

Yanıtlar:


19

İşte istediğinizi yapan bir program:

#!/usr/bin/env python
# coding: utf8

import time
import sys
import commands


USER = commands.getoutput("cat /var/log/auth.log | grep " +
    sys.argv[0]).split("sudo:")[1].split()[0].strip()


def is_idle():
    return int(commands.getoutput("xprintidle")) >= 10 * 60 * 1000

def is_night():
    return time.localtime().tm_hour in (22, 23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

def is_stumm():
    return "RUNNING" not in commands.getoutput(("sudo -u %s pacmd " +
        "list-sinks | grep RUNNING") % USER)


def main():
    powersave = False
    while 1:
        if is_idle() and is_night() and is_stumm():
            if not powersave:
                print "going into powersave mode"
                commands.getoutput("echo powersave > " +
                    "/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor")
                powersave = True
        else:
            if powersave:
                print "going into ondemand mode"
                commands.getoutput("echo ondemand > " +
                    "/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor")
                powersave = False
        time.sleep(0.5)

if __name__ == '__main__':
    assert commands.getstatusoutput("xprintidle")[0] == 0, (
        "you need to `sudo apt-get install xprintidle`")
    assert commands.getoutput("whoami") == "root", (
        "you need to be root to run this program")
    main()

Tercihlerinizi not edin:

  • ... >= 10 * 60 * 1000
  • ... tm_hour in (22, 23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9) ve
  • "RUNNING" not in ...

Bir filmin oynatılıp oynatılmadığını bulmak için pulseaudio kullanıyorum. Bu aynı zamanda müziği de etkiler.


5

İşlemci ölçeklemenizi kullanarak zorlayabilirsiniz:

cpufreq-selector -f [frequency]

Birkaç seçenek daha var (yani belirli işlemci veya hız yerine bir yönetişim seçme) Bu, anakart / CPU'nuzun Ubuntu'nun ölçeklendirmeyi elle kontrol etmesine izin verdiğini varsayar (görünüşe göre bu her zaman böyle değildir).

Gerisi bir komut dosyası kullanılarak uygulanabilir, ancak oldukça fazla talep ediyorsunuzdur ^ _ ^. Anında bir cevaba ihtiyacınız varsa, periyodik olarak sisteminizi sorgulayan bir şeye sahip olmanız gerektiğini düşünüyorum. Benden, bazı sınırlı olan bilgilerden, belirttiğiniz koşulları açıklayan hiçbir şey yoktur.

Araştırmaya başlamak için bir yer, ancak bir ekran koruyucu. Bu, belirli bir süre kullanılmadığında (saat 10 - 09: 00'da da geçerli olacak) bir süre sonra açılır ve film oynatıcılar tarafından engellenebilir. Başlatma sırasında CPU'yu küçülten ve ardından uyandıktan sonra geri yükleyen bir ekran koruyucu yaptıysanız, istediğiniz şeyi elde edersiniz.

Maalesef ekran koruyucular ve nasıl çalıştıkları hakkında hiçbir şey bilmeden sizi alabileceğim kadarıyla.

İyi şanslar.


4

Güç tasarrufu valisini kullanarak daha fazla güç tasarrufu yapamayabilirsiniz .

İş yükünüze bağlı olarak, biraz daha fazla güç harcayarak ve daha az güç harcayarak uzun süre çalışmak yerine derin bir uyku durumuna geri dönerek bir iş öğesini hızlıca bitirme daha iyi sonuçlar verebilir.

Uygulamanıza bağlı olarak, daha düşük güç gereksinimi ve bu yük için uygun boyutta bir güç kaynağı olan özel bir sunucu kurmak ve geceleri masaüstünü kapatmak faydalı olabilir.


1
Bazen bilgisayarınızın özellikle gece sessiz kalmasını istersiniz ..
Maxime R.

Sessiz kalmak istiyorsanız, sistemi hiç çalıştırmamak en iyi yoldur. Günlük işlerim için oldukça yüksek bir makinem ve arka plan işlemleri için süpürge dolabındaki bir sunucum var, ikincisinin daha küçük bir güç kaynağı (=> daha az atık ısısı), CPU (=> daha az atık ısısı), grafik kartı ( fikir), ... ve ondemand valiyi kullanır . Geceleri yatak odamda sıfır gürültü var ve sunucu için güç tüketimi, boşta iken masaüstünün yediğinin üçte biri kadar, ben hala paradan tasarruf ediyorum.
Simon Richter

Tabii, katılıyorum ama bu özel durumda Oli, aynı makineyi sunucu ve masaüstüyle kullanıyor.
Maxime R.

3

powernap , bunun gibi şeyler için kullanışlı bir araçtır, güzel olan şey, sisteminizin meşgul olup olmadığını görmek için işlem masanıza bakmaktır, klavyedeki boş zamanınızı değil.

Her valinin güç tasarrufunu ölçtün mü? Simon gibi ben de işin daha hızlı yapılmasına ya da canavar ekran kartı gibi bir şey ayarlamaya çalışılmasına karşı önemli miktarda katkı sağlayacağına kuşku duyuyorum.

powernap, yalnızca vali anahtarını çalıştıracak şekilde yapılandırılabilir veya donanımınız destekliyorsa, gecenin ortasında ihtiyaç duyulana kadar gerçek uykular çekmek için Wake On Lan (WOL) özelliğini kullanır.


1

CPU gidince, valiyi, örneğin cpu frekansı ölçeklendirme monitörü uygulaması ile güç tasarrufu için değiştirebilirsiniz. Ekran kartı başka bir hikaye. ATI kartımın düşük, orta ve yüksek arasındaki performansı ayarlamak için bir düğmesi var / sys olduğunu biliyorum;


1

cpufreqd, yaşadığınız belirli bir sorun için tasarlanmıştır; gündüz ve gece profilleri oluşturabilir ve çalışan programlara göre kuralları belirleyebilirsiniz.

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.