Ноутбук Acer TMX349-M-535L — это очень удачная железка. Единственный его недостаток в том, что он может быть шумным. Речь в статье про Elementary OS. С базовыми настройками этой операционной системы ноутбук шумит практически всегда. Но, если уделить немного внимания настройкам энергоэффективности, то его будет слышно лишь тогда, когда это действительно нужно, а основное время он порадует тишиной, да и работать от батареи станет дольше.

Шум в этой модели — это пара вентиляторов системы охлаждения. Больше внутри ноутбука шуметь нечему. Диск — твердотельный, оптический привод отсутствует.


Датчики

Когда требуется снизить скорость вращения вентиляторов, то пользователи 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, установка:

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

Я рекомендую использовать вторую программу, читайте про это дальше. А эту информацию про настройку PowerTOP я публикую на всякий случай. Может кому-нибудь пригодиться.

Чтобы 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, установка:

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/default/tlp, я пользуюсь 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

Теперь, когда ноутбук бездействует, то его абсолютно не слышно!

Тоже самое, если выполнять какие-то несложные операции или посещать сайты не перегруженные скриптами и рекламой. Работать в тишине можно с настройками системы, файлами, некоторыми программами, да и много ещё чем.

Нагрузить ноутбук, чтобы он зашумел — не проблема. Но теперь этот шум хотя бы не просто так.

Дополнительно к проделанной оптимизации энергоэффективности я бы всё же не отказался поиграться с настройками скоростей вращения вентиляторов. Меня не покидает надежда, что когда-нибудь мне удасться достучаться до соответствующих датчиков.

Оценка времени автономной работы в Elementary OS

Read Full Article