Ядро & Оборудование
   828

Жара в Морровинде, или Квест про кулер на Nvidia.

Захотелось мне тряхнуть стариной - погонять в теплый ламповый Morrowind.
Торрент, исошник, плейонлинукс, сетап.екзе, далее-далее-далее, лончер-опции-1280х960-игра, чтотонетак, winecfg, повторить лончер-опции… Короче, встал Morrowind. «Новая игра». Тыц. Заставка, мутный ролик про меня, Избранного Спасти Мир. Ну, поехали…
Джиуб, еще не святой. "-Говорят, мы уже приплыли в Морровинд. Нас выпустят, это точно! Тихо, стражник идёт..."
…… ээээ, чёзанах! Черный экран, монитор мигает лампочой- «нет сигнала». Из колонок по прежнему музыка Джереми Соула и шаги охранника. «Мы прибыли туда, где Вас выпустят. Следуйте за мной.»
А… куда следовать-то? Экран потух, выйти из игры клавишами не выходит, горячие клавиши иксов в вайне не срабатывают… «Ну и чо??? Выпустите меня! ВолкИ позорные! Свободу Нереварину!!!»
Не выпускают. Даже ведьмачий знак АльтКонтрДел бесполезен. Ну что ж, резет.

И так каждый раз, раньше или позже. В логе отладки ничего внятного нет.
Наконец замечаю что при работающей игре подозрительно громко шумит какой-то кулер в системнике. Смотрю на датчики вентиляторов проца и корпуса- нормально. Игра меж тем в очередной раз вылетает, Перезагружаюсь, сразу запускаю nvidia-settings (то что в меню называется «NVIDIA X Server Settings»), гляжу на «Thermal Settings»… Вот оно! Обороты кулера и температура чипа весьма высоки, хотя постепенно падают. Похоже, видеокарта отключается от перегрева. Ну да, Морровинд- место жаркое. Все же на вулкане живем, это вам не Скайрим…
Запускаю игру, температура видеочипа стремительно прыгает вверх, а кулер разгоняется неспешно, явно не успевая охладить чип. На отметке 96С градусов срабатывает защита и видеокарта опять отключается.
Достаю системник, берусь за отвертку. Ну, я так и предполагал… Видеокарта стоит радиатором вниз, крепление радиатора- с пружинками. Радиатор от видеочипа отвалился и болтается на ослабевших пружинках винтов крепления. Термопаста высохла. Кулер-то крутится, а толку чуть.
Вытряхиваю из корпуса пыль- давно пора, лет пять как не заглядывал… Снимаю видеокарту. Разбираю, меняю термопасту, подтягиваю винты радиатора, фиксирую локтейтом. Собираю обратно.
Запускаю комп. О, как всё изменилось- в холостом режиме nvidia-settings показывает тнмпературу 30-35 градусов, обороты кулера — ровно 30%. С игрой- около 60-70С и кулер 80%. А если нагрузить? Запускаю
gputest /test=pixmark_volplosion, температура медленно растет до 84С, кулер быстрее 80 не разгоняется.
Хорошо! А если выключить нагрузку? Температура быстро снижается до 60С, потом кулер с 80% переходит сразу на 30%, скорость падения температуры снижается, и за пару минут опускается до 35С. Снова запускаю gputest, вижу такую картину: температура возрастает быстро и линейно при постоянных оборотах кулера в 30% вплоть до 60С. Потом кулер скачком разгоняется до 80%, рост температуры замедляется, но всё-же через минуту температура доходит до 84С. И всё стабилизируется. 84С температура и 80% обороты кулера. Дальше не растёт, даже если добавить нагрузки запустив несколько штук gputest.
Отлично!

Но…

Мне не очень нравится как кулер видеокарты автоматически выбирает обороты. Конечно, при приближении к опасным температурным значениям он разгоняется и свою работу делает, но в Морровинд играть мешает- температура в игре гуляет как раз около порога его режимов, и кулер постоянно переключается с тихого режима на высокоскоростной. Стоишь спокойно- тишина. Побежал, подпрыгивая или кастанул фаербол в скального наездника- кулер взвыл. Убил гада- через несколько секунд кулер снова затих, переключившись в медленный режим. В общем, основную музыкальную тему я слышу нормально, а боевую музыку- с аккомпанементом завывающего кулера. Отвлекает. Уж лучше бы он постоянно выл, что-ли…

А что, можно и так. Только вот в nvidia-settings опция ручного управления оборотами кулера по дефолту заблокирована. Что ж, начинается акробатика с кульбитами. А ну-ка…

Создаю файлик /etc/X11/xorg.conf.d/30-nvidia.conf


Section "Device"
    Identifier "Device 0"
    Driver     "nvidia"
    VendorName "NVIDIA Corporation"
    BoardName  "IDENTIFIER FOR YOUR GPU"
    Option     "Coolbits" "4"
EndSection


Перегружаюсь, смотрю в nvidia-settings- порядок, кульбит сработал. На вкладке «Thermal Settings» появилась возможность ручного регулирования оборотов кулера. Это хорошо, но вдруг где-то под Гнисисом налетят на меня штук пять скальных наездников, парочка гончих и компания бандитов-ашлендеров? Или запущу игру, а выставить повышенные обороты в nvidia-settings тупо забуду? Температура поднимется, а кулер на постоянных оборотах может и не справится. Как-бы видяху не сжечь… В NVIDIA дураков мало, не зря они эту опцию заблокировали!
Можно, конечно, кинуть в автозагрузку скрипт с командой

"nvidia-settings -a [gpu:0]/GPUFanControlState=1 -a [fan:0]/GPUCurrentFanSpeed=80"

чтобы включить эту опцию и выставить обороты кулера в 80%…
Но это решит лишь половину задачи. Есть ведь и обратный вариант: не всегда же мне играть хочется. А даже если хочется- выйду я на минутку из игры, отвлекусь часа на три- а кулер так и будет вхолостую воздух молотить? Нет, автоматизация нужна не половинчатая, а именно полная.

Хорошо что в АУРе есть такая утилитка- nvfancontrol. Правда чтобы работала ее еще настраивать нужно. Что-ж делать, придется заморочиться.

yaourt -S nvfancontrol

при установке ругается на ключ, но тут всё как обычно, поможет

gpg --recv-keys 44EB0D4FC6E01280

Сперва посмотрим справку, там все просто:


$ nvfancontrol -h
Usage: nvfancontrol [options]

Options:
    -d, --debug         Enable debug messages
    -l, --limits LOWER,UPPER
                        Comma separated lower and upper limits, use 0 to
                        disable, default: 20,80
    -f, --force         Always use the custom curve even if the fan is already
                        spinning in auto mode
    -m, --monitor-only  Do not update the fan speed and control mode; just log
                        temperatures and fan speeds
    -j, --json-output   Print a json representation of the data to stdout
                        (useful for parsing)
    -t, --tcp-server [PORT]
                        Print a json representation of the data over a tcp
                        port. Can be optionally followed by the port number
                        over which the server will listen for incoming
                        connections
    -h, --help          Print this help message


Можно запустить его как обычную команду в debug-режиме и посмотреть как он работает


$ nvfancontrol -d
WARN - No config file found; using default curve
DEBUG - Curve points: [(41, 20), (49, 30), (57, 45), (66, 55), (75, 63), (78, 72), (80, 80)]
INFO - NVIDIA driver version: 390.42
INFO - NVIDIA graphics adapter #1: GeForce GTX 550 Ti
DEBUG - Fan is enabled on auto control; doing nothing
DEBUG - Temp: 34; Speed: 1440 RPM (30%); Load: 2%; Mode: Auto


