Примусово розігруючи вночі


23

Мій робочий стіл постійно працює. Він діє як сервер, а також виконує інші напівсуттєві побутові завдання. Протягом дня він використовує налаштування процесора OnDemand. Це по суті просто масштабує частоту процесора, як це потрібно, і це дуже добре працює для мене.

У нічний час вона заграє. Звичайно, більшу частину часу він простоює з низькою потужністю, але час від часу він буде набігати, щоб щось зробити. Я вважаю за краще, щоб він залишився на PowerSave, а завдання просто змушені були зайняти трохи більше часу.

Крім того, у мене є карта Nvidia (GTX 580), яка може споживати приблизно стільки ж енергії, скільки використовує маленьке африканське село за рік, коли хоче (гляне на Minecraft). З незрозумілих причин (без сумніву, щось відбувається на робочому столі), це підіймається, вентилятори звучать так, ніби вони заряджаються, щоб зарядитись лазерами у космос. У нічний час я хотів би розігнати карту, наскільки вона піде.

Я розглядав простий коронний скрипт для запуску, але їх робочий час мінливий. Минулого тижня у мене був майже 70-годинний робочий тиждень, тож я щодня вставав дуже рано, а ще дуже пізно. Якби система підлаштовувалася в режимі супер-розгону, я був би розлючений. Чи можу я щось сказати: "Underlock, якщо:

  • Це між 22:00 та 9:00
  • Протягом 10 хвилин не було жодної активності миші / клавіатури
  • Немає фільму

Якщо одне з цих умов не відповідає дійсності, андерколок потрібно негайно відновити . Я не хочу чекати кронового сценарію, щоб розбудити комп'ютер від його сну. Так само, як тільки все це стане правдою, воно повинно повернутися до сну.

Які мої варіанти?


На якій версії ви зараз перебуваєте? Поки я не зможу повернутися додому до своєї машини, згадаю, ви повинні мати можливість підключити події, використовуючи події acpi або пакет інструментів pm.
рідний схід

Відповіді:


19

Ось програма, яка робить те, що ви хочете:

#!/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()

Зверніть увагу на свої переваги:

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

Я використовую pulseaudio, щоб дізнатися, чи відтворюється фільм. Це також впливає на музику.


5

Ви можете змусити масштабувати процесор, використовуючи:

cpufreq-selector -f [frequency]

Є ще кілька варіантів (наприклад, конкретний процесор або вибір керування, а не швидкість). Це передбачає, що ваша материнська плата / процесор дозволяє Ubuntu вручну контролювати масштабування (мабуть, це не завжди так).

Решту можна застосувати за допомогою сценарію, однак ви досить вимогливі до нього ^ _ ^. Якщо вам потрібна миттєва відповідь, я думаю, вам доведеться періодично щось опитувати вашу систему. З моїх, дещо обмежених, знань немає нічого, що оголошує вказані вами умови.

Однак місце для початку дослідження - заставка. Це вмикається після встановленого періоду бездіяльності (що також би було правдою в 10 вечора до 9 ранку) і може бути гальмованим кінопрогравачами. Якщо ви зробили заставку, яка зменшила процесор при ініціалізації, і відновила його після пробудження, тоді ви отримаєте те, що хочете.

На жаль, це наскільки я можу вас взяти, нічого не знаючи про заставки та те, як вони працюють.

Удачі.


4

Ви фактично не можете заощадити більше енергії, використовуючи гувернатор .

Залежно від вашої завантаженості, швидко закінчити робочий предмет, витрачаючи трохи більше енергії, а потім повернутися до стану глибокого сну, а не працювати тривалий час із зменшеним енергоспоживанням, може дати кращі результати.

Залежно від вашої програми, можливо, варто також встановити виділений сервер із меншими потребами в енергії та належним чином розміреним джерелом живлення для цього навантаження та просто вимкнути робочий стіл вночі.


1
Іноді просто хочеться, щоб ваш комп'ютер залишався тихим, особливо вночі ..
Максим Р.

Якщо ви хочете тихо, найкращий спосіб не працювати з системою. У мене досить гучна машина для щоденної роботи та сервер у шафі для мітли для фонових завдань, останній має менший джерело живлення (=> менше відпрацьованого тепла), процесор (=> менше відпрацьованого тепла), відеокарта (ви отримуєте ідея), ... і використовує губернатор вимоги . У моїй спальні вночі нульовий шум, а споживання електроенергії для сервера становить приблизно третину того, що їсть робочий стіл у режимі очікування, тому я все-таки економлю гроші.
Саймон Ріхтер

Звичайно, я згоден, але в цьому конкретному випадку Олі використовує ту саму машину, що і сервер і настільний ПК.
Максим Р.

3

powernap - це зручний інструмент для подібних речей, приємно, що це дивиться на вашу таблицю процесів, щоб побачити, чи ваша система зайнята, а не час простою на клавіатурі.

Ви оцінювали економію повноважень кожного губернатора? Як і Саймон, я скептично налаштований на те, що це призведе до значної кількості порівняно з тим, що швидше виконати роботу або намагатись налаштувати щось на кшталт відеокарти монстра.

powernap може бути налаштований так само, щоб виконати перемикач губернатора або, можливо, якщо ваша апаратура підтримує його, використовуйте функцію Wake On Lan (WOL), щоб здійснити справжній сон в середині ночі, поки це не буде потрібно.


1

Що стосується процесора, ви можете просто переключити губернатор на powerave за допомогою, наприклад, аплету монітора масштабування частоти процесора. Відеокарта - це вже інша історія. Я знаю, що на моїй картці ATI є регулятор / сис для регулювання продуктивності між низьким, середнім та високим, але, схоже, що змішання з ними не має жодних змін і часто призводить до того, що відео стає нестабільним.


1

cpufreqd розроблений для конкретної проблеми, яка виникає, ви можете створювати профілі дня та ночі та встановлювати правила на основі запущених програм.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.