Насильственно underclocking ночью

Мой рабочий стол остается все время. Это действует как сервер и также выполняет другие полусущественные домашние задачи. В течение дня это использует установку OnDemand CPU. Это по существу просто масштабирует частоту ЦП, поскольку ей нужен он, и это работает действительно хорошо на меня.

В ночное время это мелькает вокруг. Конечно, большую часть времени это бездействует вперед в низкой мощности, но иногда, это будет расти, чтобы сделать что-то. Я быть бы, это осталось на PowerSave, и задачи были просто вынуждены взять немного дольше для завершения.

Кроме того, у меня есть карта Nvidia (GTX 580), который может использовать о том же количестве энергии, как небольшая африканская деревня использует через год, когда это хочет к (впивается взглядом в Minecraft). По неизвестным причинам (несомненно, что-то происходящее на рабочем столе), это растет, вентиляторы кажутся, что завышают цену для увольнения лазеров в космос. В ночное время я хотел бы к underclock карту насколько это пойдет.

Я полагал, что простой управляемый корнем сценарий крона проталкивает их, но мое рабочее время является переменным. На прошлой неделе у меня была рабочая неделя почти 70 часов, таким образом, я бодрствовал очень рано и все еще очень поздно каждый день. Если бы система гудела вперед на super-underclock режим, я был бы разъярен. Есть ли что-то, что я мог сделать для высказывания, "Underclock если:

  • Это между 22:00 и 9:00
  • Не было никакой мыши/действия клавиатуры в течение 10 минут
  • Нет проигрывания фильма

Если одно из тех условий не верно, underclock должен вернуться немедленно. Я не хочу ожидать сценария крона для прихода для пробуждения компьютера от его дремоты. Точно так же, как только все те действительно становятся верными, это должно вернуться ко сну.

Каковы мои опции?

23
задан 6 June 2011 в 04:31

6 ответов

Вот программа, которая делает то, что Вы хотите:

#!/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, чтобы узнать, играет ли фильм. Это также влияет на музыку.

19
ответ дан 23 November 2019 в 01:28

Можно вызвать использование масштабирования CPU:

cpufreq-selector -f [frequency]

Существует еще несколько опций (т.е. определенный CPU или выбор управления, а не скорости), Это действительно предполагает, что Ваша материнская плата/CPU позволяет Ubuntu вручную управлять масштабированием (по-видимому, это не всегда имеет место.)

Остальные могут быть применены с помощью сценария, однако Вы довольно требовательны из него ^_^. Если Вам нужен мгновенный ответ, что я думаю, что у Вас должно быть что-то периодически опрос Вашей системы. От моего некоторые, что ограничило, знание, там являются ничем, что объявляет об условиях, которые Вы указали.

Место, чтобы начать заниматься расследованиями, однако, является экранной заставкой. Это включает после периода набора неактивности (который также был бы верен в 22:00 - 9:00) и может быть запрещен проигрывателями фильмов. При создании экранной заставки, которая уменьшила масштаб ЦП при инициализации и восстановила его на следе, то Вы имели бы то, что Вы хотите.

К сожалению, это - насколько я могу взять Вас, ничего не зная об экранных заставках и как они работают.

Удачи.

5
ответ дан 23 November 2019 в 01:28

Вы не можете на самом деле сэкономить больше электроэнергии при помощи powersave регулятора.

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

В зависимости от Вашего приложения может также стоить установить выделенный сервер с более низкими требованиями к питанию и правильно определенным размеры источником питания для той загрузки, и просто выключить рабочий стол ночью.

4
ответ дан 23 November 2019 в 01:28

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

Вы измерили powersaving для каждого регулятора? Как Simon я - скептик это, которое составило бы в целом существенное количество по сравнению с получением работы, сделанной быстрее или попытка настроить что-то как видеокарта монстра.

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

3
ответ дан 23 November 2019 в 01:28

Насколько ЦП идет, можно просто переключить регулятор на powersave с, например, апплет монитора частотного масштабирования CPU. Видеокарта является другой историей. Я знаю, что моя карта ATI имеет кнопку в/sys для корректировки производительности между низким, среднее, и высоко, но играющий с ними, кажется, не имеет значения и часто заставляет видео становиться нестабильным.

1
ответ дан 23 November 2019 в 01:28

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

1
ответ дан 23 November 2019 в 01:28

Другие вопросы по тегам:

Похожие вопросы: