Мой ноутбук — Acer TMX349-M-535L. Это очень удачная железка. Единственный его недостаток в том, что он может быть шумным. Я производил настройку в Elementary OS, но в Ubuntu то же самое. С базовыми настройками системы ноутбук шумит практически всегда. Но, если уделить немного внимания настройкам энергоэффективности, то его будет слышно лишь тогда, когда это действительно нужно. Остальное время он будет радовать тишиной, да и работать от батареи станет дольше.
Шум в этой модели — это пара вентиляторов системы охлаждения. Больше внутри ноутбука шуметь нечему. Диск — твердотельный, оптический привод отсутствует. Разборка Acer TravelMate TMX349-M-535L.
Датчики
Когда требуется снизить скорость вращения вентиляторов, то пользователи Linux обычно обращаются к программам lm_sensors
(Linux-monitoring sensors) и fancontrol
.
Первая представляет собой набор утилит и драйверов, которые позволяют отслеживать показания датчиков температуры, напряжения и скорости вращения вентиляторов. Вторая — это уже непосредственно инструмент изменения скорости вращения вентиляторов. Скорость можно автоматически менять, в зависимости от показаний температуры.
Установка программ:
sudo apt install lm-sensors fancontrol
Теперь определить и посмотреть датчики можно командами:
sudo sensors-detect
sudo sensors
У меня не получилось пойти по этому пути. Утилита sensors-detect для Acer TMX349-M-535L нашла всего один интерфейс из числа поддерживаемых, где доступны только показания датчиков температуры. Датчики вентиляторов полностью отсутствуют:
root@d1monNB:/home/d1mon# sensors
acpitz-virtual-0
Adapter: Virtual device
temp1: +33.0°C (crit = +98.0°C)
coretemp-isa-0000
Adapter: ISA adapter
Physical id 0: +33.0°C (high = +100.0°C, crit = +100.0°C)
Core 0: +33.0°C (high = +100.0°C, crit = +100.0°C)
Core 1: +30.0°C (high = +100.0°C, crit = +100.0°C)
Иногда, когда не все датчики доступны, то может помочь параметр:
acpi_enforce_resources=lax
Он прописывается, как дополнительный в загрузчик Grub.
Делается это в файле etc/default/grub
в таком виде:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_enforce_resources=lax"
Мне это не помогло.
Не помог и поиск в интернете. Модель ноутбука и его материнская плата нигде не упоминается в руководствах настройки датчиков скорости вращения вентиляторов.
Узнать материнскую плату ноутбука можно так:
root@d1monNB:/home/d1mon# inxi -Fxz
System: Host: d1monNB Kernel: 4.4.0-77-generic x86_64 (64 bit gcc: 5.4.0) Desktop: N/A
Distro: elementary 0.4 loki
Machine: System: Acer (portable) product: TravelMate X349-M v: V1.09
Mobo: Acer model: Cassiopeia_SK v: V1.09 Bios: Insyde v: V1.09 date: 12/30/2016
CPU: Dual core Intel Core i5-6200U (-HT-MCP-) cache: 3072 KB
flags: (lm nx sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx) bmips: 9599
clock speeds: max: 2800 MHz 1: 799 MHz 2: 799 MHz 3: 799 MHz 4: 799 MHz
Graphics: Card: Intel Sky Lake Integrated Graphics bus-ID: 00:02.0
Display Server: X.org 1.18.4 drivers: intel (unloaded: fbdev,vesa)
tty size: 135x24 Advanced Data: N/A for root
Audio: Card Intel Sunrise Point-LP HD Audio driver: snd_hda_intel bus-ID: 00:1f.3
Sound: Advanced Linux Sound Architecture v: k4.4.0-77-generic
Network: Card: Intel Wireless 7265 driver: iwlwifi bus-ID: 02:00.0
IF: wlp2s0 state: up mac: <filter>
Drives: HDD Total Size: 256.1GB (45.5% used) ID-1: /dev/sda model: HFS256G39TND size: 256.1GB temp: 25C
Partition: ID-1: / size: 227G used: 102G (48%) fs: ext4 dev: /dev/sda2
ID-2: swap-1 size: 8.45GB used: 0.00GB (0%) fs: swap dev: /dev/dm-0
RAID: No RAID devices: /proc/mdstat, md_mod kernel module present
Sensors: System Temperatures: cpu: 33.0C mobo: N/A
Fan Speeds (in rpm): cpu: N/A
Info: Processes: 208 Uptime: 2:44 Memory: 1500.8/7848.3MB Init: systemd runlevel: 5 Gcc sys: 5.4.0
Client: Shell (bash 4.3.461) inxi: 2.2.35
Проблема
Управление скоростью вращения вентиляторов — это борьба со следствием, а не с причиной проблемы. Причина — это чрезмерное использование ресурсов ноутбука на ровном месте. Ресурсы используются — железо греется, вентиляторам неизбежно приходится работать на повышенных оборотах.
И это действительно было странно наблюдать. Ноутбук бездействует, каких-то ресурсоёмких задач не выполняется. Тем не менее, его вентиляторы во всю жужжат. Обороты не максимальные, но слышно очень хорошо, особенно в тишине.
Решение
С целью оптимизации использования ресурсов ноутбука и увеличения времени его автономной работы существуют специальные программы. Наверное, их много всяких. Я пробовал использовать две, самые рекомендуемые в Linux-cообществе — это PowerTOP
и TLP
.
PowerTOP
Сразу скажу, что после экспериментов я отказался от использования PowerTOP
. Но на всякий случай я всё же расскажу про неё. Может, потом мне или кому-нибудь эта информация всё же пригодиться.
Установка:
sudo apt install powertop
Это консольная программа, показывающая статистику расходования энергии различными процессами, выполняемыми в системе. По каждому процессу видно, сколько за секунду к нему происходит обращений и сколько по времени они длятся. Показания суммируются.
В результате мы имеем сводку по количеству обращений (пробуждений), текущему расходу батареи, оставшемуся времени работы от батареи:
PowerTOP 2.8 Обзор Статистика б Частотная статист Статистика уст Tunables
Разряд батареи составляет 10.8 Вт
Предполагаемое оставшееся время работы 1 часов, 39 минут
Сводка: 487,3 пробуждений/с., 9,8 ГП оп./с., 0,0 VFS ops/sec and 9,3% CPU use
Power est. Использование Событий/с Категория Описание
2.06 W 33,7 ms/s 191,6 Process /usr/lib/firefox/firefox
893 mW 9,5 ms/s 74,7 Process gala
570 mW 1,3 ms/s 58,0 Interrupt [126] i915_bpo
333 mW 11,2 ms/s 24,6 Process /usr/lib/xorg/Xorg -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten
230 mW 4,9 ms/s 20,6 Process pantheon-terminal
162 mW 40,1 µs/s 16,7 Timer intel_uncore_fw_release_timer
144 mW 92,0 µs/s 14,7 Process [rcu_sched]
142 mW 6,2 ms/s 10,8 Process wingpanel
137 mW 526,8 µs/s 13,8 Timer tick_sched_timer
119 mW 4,0 ms/s 9,8 Process doublecmd
107 mW 371,5 µs/s 10,8 Interrupt [6] tasklet(softirq)
77.8 mW 261,3 µs/s 7,9 Process [irq/128-iwlwifi]
69.6 mW 11,6 ms/s 0,00 Process plank
63.5 mW 2,6 ms/s 4,9 Process psensor
58.4 mW 202,0 µs/s 5,9 Process nginx: worker process
47.9 mW 44,8 µs/s 4,9 kWork gen6_pm_rps_work
20.7 mW 271,1 µs/s 2,0 Process /usr/share/skypeforlinux/skypeforlinux --executed-from=/home/d1mon --pid=1947
19.5 mW 66,8 µs/s 2,0 Process /usr/lib/rtkit/rtkit-daemon
19.3 mW 42,9 µs/s 2,0 Process [rtsx_usb_ms_1]
19.1 mW 14,7 µs/s 2,0 kWork pm_runtime_work
19.1 mW 8,8 µs/s 2,0 kWork flush_to_ldisc
13.1 mW 601,0 µs/s 1,0 Process /usr/lib/x86_64-linux-gnu/indicator-application/indicator-application-service
11.1 mW 265,7 µs/s 1,0 kWork i915_gem_retire_work_handler
10.3 mW 135,0 µs/s 1,0 Process powertop
10.3 mW 132,1 µs/s 1,0 Interrupt [124] xhci_hcd
9.82 mW 48,2 µs/s 1,0 Process /usr/lib/accountsservice/accounts-daemon
Всё это показывается не просто так. Пользователю предоставляется возможность влиять на обращения к процессам. Настройки доступны на отдельной вкладке «Tunables», куда можно переключиться клавишей «Tab». Здесь отдельным службам и устройствам можно разрешить автоматический уход в спячку. Чем меньше служб и устройств будет постоянно бодрствовать, тем лучше.
Чтобы PowerTOP
постоянно контролировала систему нужно запустить её, как службу. Для этого требуется создать файл /etc/systemd/system/powertop.service
, его содержимое:
[Unit]
Description=PowerTop Service
[Service]
Type=idle
Environment="TERM=dumb"
# запуск в режиме максимального энергосбережения.
ExecStart=/usr/sbin/powertop --auto-tune
# запуск с настройками по умолчанию.
#ExecStart=/usr/sbin/powertop
[Install]
WantedBy=multi-user.target
Обратите внимание, что запуск службы в файле можно выполнять одним из двух способов. Закоментируйте первый и раскоментируйте второй, если он вам больше подходит.
Убедитесь, что атрибуты на созданный файл такие же, как у других аналогичных файлов в этом же каталоге. Поменяйте если требуется.
Включение автозапуска службы:
systemctl enable powertop.service
Выключение автозапуска:
systemctl disable powertop.service
Есть ещё процесс калибровки, запускается командной:
sudo powertop -calibrate
Экран погаснет, потом будет менять яркость, потом снова погаснет, потом всё восстановится. Занимает калибровка примерно 5-10 минут, ноутбук должен при этом работать от аккумулятора, трогать его не рекомендуется. Прерывать процесс тем более не рекомендуется.
Программа PowerTOP
интересная. Многие пишут, что она помогает. Но в моём случае она оказалась неэффективной. Вентиляторы продолжали жужжать.
TLP
Итак, вторая программа — TLP
, установка:
sudo add-apt-repository ppa:linrunner/tlp
sudo apt update
sudo apt install tlp
Вначале добавляем фирменный репозиторий. Там версия более новая, я использовал её.
Запуск:
sudo tlp start
Вывод всякой полезной информации, текущих настроек:
sudo tlp-stat
Вывод информации и текущих настроек именно по процессору:
sudo tlp-stat -p
Моя выдача, уже настроенная:
root@d1monNB:/home/d1mon# tlp-stat -p
--- TLP 0.9 --------------------------------------------
+++ Processor
CPU model = Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver = intel_pstate
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor = powersave
/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors = performance powersave
/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq = 400000 [kHz]
/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq = 2800000 [kHz]
/sys/devices/system/cpu/cpu1/cpufreq/scaling_driver = intel_pstate
/sys/devices/system/cpu/cpu1/cpufreq/scaling_governor = powersave
/sys/devices/system/cpu/cpu1/cpufreq/scaling_available_governors = performance powersave
/sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq = 400000 [kHz]
/sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq = 2800000 [kHz]
/sys/devices/system/cpu/cpu2/cpufreq/scaling_driver = intel_pstate
/sys/devices/system/cpu/cpu2/cpufreq/scaling_governor = powersave
/sys/devices/system/cpu/cpu2/cpufreq/scaling_available_governors = performance powersave
/sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq = 400000 [kHz]
/sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq = 2800000 [kHz]
/sys/devices/system/cpu/cpu3/cpufreq/scaling_driver = intel_pstate
/sys/devices/system/cpu/cpu3/cpufreq/scaling_governor = powersave
/sys/devices/system/cpu/cpu3/cpufreq/scaling_available_governors = performance powersave
/sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq = 400000 [kHz]
/sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq = 2800000 [kHz]
/sys/devices/system/cpu/intel_pstate/min_perf_pct = 14
/sys/devices/system/cpu/intel_pstate/max_perf_pct = 75
/sys/devices/system/cpu/intel_pstate/no_turbo = 1
/sys/devices/system/cpu/intel_pstate/turbo_pct = 25
/sys/devices/system/cpu/intel_pstate/num_pstates = 25
x86_energy_perf_policy: program for your kernel not installed.
/proc/sys/kernel/nmi_watchdog = 0
+++ Undervolting
PHC kernel not available.
По умолчанию программа TLP
настроена очень поверхностно и поэтому работает тоже не очень неэффективно. Чтобы улучшить ситуацию выполняем следующие действия.
Останавливаем службу:
sudo service tlp stop
Отключаем всё управление частотами процессора, которые могут быть в дистрибутиве по умолчанию. Это сделать нужно обязательно, т.к. TLP
возмёт на себя эту обязанность и нельзя допускать, чтобы что-то при этом мешалось. Официальная документация. Рекомендую заглянуть туда на всякий случай, может быть в будущем, когда вы читаете эту статью, что-то поменялось. Команда отключения:
sudo update-rc.d -f ondemand remove
Открываем в редакторе файл /etc/tlp.conf
, я пользуюсь mc
и встроенным редактором — кнопка «F4». Здесь проверяем параметры, все они должны быть раскомментированы:
TLP_ENABLE=1
— автозапуск программы при старте компьютера.CPU_SCALING_GOVERNOR_ON_AC=powersave
— включаем функцию энергосбережения при питании от сети.CPU_SCALING_GOVERNOR_ON_BAT=powersave
— включаем функцию энергосбережения при питании от аккумулятора.CPU_MIN_PERF_ON_AC=0
— разрешаем снижать частоту процессора до минимально возможной при питании от сети.CPU_MAX_PERF_ON_AC=100
— разрешаем повышать частоту процессора до максимально возможной при питании от сети.CPU_MIN_PERF_ON_BAT=0
— разрешаем снижать частоту процессора до минимально возможной при питании от аккумулятора.CPU_MAX_PERF_ON_BAT=75
— разрешаем повышать частоту процессора до 75% от максимально возможной при питании от аккумулятора.CPU_BOOST_ON_AC=1
— разрешаем Turbo boost при питании от сети.CPU_BOOST_ON_BAT=0
— запрещаем Turbo boost при питании от аккумулятора.
Следующие два параметра надо наоборот закомментировать в файле:
#ENERGY_PERF_POLICY_ON_AC=performance
#ENERGY_PERF_POLICY_ON_BAT=powersave
Запускам обратно службу и наслаждаемся результатом:
sudo service tlp start
Мой результат
Теперь, когда ноутбук бездействует, то его абсолютно не слышно!
То же самое, если выполнять какие-то несложные операции или посещать сайты не перегруженные скриптами и рекламой. Работать в тишине можно с настройками системы, файлами, некоторыми программами, да и много ещё чем.
Нагрузить ноутбук, чтобы он зашумел — не проблема. Но теперь этот шум хотя бы не просто так.
Дополнительно к проделанной оптимизации энергоэффективности я бы всё же не отказался поиграться с настройками скоростей вращения вентиляторов. Меня не покидает надежда, что когда-нибудь мне удастся достучаться до соответствующих датчиков.