Как отрегулировать скорость вращения вентилятора графического процессора NVIDIA на безголовом узле?

Потому что 09.02.2016 Сэм Клейнман из MongoDB решил, что так будет . Пользователи Debian 7 получают только скрипты van Smoorenburg rc . Пользователи Debian 8 получают только файлы модулей systemd. Никто не получает и того, и другого. Как видите, тогда это подвергалось сомнению. Но с тех пор ничего не было сделано.

Это действительно не подходит для Debian. Напротив, пакеты, созданные разработчиками Debian, созданы по-другому и включают и то, и другое.

Сэм Клейнман из MongoDB, похоже, был тем человеком, с которым можно было бы поговорить.

9
27.05.2017, 15:35
3 ответа

Ниже приведен простой метод, который не требует написания сценариев, подключения поддельных мониторов или возни и может выполняться через SSH для управления вентиляторами нескольких графических процессоров NVIDIA. Он был протестирован на Arch Linux.

Создать xorg.conf

sudo nvidia-xconfig --allow-empty-initial-configuration --enable-all-gpus --cool-bits=7

Будет создан /etc/X11/xorg.confс записью для каждого графического процессора, аналогично ручному методу.

Примечание:Некоторые дистрибутивы (Fedora, CentOS, Manjaro )имеют дополнительные файлы конфигурации (, например, в /etc/X11/xorg.conf.d/или /usr/share/X11/xorg.conf.d/), которые переопределяют xorg.confи устанавливают AllowNVIDIAGPUScreens. Эта опция несовместима с этим руководством. Дополнительные файлы конфигурации должны быть изменены или удалены. Файл журнала X11 показывает, какие файлы конфигурации были загружены.

Альтернатива :Создайте файл xorg.conf вручную

Идентифицируйте PCI ID ваших карт:

nvidia-xconfig --query-gpu-info

Найдите поля PCI BusID. Обратите внимание, что это не то же самое, что идентификаторы шин, указанные в ядре.

В качестве альтернативы выполните sudo startx, откройте/var/log/Xorg.0.log(или любое другое место, указанное startX в своих выходных данных в строке «Файл журнала :» ), и найдите строку NVIDIA(0): Valid display device(s) on GPU-<GPU number> at PCI:<PCI ID>.

Редактировать/etc/X11/xorg.conf

Вот пример xorg.confдля машины с тремя -GPU:

Section "ServerLayout"
        Identifier "dual"
        Screen 0 "Screen0"
        Screen 1 "Screen1" RightOf "Screen0"
        Screen 1 "Screen2" RightOf "Screen1"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BusID          "PCI:5:0:0"
    Option         "Coolbits"       "7"
    Option         "AllowEmptyInitialConfiguration"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BusID          "PCI:6:0:0"
    Option         "Coolbits"       "7"
    Option         "AllowEmptyInitialConfiguration"
EndSection

Section "Device"
    Identifier     "Device2"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BusID          "PCI:9:0:0"
    Option         "Coolbits"       "7"
    Option         "AllowEmptyInitialConfiguration"
EndSection

Section "Screen"
        Identifier     "Screen0"
        Device         "Device0"
EndSection

Section "Screen"
        Identifier     "Screen1"
        Device         "Device1"
EndSection

Section "Screen"
        Identifier     "Screen2"
        Device         "Device2"
EndSection

Значение BusIDдолжно совпадать с идентификаторами шин, которые мы определили на предыдущем шаге.Опция AllowEmptyInitialConfigurationпозволяет запускать X, даже если монитор не подключен. Опция Coolbitsпозволяет управлять вентиляторами. Это также может позволить разгон.

Примечание:Некоторые дистрибутивы (Fedora, CentOS, Manjaro )имеют дополнительные файлы конфигурации (, например, в /etc/X11/xorg.conf.d/или /usr/share/X11/xorg.conf.d/), которые переопределяют xorg.confи устанавливают AllowNVIDIAGPUScreens. Эта опция несовместима с этим руководством. Дополнительные файлы конфигурации должны быть изменены или удалены. Файл журнала X11 показывает, какие файлы конфигурации были загружены.

Редактировать/root/.xinitrc

nvidia-settings -q fans
nvidia-settings -a [gpu:0]/GPUFanControlState=1 -a [fan:0]/GPUTargetFanSpeed=75
nvidia-settings -a [gpu:1]/GPUFanControlState=1 -a [fan:1]/GPUTargetFanSpeed=75
nvidia-settings -a [gpu:2]/GPUFanControlState=1 -a [fan:2]/GPUTargetFanSpeed=75