Всё здорово, но стандартная шкала «температура-обороты» несколько странная, и лучше все-же создать свой конфигурационный файл ~/.config/nvfancontrol.conf Например, такой:


30    30
40    40
50    50
60    60
70    70
80    80
85    90
90    100


Проверим.


$ nvfancontrol -d
DEBUG - Curve points: [(30, 30), (40, 40), (50, 50), (60, 60), (70, 70), (80, 80), (85, 90), (90, 100)]
INFO - NVIDIA driver version: 390.42
INFO - NVIDIA graphics adapter #1: GeForce GTX 550 Ti
DEBUG - Fan is enabled on auto control; doing nothing
DEBUG - Temp: 34; Speed: 1440 RPM (34%); Load: 1%; Mode: Auto


Вот, теперь шкала более внятная.

Проверим в деле. В окошке терминала запустим nvfancontrol -fd и оставим работать.
Запустим nvidia-settings. Опция «Enable GPU Fan Settings» должна включиться автоматически, за это отвечает ключ -f. Теперь запустим gputest /test=pixmark_volplosion и посмотрим как работает кулер под нагрузкой. Смотреть можно и в терминальном окне с запущенным nvfancontrol, и в nvidia-settings. Но в nvidia-settings будет гораздо нагляднее. Обороты кулера должны изменяться в соответствии с нашей шкалой, ползунок «Fan 0 speed» — будучи передвинут куда-либо вручную должен отскакивать обратно, снятая вручную галочка «Enable GPU Fan Settings» — восстанавливаться.

У меня так оно и заработало. Правда, полностью протестировать всю шкалу не удалось- со свежей термопастой и вычищенным от пыли радиатором карта напрочь отказывалась греться выше 84С под любой нагрузкой. Ну и ладно, будет запас на будущее.

До полной автоматизации осталось всего пара шагов. Нужно всё зафиксировать и запустить. И лучше не просто так, а в виде сервиса.
Тут тоже тонкости. Сам nvfancontrol использует библиотеку xnvctrl, а она без запущенных иксов не работает. Значит, запускать сервис нужно после запуска иксов, а иксы запускаются от пользователя. Хорошо что сервис можно запустить и так, это в общем не сложнее чем стартовать обыкновенный системный сервис.

В каталоге ~/.config/systemd/user создадим новый юнит- текстовый файл с именем nvfancontrol.service


[Unit]
Description="NVIDIA Dynamic fan control"
After=graphical.target

[Service]
Type=simple
ExecStart=/usr/bin/nvfancontrol -f

[Install]
WantedBy=default.target


Потом в терминале стартуем его


systemctl --user enable nvfancontrol.service
systemctl --user daemon-reload
systemctl --user start nvfancontrol.service

и проверим запустился ли он

[mmk@tal02 ~]$ systemctl --user status nvfancontrol.service
● nvfancontrol.service - "NVIDIA Dynamic fan control"
   Loaded: loaded (/home/mmk/.config/systemd/user/nvfancontrol.service; enabled; vendor preset: enabled)
   Active: active (running) since Th 2018-04-12 18:38:29 MSK; 1h 18min ago
 Main PID: 1090 (nvfancontrol)
   CGroup: /user.slice/user-1000.slice/user@1000.service/nvfancontrol.service
           └─1090 /usr/bin/nvfancontrol -f

апр 12 18:38:29 tal02 systemd[954]: Started "NVIDIA Dynamic fan control".
апр 12 18:38:29 tal02 nvfancontrol[1090]: INFO - NVIDIA driver version: 390.42
апр 12 18:38:29 tal02 nvfancontrol[1090]: INFO - NVIDIA graphics adapter #1: GeForce GTX 550 Ti


Ага, запустился. В «Диспетчере задач» должен появиться новый процесс с именем "nvfancontrol -f"

Но такой сервис сам собою не стартует, поэтому еще потребуется кинуть в автозагрузку команду
systemctl --user start nvfancontrol.service или скрипт с этой командой, зависит от окружения.

