Por qué tick_sched_timer usa tanta potencia en Linux

Por qué tick_sched_timer usa tanta potencia en Linux

Según mi powertop (en el kernel 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 W en una computadora portátil es enorme, a veces llega incluso a 6 W. No he visto esto en kernels anteriores (5.0.x), ¿alguien sabe cómo reducir ese uso de energía?

Respuesta1

tick_sched_timeres parte del programador de la CPU del kernel de Linux. En este caso, es probable que indique muchos context switchesy cpu-wakeupsen su sistema.

Si ve que consume mucha energía, es probable que algo en su sistema esté causando una gran cantidad de context switchesy/o cpu-wakeups. -- Esto podría estar relacionado con un conductor; como un controlador de gpu, bluetooth, wifi, etc., donde tiene algún tipo de intervalo de actualización agresivo, o posiblemente un controlador está activando muchas interrupciones de hardware... Sin embargo, también podría ser causado por algún software de usuario. .. incluso el powertop distorsionará un poco estos números.

Es posible que tenga cierto éxito deshabilitando los controladores (como Bluetooth) cuando no estén en uso (o si no los usa, incluyéndolos completamente en la lista negra). o cambiar los reguladores de la CPU y/o usar varios métodos/estrategias de ahorro de energía... Dependiendo de cómo esté configurado su kernel, reducir el tic del temporizador también puede ahorrar energía. Por ejemplo, algunos núcleos pueden compilarse con CONFIG_HZ_1000=y, mientras que otros pueden compilarse con CONFIG_HZ_250=y. este último debería ahorrar algo de energía.

Powertop puede darle indicaciones sobre cuál es la causa; pero tick_sched_timerno es la causa principal del agotamiento de la batería (es solo un síntoma). Probablemente sea algún otro hilo, tarea o proceso; en el kernel o posiblemente en el espacio de usuario.

Respuesta2

Un poco tarde para la fiesta, pero bajé el uso de un promedio superior a 2 W a menos de 1 ajustando mi configuración con tlpui.

Vaya a Procesador y marque las opciones SCHED_POWERSAVE para activarlas. También puedes jugar con los numerosos ajustes de CPU en esa categoría.

Para CPU Intel: vaya a Gráficos y ajuste INTEL_GPU_FREQ a valores más bajos; asegúrese de verificar qué está disponible usando sudo tlp-stat -gde antemano.

Para CPU AMD: vaya a Gráficos y configure RADEON_POWER_PROFILE_ON_BAT y RADEON_DPM_STATE en nivel bajo y batería, respectivamente.

Desactivar el bluetooth también parece ayudar.

Obviamente, esto no es ideal ya que el rendimiento se reduce bastante, pero si valoras más la duración de la batería que el rendimiento, entonces hazlo.

información relacionada