• ThinkPad T430, i3840QM, Linux и перегрев

    Обладаю я великолепнейшим ноутбуком Lenovo ThinkPad T430. Сделал апгрейд, установив максимально возможный процессор Core i7 3840QM, а у него TDP 45W против штатных 35 и он вырубался под тяжёлой нагрузкой.

    Спустя 4 месяца дождался с Алиэкспресса улучшенную систему охлаждения от версии с дискретной видеокартой. Отличаются отдельным ушком.

    Shopee Malaysia | Free Shipping Across Malaysia

    Стало лучше, но при очень большой нагрузке в док-станции с двумя мониторами он всё равно отрубался, несмотря на хорошую дорогую термопасту. И тут я стал гуглить и обнаружил великолепный интерфейс к ACPI, позволяющий управлять вентилятором, и выяснил, что штатно система при высокой температуре крутит вентилятор на 5400 rpm, хотя может быть 5900. 500 оборотов это не в тапки пысать! Если выдать команду в файл-устройство:
    # echo level 7 > /proc/acpi/ibm/fan
    то выяснится, что скорость вентилятора будет 5400 оборотов. Чтобы выжать максимум, надо выдать команду
    # echo full-speed >/proc/acpi/ibm/fan

    Для этого есть демон thinkfan.

    1. Устанавливаем thinkfan из штатных репозиториев:
      # apt-get install thinkfan
      Дописываем опцию для модуля ядра thinkpad в файл /etc/modprobe.d/thinkpad_acpi.conf
      options thinkpad_acpi fan_control=1
      и перезагружаемся.
    2. Пишем конфиг /etc/thinkfan.conf. Первая строка — откуда брать температуру, вторая группа записей — первая цифра это номер уровня скорости вентилятора (0-7), вторая — минимальное значение, при котором уходить на предыдущий, третья — максимальное, при котором уходить на следующий.
    hwmon /sys/devices/virtual/thermal/thermal_zone0/hwmon0/temp1_input
    (0, 0, 55)
    (1, 48, 60)
    (2, 50, 61)
    (3, 52, 63)
    (4, 56, 65)
    (5, 59, 66)
    (7, 63, 87)
    ("level full-speed", 85, 131072)
    

    3. Строковое значение не даст thinkfan запуститься с ошибкой:
    мар 11 22:41:41 remotehost thinkfan[7825]: Invalid fan level string. This check can be disabled by using DANGEROUS mode.
    поэтому нужно дописать опцию -D в /etc/default/thinkfan. Получится вот так:
    DAEMON_ARGS="-q -D"
    4. Заставляем Thinkfan стартовать вместе с системой и запускаем его:
    # systemctl enable thinkfan
    # systemctl start thinkfan

    После всего вышеперечисленного для проверки можно запустить взятую из репозиториев утилиту stress командой stress --cpu 8, дабы задать процессору жару. По результатам моих испытаний после прогрева до 87 градусов вентилятор уходит на запредельный режим и позволяет удержать температуру в допустимых пределах. По итогу, спустя 30 минут работы утилиты stress на всех 8 ядрах температура поднялась максимум до 98 градусов и процессор не ушёл ни в троттлинг, ни в защиту и аварийное выключение.

    Кстати говоря, можно спокойно играться с диапазонами, скажем, выключив вентилятор до 60-65 градусов вообще. А зачем он?
    Например, с помощью такого профиля:

    (0,	0,	65)
    (1,	60,	70)
    (2,	65,	72)
    (3,	70,	75)
    (4,	73,	80)
    (5,	78,	85)
    (7,	83,	87)
    ("level full-speed",	85,	131072)