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 при котором кулер запускается вновь
Вы можете управлять не только кулером процессора, но и любыми другими кулерами, которые есть в вашем системном блоке, для обеспечения приемлимого соотношения температура/шум.
На этом пожалуй всё. Теперь и днём и ночью вас не будет раздражать рёв кулера и не будет тревожить вас или ваших близких 🙂