У меня есть Thinkpad x201, и он очень быстро перегревается из-за температуры окружающей среды и в конечном итоге убивает себя без предупреждения (и это действительно раздражает меня).
Снаружи есть 34 градуса Цельсия, в то время как компьютер поднимает температуру до 80 градусов без важных задач и достигает (с 1 градусом в секунду) до 100 градусов с более тяжелой задачей.
Я следовал рекомендациям, чтобы запустить вентилятор раньше, чтобы он поддерживал постоянную температуру или когда он был на критической температуре, чтобы использовать максимальную скорость, но он все еще придерживался автоматических значений.
Технические аспекты
Ресурс, который я использовал, находится здесь: http://staff.science.uva.nl/~kholshei/thinkfan_guide/
Я настроил значения так, чтобы вентилятор запускался при более низких температурах, начиная с 0 до 20 градусов для уровня 0 и так далее.
Моя конфигурация для /etc/thinlfan.conf:
$ tail -n 15 /etc/thinkfan.conf
sensor /sys/devices/virtual/hwmon/hwmon0/temp1_input
sensor /sys/devices/platform/coretemp.0/temp4_input
sensor /sys/devices/platform/coretemp.0/temp2_input
(0, 0, 21)
(1, 20, 22)
(2, 21, 25)
(3, 24, 28)
(4, 26, 33)
(5, 30, 40)
(6, 36, 49)
(7, 44, 62)
(128, 60, 65)
(129, 63, 100000)
Последние два значения являются экспериментальными.
, когда я бегу:
$ sudo thinkfan -n
WARNING: Using default fan control in /proc/acpi/ibm/fan.
, когда я бегу:
$ echo level disengaged | sudo tee /proc/acpi/ibm/fan
Вентилятор вращается приблизительно. 6500 об / мин, который действительно эффективен (температура медленно падает), но он удерживается на этом уровне в течение приблизительно 5 секунд после того, как снова переключается в автоматический режим.
Мой вопрос: как я могу вручную установить максимальную скорость вращения вентилятора в эти жаркие дни / Как я могу настроить значения так, чтобы температура не повышалась так сильно?
Сегодня я впервые пытаюсь это сделать, поэтому не ожидайте от меня представления о том, что я могу попробовать, кроме как установить задание cron, которое будет устанавливать уровень каждую секунду, что является плохой идеей.
И последнее: я не могу позволить себе перестать работать, и самое главное, я предпочитаю время от времени менять вентилятор, а не процессор.
Спасибо за вашу помощь и понимание, если вам нужны какие-либо другие детали, дайте мне знать.
Ох ... вот мой выпуск lsb:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 13.10
Release: 13.10
Codename: saucy
... и uname:
$ uname -r
3.11.0-23-generic
После некоторого дальнейшего исследования это - то, как мне удалось заставить его работать, как я хотел.
Я установил thinkfan
от способного (чтобы быть честным я не могу помнить, было ли это уже установлено или нет :-S)
Быть уверенным проверка, если Вам назвали процесс thinkfan
CLI:
ps -ef | grep thinkfan
и если это не там установка это с
CLI:
sudo apt-get install thinkfan
Это - конфигурация, расположен в /etc/thinkfan.conf
Отображающаяся температура - скорость определяется как в следующем отрывке:
...
(0, 0, 21)
(1, 20, 22)
(2, 21, 25)
...
Каждая группа определяет следующие значения (уровень, minTemperature, maxTemperature), другое правило состоит в том, что группы должны наложиться друг между другом.
Уровень определяется в как целое число и не строка, как я первоначально думал, как так:
Моя конфигурация в /etc/thinkfan.conf
взгляды теперь как так:
(0, 0, 21)
(1, 20, 22)
(2, 21, 25)
(3, 24, 28)
(4, 26, 33)
(5, 30, 40)
(6, 36, 49)
(7, 44, 52)
(126, 50, 59)
(127, 57, 100000)
Значения для изделия температур более или менее вычислили от графиков psensor, который показал очень ясный, что у меня есть неэффективный вентилятор, но я думаю, что это - нормальное рассмотрение, что ноутбук довольно стар.
Попробуйте эту конфигурацию, она хорошо работает на Lenovo ThinkPad L512 / L520:
thinkfan
sudo apt-get install -y thinkfan
Установки Настраивает модули ядра
echo "options thinkpad_acpi fan_control=1" > /etc/modprobe.d/thinkpad_acpi.conf
, модуль ядра Перезагрузки
modprobe -r thinkpad_acpi && modprobe thinkpad_acpi
Настраивает Перезапуск thinkfan
sudo sed -i 's|START=no|START=yes|' /etc/default/thinkfan
sudo sed -i 's|DAEMON_ARGS="-q"|DAEMON_ARGS="-q -b 1 -s 15"|' /etc/default/thinkfan
cat <<EOF> /etc/thinkfan.conf
hwmon /sys/devices/virtual/hwmon/hwmon0/temp1_input
(0, 0, 65)
(1, 65, 70)
(2, 70, 75)
(3, 75, 80)
(4, 80, 85)
(5, 85, 90)
(7, 90, 32767)
EOF
thinkfan демон
/etc/init.d/thinkfan restart
Я использовал в своей Lenovo Thinkpad x220 (это - обновленный ответ, который имел отношение к системам с systemd
sudo -i
установка thinkfan
apt install thinkfan
настройте модуль ядра
echo "options thinkpad_acpi fan_control=1" > /etc/modprobe.d/thinkfan.conf
модуль ядра перезагрузки
modprobe thinkpad_acpi
настройте значение по умолчанию thinkfan конфигурация
sed -i 's|START=no|START=yes|' /etc/default/thinkfan
sed -i 's|DAEMON_ARGS="-q"|DAEMON_ARGS="-q -b 1 -s 15"|' /etc/default/thinkfan
Проверьте свои датчики
find /sys/devices -type f -name "temp*_input"
и это - результат в моей Lenovo Thinkpad x220:
/sys/devices/virtual/hwmon/hwmon0/temp1_input
/sys/devices/platform/coretemp.0/hwmon/hwmon2/temp3_input
/sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input
/sys/devices/platform/coretemp.0/hwmon/hwmon2/temp2_input
запишите в /etc/thinkpad.conf
на основе результатов выше
tp_fan /proc/acpi/ibm/fan
hwmon /sys/devices/virtual/hwmon/hwmon0/temp1_input
hwmon /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp3_input
hwmon /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input
hwmon /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp2_input
(0, 0, 40)
(1, 32, 55)
(2, 54, 66)
(3, 65, 76)
(4, 75, 80)
(5, 78, 85)
(6, 82, 88)
(7, 85, 32767)
Включите сервис, таким образом, он будет запущен автоматически в каждых полномочиях начальной загрузки и отбрасывания.
systemctl enable thinkfan
exit
Перезагрузите свой ноутбук
systemctl enable thinkfan
После перезагрузки проверьте сервис
systemctl status thinkfan.service
результат будет похож на это:
● thinkfan.service - simple and lightweight fan control program
Loaded: loaded (/lib/systemd/system/thinkfan.service; enabled; vendor preset: enabled)
Active: active (running) since Jum 2016-10-07 20:09:30 WIB; 28min ago
Process: 2494 ExecStart=/usr/sbin/thinkfan (code=exited, status=0/SUCCESS)
Main PID: 2496 (thinkfan)
CGroup: /system.slice/thinkfan.service
└─2496 /usr/sbin/thinkfan
Okt 07 20:09:30 thinkpad-x220 systemd[1]: Starting simple and lightweight fan control program...
Okt 07 20:09:30 thinkpad-x220 thinkfan[2494]: thinkfan 0.9.1 starting...
Okt 07 20:09:30 thinkpad-x220 thinkfan[2494]: Daemon PID: 2496
Okt 07 20:09:30 thinkpad-x220 systemd[1]: Started simple and lightweight fan control program.
Для отладки скорости вентилятора и температуры я использую этот удобный однострочный код. Это может быть полезно.
while true; do echo -e "\n\n\n####################\n$(sensors)\n\n###\n$(uptime)\n###\n$(cat /proc/cpuinfo | grep -i "mhz")\n####################"; sleep 1; done
Необходимо установить и настроить lm-sensors.
Позвольте мне объяснить петлю.
Это цикл while, и он выполняется до тех пор, пока состояние истинно.
, хотя верно
. Поскольку состояние не меняется внутри цикла, он работает практически вечно. Чтобы выйти из цикла, вам нужно отменить его с помощью ctrl+c
на клавиатуре.
Поэтому, пока состояние истинно, сделай
что-нибудь. В этом случае выполните echo
с параметром -e
. Проверьте man echo
, чтобы узнать, что он делает.
Сначала я добавляю несколько разрывов строк \n
и несколько символов решетки, чтобы визуально было лучше различать, на что вы смотрите.
Следующее, что я хочу повторить, это результат сенсоров
. Когда вы запускаете sensors
в своем терминале, он что-то возвращает — результат. Таким образом, в bash
вы можете эхо
вывести результат чего-либо, обернув вокруг него $()
.
Опять же, я хочу иметь некоторые разделения, чтобы различать информацию.
Тогда я хочу посмотреть, какая сейчас нагрузка на компьютер. Итак, я повторяю результат uptime
.
И опять же, я хочу разлуки.
Чтобы узнать, с какой скоростью процессор работает в данный момент, я просматриваю /proc/cpuinfo
и grep
с помощью -i
(checkout man grep
для получения подробной информации об этом) для МГц
, так как это информация, которую я хотел бы видеть.
С помощью ;
A заканчиваю первую часть цикла. Поскольку цикл while не имеет ограничений на частоту обработки, он будет работать очень быстро. Поэтому я добавляю sleep -1
, чтобы сделать паузу на секунду.
Я также заканчиваю эту команду ;
и, чтобы сообщить циклу, что он может закончиться прямо здесь, я заканчиваю цикл с done
в конце.
Надеюсь, это объяснение легко понять.