Перезагрузимся. Заглянем в nvidia-settings. Всё должно работать так как работало когда мы запускали nvfancontrol -fd вручную.

Всё, теперь автоматизация полная, кулер работает именно так как я и хотел- плавно поднимает обороты вслед за растущей температурой и так же плавно их опускает при снижении нагрузки на видеочип. Примерно до 50% его абсолютно не слышно, далее шум плавно нарастает и при снижении нагрузки так-же плавно стихает, резких рывков уровня шума больше нету, и я уверен что при тяжелых моментах в игре кулер сделает все что сможет, но аварийных вылетов графики по перегреву не допустит. И в то же время при работе компьютера в обычном режиме кулера видеокарты совершенно не слышно.
Красота!

Результатом я вполне доволен- уже дошел до Вивека. Я, блин, стану лордом Нереварином и главой всех гильдий, и никакие кулеры меня не остановят! И пусть ординаторы следят за мной и обзывают «ничтожеством» — я еще сочиню специально для них заклинание вроде ФузРоДаха! А этот бешеный чупачупс ДаготУр непременно получит напророченных ему грандиознейших люлей! И не раз, а дважды. Во имя Азуры, королевы Заката и Рассвета!
?
Правильные ответы начинаются с правильных вопросов.

7 комментариев

avatar
я вот смотрю линуксаводам нравится игры от «tes», «ведьмак серия» и «фаллаут серия», это что у вас за традиций такие!?
везде где упоминают линукс, так сразу же там намёки на эти игры есть… странные вы люди… на винде люди обо всех играх разговаривают, а у вас всего о 3-ёх — 4-ёх серий игр говорят… странный вы народ…
0
avatar
Ну, если судить по трудовой биографии- я совсем не линуксоид.
Спойлер!
Наоборот, прожженый виндузятник, каких мало. Всю жизнь работал в совершенно не связанных с IT бизнес-структурах, а там винда везде считай без альтернатив. Последняя сетка, которой я рулил ведущим админом- это связанные в один лес Active Directory домены нескольких предприятий среднего по размерам холдинга. Раскиданные по всей стране. Несколько заводов, магазины от довольно крупных до ларьков, бетоно-растворные узлы, стройки, дизайн-студии, офисы… Несколько тысяч клиентских устройств, пара десятков подсетей, несчитано активки, десятка три серверов. Всё это работало под разнообразными виндами. От 98й и W2K в заводском оборудовании и торговых POS-терминалах, XP на ноутах, W7 на офисных машинах. И конечно Win2003S в серверах доменов и центральной серверной. Естественно, VPN. Постоянная репликация и объединение доменов. Зарезанные права у юзеров, принудительные централизованные обновления, общая антивирусная защита, групповые политики, сквозная авторизация е-токенами, в интернет по паспорту… Служебные записки на каждый чих, на всё что в розетку воткнуто есть лицензии, раз в год инвентаризация железа и софта, своя служба поддержки… короче все что положено. Мечта Билли Гейтса. Этакая маленькая е-диктатура. И я, вроде местного е-Мугабе. Другой системы тогда не знали- слишком уж быстро развивалась контора, нужно было все держать под контролем.
Так что Винду я знаю будьте-нате, причем на многих уровнях, сертификатов девать некуда. Ну, возможно сейчас слегка отстал- бросил я это дело, не вечно же с бейджиком на лацкане по семинарам мотаться и в окошки учета трафика тупить…
Но и тогда я с удовольствием играл в TES. И первого Ведьмака тоже успел застать. Под виндой тогда играл, конечно. Почти все мы здесь выкресты из Рэдмонта.


И Ваш вопрос «почему где Linux там и TES?» — озадачил. Как и ответить-то… Ну, если в двух словах, то пожалуй так: они внутренне похожи. До того что пользователей на совместимость с Линуксом можно проверять при помощи теста Морровиндом. :)

