Почему tick_sched_timer потребляет так много энергии в Linux

Почему tick_sched_timer потребляет так много энергии в Linux

Согласно моему powertop (на ядре 5.3.1):

Power est.              Usage       Events/s    Category       Description
 ...
  3.85 W      7,7 ms/s     437,0        Timer          tick_sched_timer

3,85 Вт на ноутбуке — это много, иногда даже доходит до 6 Вт. Я не видел этого на более ранних ядрах (5.0.x), кто-нибудь знает, как уменьшить это энергопотребление?

решение1

tick_sched_timerявляется частью планировщика процессоров ядра Linux. В этом случае, скорее всего, это указывает на многие context switchesи cpu-wakeupsв вашей системе.

Если вы видите, что он потребляет много энергии, скорее всего, что-то в вашей системе вызывает много context switchesи/или cpu-wakeups. -- Это может быть связано с драйвером, например, драйвером графического процессора, Bluetooth, Wi-Fi и т. д., где установлен какой-то агрессивный интервал обновления, или, возможно, драйвер запускает много аппаратных прерываний... Однако это также может быть вызвано некоторым программным обеспечением userpsace... даже powertop немного исказит эти цифры.

Вы можете добиться некоторого успеха, отключая драйверы (например, bluetooth), когда они не используются (или, если не используются, полностью занося их в черный список). или изменяя регуляторы процессора и/или используя различные методы/стратегии энергосбережения... В зависимости от того, как настроено ваше ядро, уменьшение тика таймера также может экономить энергию. Например, некоторые ядра могут быть собраны с CONFIG_HZ_1000=y, в то время как другие могут быть собраны с CONFIG_HZ_250=y. Последнее должно сэкономить немного энергии.

Powertop может дать вам указания относительно причины; но tick_sched_timerэто не основная причина разрядки батареи (это всего лишь симптом). Скорее всего, это какой-то другой поток, задача или процесс; в ядре или, возможно, в пространстве пользователя.

решение2

Немного опоздал, но мне удалось снизить потребление со среднего значения выше 2 Вт до менее 1 Вт, изменив настройки с помощью tlpui.

Перейдите в раздел «Процессор» и отметьте галочкой опции SCHED_POWERSAVE. Вы также можете поиграться с многочисленными настройками ЦП в этой категории.

Для процессоров Intel: перейдите в раздел «Графика» и установите для параметра INTEL_GPU_FREQ более низкие значения. Обязательно проверьте доступные значения, используя функцию sudo tlp-stat -g.

Для процессоров AMD: перейдите в раздел «Графика» и установите для параметров RADEON_POWER_PROFILE_ON_BAT и RADEON_DPM_STATE значения «низкий» и «батарея» соответственно.

Отключение Bluetooth тоже, похоже, помогает.

Конечно, это не идеальный вариант, поскольку производительность значительно снижается, но если для вас время работы от батареи важнее производительности, то выбирайте этот вариант.

Связанный контент