Gentoo: усмиряем крикливые кулеры

В связи с переездом (по этой причине и не часто в блог пишу, т.к. и на основной работе и на дополнительной и на учёбе занят по самые помидоры :)) у меня появился ещё один сервер, крайне простенькая машинка, по этому не хотелось переводить большие деньги на хорошее пассивное охлаждение, и было принято решение усмирить боксовый интеловский кулер программно. Для этого была использована программа fancontrol, которая входит в состав пакета lm-sensors (мы уже ею использовали, для мониторинга температуры процессора в zabbix).

Если вы ещё не устанавливали lm-sensors, сделаем это:

korp # emerge sys-apps/lm_sensors

Инициируем сенсоры

korp # sensors-detect

Запускаем

korp # /etc/init.d/lm_sensors start

Теперь что бы посмотреть температуру и вольтаж различных компонентов, достаточно набрать

korp # sensors
coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +66.0°C  (high = +86.0°C, crit = +100.0°C)

w83627dhg-isa-0290
Adapter: ISA adapter
Vcore:        +1.24 V  (min =  +0.00 V, max =  +1.74 V)
in1:          +1.86 V  (min =  +0.02 V, max =  +1.70 V)  ALARM
AVCC:         +3.30 V  (min =  +2.98 V, max =  +3.63 V)
+3.3V:        +3.30 V  (min =  +2.98 V, max =  +3.63 V)
in4:          +1.60 V  (min =  +0.03 V, max =  +0.10 V)  ALARM
in5:          +1.58 V  (min =  +1.10 V, max =  +1.62 V)
in6:          +1.46 V  (min =  +1.58 V, max =  +1.02 V)  ALARM
3VSB:         +3.30 V  (min =  +2.98 V, max =  +3.63 V)
Vbat:         +3.25 V  (min =  +2.70 V, max =  +3.30 V)
fan1:           0 RPM  (min = 10546 RPM, div = 128)  ALARM
fan2:        1548 RPM  (min = 2280 RPM, div = 8)  ALARM
fan3:           0 RPM  (min = 10546 RPM, div = 128)  ALARM
fan4:           0 RPM  (min = 10546 RPM, div = 128)  ALARM
fan5:           0 RPM  (min = 10546 RPM, div = 128)  ALARM
temp1:        +46.0°C  (high = +64.0°C, hyst = +67.0°C)  sensor = thermistor
temp2:        +59.0°C  (high = +90.0°C, hyst = +70.0°C)  sensor = diode
temp3:        +46.5°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor
cpu0_vid:    +0.000 V
intrusion0:  ALARM

В данном случае temp2 - это температура процессора, а fan2 - это скорость вращения процесорного кулера.
Теперь нам нужно программно найти наш кулер:

korp # pwmconfig
Found the following fan sensors:
   hwmon1/device/fan1_input     current speed: 0 ... skipping!
   hwmon1/device/fan2_input     current speed: 4821 RPM
   hwmon1/device/fan3_input     current speed: 0 ... skipping!
   hwmon1/device/fan4_input     current speed: 0 ... skipping!
   hwmon1/device/fan5_input     current speed: 0 ... skipping!

После того как pwmconfig найдёт кулер, он захочет опросить его на тему скоростных режимов

Testing pwm control hwmon1/device/pwm2 ...
  hwmon1/device/fan2_input ... speed was 4821 now 847
    It appears that fan hwmon1/device/fan2_input
    is controlled by pwm hwmon1/device/pwm2
Would you like to generate a detailed correlation (y)? y
    PWM 255 FAN 4821
    PWM 240 FAN 4821
    PWM 225 FAN 4821
    PWM 210 FAN 4821
    PWM 195 FAN 4560
    PWM 180 FAN 4560
    PWM 165 FAN 3924
    PWM 150 FAN 3668
    PWM 135 FAN 3668
    PWM 120 FAN 3068
    PWM 105 FAN 2678
    PWM 90 FAN 2678
    PWM 75 FAN 2250
    PWM 60 FAN 1670
    PWM 45 FAN 1328
    PWM 30 FAN 1328
    PWM 28 FAN 998
    PWM 26 FAN 958
    PWM 24 FAN 958
    PWM 22 FAN 917
    PWM 20 FAN 888
    PWM 18 FAN 888
    PWM 16 FAN 852
    PWM 14 FAN 823
    PWM 12 FAN 823
    PWM 10 FAN 807
    PWM 8 FAN 784
    PWM 6 FAN 784
    PWM 4 FAN 781
    PWM 2 FAN 777
    PWM 0 FAN 777

После этого он захочет скофигурировать кулер для дальнейшей работы. Здесь он попросит указать 3 параметра:
- минимальная температура, ниже которой вентилятор должен вращаться на минимальной скорости
- максимальная температура, выше которой вентилятор должен вращаться на максимальной скорости
- скорость вентилятора, которая будет использоваться, когда температура превышает верхний предел температуры процессора (по сути это нормальная скорость вентилятора, при которой кулер будет всё время работать)

The fancontrol script can automatically respond to temperature changes
of your system by changing fanspeeds.
Do you want to set up its configuration file now (y)? y
What should be the path to your fancontrol config file (/etc/fancontrol)? 
Loading configuration from /etc/fancontrol ...

Select fan output to configure, or other action:
1) hwmon1/device/pwm2  3) Just quit	      5) Show configuration
2) Change INTERVAL     4) Save and quit
select (1-n): 1

Devices:
hwmon0/device is coretemp
hwmon1/device is w83627dhg

Current temperature readings are as follows:
hwmon0/device/temp2_input	65
hwmon1/device/temp1_input	45
hwmon1/device/temp2_input	57
hwmon1/device/temp3_input	44

Select a temperature sensor as source for hwmon1/device/pwm2:
1) hwmon0/device/temp2_input
2) hwmon1/device/temp1_input
3) hwmon1/device/temp2_input
4) hwmon1/device/temp3_input
5) None (Do not affect this PWM output)
select (1-n): 3

Enter the low temperature (degree C)
below which the fan should spin at minimum speed (20): 

Enter the high temperature (degree C)
over which the fan should spin at maximum speed (60): 

Enter the PWM value (0-255) to use when the temperature
is over the high temperature limit (255): 60
После этого нам останется сохранить конфигурационный файл
Select fan output to configure, or other action:
1) hwmon1/device/pwm2  3) Just quit	      5) Show configuration
2) Change INTERVAL     4) Save and quit
select (1-n): 4

Saving configuration to /etc/fancontrol...
Configuration saved

И запустить fancontrol

korp # /etc/init.d/fancontrol start

А так же добавить в автозапуск

korp # rc-update add fancontrol default

Если в дальнейшем вам потребуется внести какие то изменения в настройки (допустим вы указали слишком низкую скорость вращения вентилятора и процессор перегревается), вам достаточно отредактировать файл /etc/fancontrol (либо какой то иной, если вы указали его при первоначальном конфигурировании). Необходимые вам параметры:
- INTERVAL: частота (в секундах) опроса датчиков температуры
- MINTEMP: температура при которой нужно высключать кулер на процессоре
- MAXTEMP: температура при которой кулер надо включать на максимальную скорость (которую мы указали)
- MINSTOP: значение PWM при котором останавливается кулер
- MINSTART: значение PWM при котором кулер запускается вновь

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

На этом пожалуй всё. Теперь и днём и ночью вас не будет раздражать рёв кулера и не будет тревожить вас или ваших близких 🙂

Добавить комментарий