Пожалуй, стоит объяснить подробней.
Миры «The Elder Scrolls» или «Ведьмака», как и мир Linux — осмысленно сложны и в рамках своих вселенных бесконечно разнообразны. В них можно жить вечно, здесь невозможно устать от рутины. Но при этом в них отсутствует бестолковый ералаш противоречащих друг другу концепций. Они внутренне логичны. При этом широта возможностей этих продуктов, если судить хотя-бы по уже реализованным проектам- потрясает. Ага, моды TES и дистры Линукса, я об этом. Плюс — Open_World & Cotstruction_Set в играх и Open_Source в ПО- несомненное сходство.
Мир Windows и большинства других игр — либо бессмысленно усложнён, либо казуально упорядочен. Разнообразия конечно больше, но внутренняя логика что игр, что ПО- порою отсутствует. На поверхности-то всё наоборот- тут скорее диктатура и строгости. Это декларируется, как декларируется и «простота в использовании», «низкий порог вхождения», «интуитивный интерфейс»- что, если вдуматься, уже странно- порядок при заявленной широте возможностей всё это исключает. Где-то врут маркетологи- либо просто, но тупо, либо продвинуто но сложно. А вникни поглубже, оцени их работу под настоящей нагрузкой- боже, ну и бардак обнаружится… Из всех щелей полезут баги, кругом увидите бесконечные заплатки, костыли и дыры. Что в играх, что в системном ПО. Это я Вам как MSP и даже как MSCE заявляю, а совсем не как сектант-пингвинятник. :)
Хотя без исключений не обходится. Microsoft Flight Simulator- вещь просто отличная. Но все-же это исключение, которое… ну Вы в курсе.

Для иллюстрации моих мыслей посмотрите, plz, хороший ролик про Morrowind. Он хоть и фанатский но весьма смешной. Особенно первая часть, где автор рассказывает о своём первом опыте знакомства с TES. Я когда смотрел, почему-то вспоминал свои первые попытки что-то сделать -ну хоть нормально установить!- c Linux. Если не ошибаюсь, это был ASPLinux-7. Мне было проще, был опыт работы с фряхой и консолями маршрутизаторов. Но в целом ощущения были весьма похожи. Пару лет после этого я шарахался от слова Linux как черт от ладана. А потом познал истину, ибо Патрег- ваистену Бох! :)
Последний раз редактировалось
?
Правильные ответы начинаются с правильных вопросов.
+1
avatar
А OpenMW не пробовал? Вроде играть уже можно.
0
avatar
Пробовал года три назад. Но так и не не понял смысла- зачем он если Морровинд прекрасно заводится под вайном?
?
Правильные ответы начинаются с правильных вопросов.
0
avatar
Чтобы его можно было прекрасно запускать без вайна )
Вот ТУТ еще почитать можно.
0
avatar
Мне без Вайна все равно не обойтись, у меня под ним кое-что узкопрофессиональное запускается. Так что чего уж тут выбирать, мне проще и Морру под ним запускать.
?
Правильные ответы начинаются с правильных вопросов.
0
avatar
Дополнение по итогам эксплуатации.

Выяснилось следующее:
1. В видеокарте прошит лимит на обороты вентилятора- не ниже 30% и не выше 80% оборотов.
2. Не совсем удачно выбрал значения в конфиге ~/.config/nvfancontrol.conf, можно лучше.
Сделал так:
1. Команду в юните ~/.config/systemd/user/nvfancontrol.service переписал как
ExecStart=/usr/bin/nvfancontrol -l 0 -f
флаг -l 0 сбрасывает ограничения на обороты кулера.

2. Таблицу ~/.config/nvfancontrol.conf тоже переписал, теперь так:
30    24
40    30
50    40
60    50
70    65
80    80
85    90
90    100


Стало тише без ущерба охлаждению.
Теперь наконец всё идеально. :)
Последний раз редактировалось
?
Правильные ответы начинаются с правильных вопросов.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.