В одной из предыдущих статей я рассказывал, как посмотреть температуру процессора в Linux. Для этих целей можно использовать утилиту sensors, а для просмотра более подробной информации в графическом интерфейсе есть psensor. За температурой видеокарты тоже нужно следить. Обычно, нагрев видеокарты можно отследить в программах для её тестирования, например в том же Unigine Heaven и в других подобных продуктах, но есть ещё один способ.
Температуру видеокарт Nvidia в Linux можно посмотреть с помощью утилиты, поставляемой вместе с проприетарными драйверами. С её же помощью можно настроить обороты кулера на видеокарте. Таких утилит на самом деле несколько. Рассмотрим их в этой статье.
Содержание статьи
Температура видеокарты в Linux
1. Утилиты sensors и psensor
Набор программ sensors позволяет отображать не только температуру процессора, но и видеокарты. Здесь она отображается как PCI Adapter, однако иногда в этом пункте может отображаться и температура процессора, поэтому будьте внимательны и посмотрите другие способы. Сначала надо установить lm_sensors, откройте терминал и наберите:
sudo apt install lm_sensors
Затем необходимо обнаружить все сенсоры в системе:
sudo sensors-detect
Читайте более подробно об этом в статье про температуру процессора. А сейчас мы посмотрим температуру:
sensors
Или в графическом интерфейсе:
psensor
2. Утилиты Nvidia
Для этого пункта необходимо, чтобы были установлены проприетарные драйверы. Чтобы посмотреть текущую температуру видеокарты, откройте утилиту Nvidia Settings из главного меню системы и перейдите на вкладку Thermal Settings:
Здесь в графе Temperature вы увидите текущую температуру видеокарты. Другой способ посмотреть температуру - утилита nvidia-smi. Она работает только через терминал:
nvidia-smi
Здесь вы увидите количество оборотов кулера и текущую температуру видеокарты. А ещё можно посмотреть только температуру:
nvidia-smi -q -d temperature
Настройка кулера видеокарты
Для того чтобы настроить частоту оборотов кулера, надо использовать утилиту Nvidia Settings. Сначала выполните:
sudo nvidia-xconfig -a --cool-bits=28
Затем установите нужное число оборотов кулера, например 90 процентов:
nvidia-settings -a '[gpu:0]/GPUFanControlState=1' -a '[fan:0]/GPUTargetFanSpeed=90'
Кулер на видеокарте сразу же начнёт вращаться с заданной скоростью. Надеюсь, эта информация была вам полезна.
Статичная скорость кулера это костыль,лишний шум в общем ужас, лучше использовать специализированный софт и настроить обороты согласно температурам. У карт от зеленый в драйверах есть баг (по другому назвать я это не могу) видиокарта которая умеет работать на пасиве постоянно держит высокие частоты тем самым греется, в этом случае если нужная тишина то можно просто заблокировать уровень производительности на самом минимальном. "options nvidia NVreg_RegistryDwords="PowerMizerEnable=0x1; PowerMizerDefaultAC=0x3;" >> /etc/modprobe.d/99-nvidia-registry.conf" Единственный минус если нужна будет вся мощь то придется делать ребут. Я специально брал игровую карту которая без проблем будет работать в простое без включения вертушек, и включать их только при нагрузке но в лине все как всегда)))
А как настроить чтобы не было превышения определенной тем-ры карты? Чтобы карта не перегревалась?
Автор пишет:
"Для того чтобы настроить частоту оборотов кулера, надо использовать утилиту Nvidia Settings. Сначала выполните:
sudo nvidia-xconfig -a --cool-bits=28"
Зачем --cool-bits=28?
Достаточно: --cool-bits=4, описание тут:
https://download.nvidia.com/XFree86/Linux-x86_64/450.57/README/xconfigoptions.html
Ищем на странице:
"Option "Coolbits" "integer"
When "4" (Bit 2) is set in the "Coolbits" option value, the nvidia-settings Thermal Monitor page will allow configuration of GPU fan speed, on graphics boards with programmable fan capability."
После выставления --cool-bits иксы надо перезапустить, ну, или просто комп перезагрузить.
После этого в графическом интерфейсе nvidia-settings в разделе "Thermal Settings" появится чекбокс, установив который, можно в ручную устанавливать обороты вентилятора, просто двигая бегунок мышкой, или вписав нужное число в поле ниже и нажав Apply.
Следует отнестись к этому с ОСОБОЙ ОСТОРОЖНОСТЬЮ И ВНИМАНИЕМ! Я не уверен, что в биосе видео карты есть защита от дурака, и она повысит обороты автоматом при достижении критической температуры. Сам не проверял, кому охота, отпишитесь потом, выжила видюшка или нет =)
Кому лень руками, ниже скриптик, найденный на просторах интернета, хотя, ПО от производителя и само хорошо регулирует обороты, но, всё же есть косяки, из-за которых приходится использовать скрипты.
#!/bin/bash
#sleep 30
export DISPLAY=:0
DELAY=1
MIN_TEMP=60
MAX_TEMP=75
CARDS_NUM=`nvidia-smi -L | wc -l`
echo "Found ${CARDS_NUM} GPU(s) : MIN ${MIN_TEMP}°C - ${MAX_TEMP}°C MAX : Delay ${DELAY}s"
for ((i=0; i /dev/null
if [ "$?" -ne 0 ]; then
exit 1;
fi
done
echo "GPUFanControlState set to 1 for all cards"
while true
do
echo "#################"
echo "$(date +"%d/%m/%y %T")"
for ((i=0; i<$CARDS_NUM; i++))
do
GPU_TEMP=`nvidia-smi -i $i --query-gpu=temperature.gpu --format=csv,noheader`
if [[ $GPU_TEMP $MAX_TEMP ]]
then
FAN_SPEED=100
else
FAN_SPEED=$(( ($GPU_TEMP - $MIN_TEMP)*100/($MAX_TEMP - $MIN_TEMP) ))
fi
# ######
nvidia-settings -a [gpu:$i]/GPUFanControlState=1 > /dev/null
if [ "$?" -ne 0 ]; then
exit 1;
fi
# ######
nvidia-settings -a [fan:$i]/GPUTargetFanSpeed=$FAN_SPEED > /dev/null
echo "GPU${i} ${GPU_TEMP}°C -> ${FAN_SPEED}%"
done
sleep $DELAY
done
пы/сы: Всё на свой страх и риск, естественно..
@Алексей
(https://losst.pro/temperatura-videokarty-v-linux#comment-58790)
"А как настроить чтобы не было превышения определенной тем-ры карты? Чтобы карта не перегревалась?"
Посмотрите эту статью:
https://www.opennet.ru/opennews/art.shtml?num=50180
"Представлены три новых проекта с графическими интерфейсами для оверклокинга (overclock) видеокарт NVIDIA и AMD, позволяющие управлять тактовой частотой и параметрами системы охлаждения, отслеживая изменение температуры и характеристик производительности. "
А как задавать обороты корпусного вентилятора в зависимости от нагрева видеокарты?
Для непрерывного считывания показателей датчиков c выводом в терминал:
~$ watch sensors
У вас опечатка, должно быть:
sudo apt install lm-sensors