Для удобства я использую.xinitrc для выполнения настроек nvidia -, хотя, возможно, есть и другие способы. Первая строка выведет каждый вентилятор графического процессора в системе. Здесь я установил вентиляторы на 75%.

Запуск X

sudo startx -- :0

Вы можете выполнить эту команду из SSH. Вывод будет:

Current version of pixman: 0.34.0
    Before reporting problems, check http://wiki.x.org
    to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
    (++) from command line, (!!) notice, (II) informational,
    (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Sat May 27 02:22:08 2017
(==) Using config file: "/etc/X11/xorg.conf"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"

  Attribute 'GPUFanControlState' (pushistik:0[gpu:0]) assigned value 1.

  Attribute 'GPUTargetFanSpeed' (pushistik:0[fan:0]) assigned value 75.


  Attribute 'GPUFanControlState' (pushistik:0[gpu:1]) assigned value 1.

  Attribute 'GPUTargetFanSpeed' (pushistik:0[fan:1]) assigned value 75.


  Attribute 'GPUFanControlState' (pushistik:0[gpu:2]) assigned value 1.

  Attribute 'GPUTargetFanSpeed' (pushistik:0[fan:2]) assigned value 75.

Мониторинг температуры и тактовой частоты

nvidia-smiи nvtopможно использовать для наблюдения за температурой и потребляемой мощностью. Более низкие температуры позволят карте работать на более высоких частотах и ​​увеличить энергопотребление. Вы можете использовать sudo nvidia-smi -pl 150, чтобы ограничить энергопотребление и поддерживать охлаждение карт, или использовать sudo nvidia-smi -pl 300, чтобы позволить им разогнаться. Мой 1080 Ti работает на частоте 1480 МГц при 150 Вт и более 1800 МГц при 300 Вт, но это зависит от рабочей нагрузки. Вы можете контролировать их тактовую частоту с помощью nvidia-smi -qили, точнее, watch 'nvidia-smi -q | grep -E "Utilization| Graphics|Power Draw"'

.

Возврат к автоматическому управлению вентиляторами.

Перезагрузка. Другого способа сделать вентиляторы автоматическими я не нашел.

9
27.01.2020, 20:07

Я написал pip -устанавливаемый скрипт Python, чтобы сделать что-то похожее на предложение @AlexsandrDubinsky .

When you run fans.py, it sets up a temporary X server for each GPU with a fake display attached. Then, it loops over the GPUs every few seconds and sets the fan speed according to their temperature. When the script dies, it returns control of the fans to the drivers and cleans up the X servers.

5
27.01.2020, 20:07

Основываясь на ответах на этот вопрос и похожих вопросах StackExchange, я написал сценарий оболочки, который установит скорость вентилятора на100(или любое другое значение, которое вы хотите )на всем вашим вентиляторам на все ваших графических процессоров на машине.

Этот сценарий предполагает, что на вашем компьютере установлен X11, но вы не используете его для предоставления пользователю графического интерфейса.

/bin/set -gpu -fan -speed.sh:

#!/bin/bash
set -Eeuxo pipefail

# Kill any existing X servers.
killall Xorg || true
sleep 5

# Create a NVIDIA-friendly Xorg config.
nvidia-xconfig -a --cool-bits=28 --allow-empty-initial-configuration --enable-all-gpus

# Start a new X server for nvidia-settings to use.
export XDG_SESSION_TYPE=x11
export DISPLAY=:0
startx -- $DISPLAY &
sleep 5

# Determine the number of GPUs and fans on this machine.
NUM_GPUS=$(nvidia-settings -q gpus | grep -c 'gpu:')
NUM_FANS=$(nvidia-settings -q fans | grep -c 'fan:')

# For each GPU, enable fan control.
for ((i=0; i < NUM_GPUS; i++))
do
    nvidia-settings --verbose=all -a "[gpu:$i]/GPUFanControlState=1"
done

# For each fan, set fan speed to 100%.
for ((i=0; i < NUM_FANS; i++))
do
    nvidia-settings --verbose=all -a "[fan:$i]/GPUTargetFanSpeed=100"
done

# Kill the X server that we started.
killall Xorg || true

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

/etc/systemd/system/set -GPU -вентилятор -speed.service:

[Unit]
Description="Sets the GPU fan speed"

[Service]
Type=oneshot
User=root
ExecStart=/bin/set-gpu-fan-speed.sh

[Install]
WantedBy=multi-user.target

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

systemctl enable set-gpu-fan-speed.service
systemctl start set-gpu-fan-speed.service
0
26.02.2021, 19:22

Теги

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