Guías

Cómo optimizar la duración de la batería de la computadora portátil con TLP en Linux

Cómo optimizar la duración de la batería de la computadora portátil con TLP en Linux

Cuando se usa Linux en dispositivos móviles como computadoras portátiles, es muy importante sintonizar los parámetros del núcleo adecuado para optimizar la duración de la batería. TLP es una utilidad de línea de comandos de código de código de código abierto altamente personalizable, liberada bajo la licencia GPLV2 (el código fuente está alojado en GitHub) creado con este objetivo exacto. En este tutorial vemos cómo instalar TLP en algunas de las distribuciones de Linux más utilizadas y cómo configurarlo.

En este tutorial aprenderás:

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Independiente de la distribución
Software TLP, TLP-RDW (para asistente de dispositivo de radio)
Otro Privilegios de raíz para realizar tareas administrativas
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
$-Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Instalación de TLP

TLP está disponible en los repositorios de las distribuciones de Linux más utilizadas, por lo tanto, todo lo que necesitamos hacer para instalarlo es usar nuestro Administrador de paquetes favorito. Se llama al paquete base que necesitamos instalar TLP; Además, si tenemos la intención de usar el Asistente del dispositivo de radio para habilitar o deshabilitar las interfaces de radio cuando ocurren ciertos eventos, necesitamos instalar el TLP-RDW paquete.



Fedora es la distribución comunitaria de la familia Red Hat y utiliza el DNF Administrador de paquetes para instalar o eliminar paquetes de software. Para instalar TLP, todo lo que necesitamos hacer es iniciar el siguiente comando:
$ sudo dnf install tlp tlp-rdw

Debian es una de las distribuciones de Linux más extendidas y estables, y representa la base para muchos derivados como Ubuntu y Linux Mint. La forma "moderna" de instalar software en esta distribución es usar el apto envoltura, que proporciona una interfaz de usuario amigable sobre apt-get y otros comandos:

$ sudo apt install tlp tlp-rdw

TLP está disponible también en el repositorio de Archlinux "Community". Para instalar el software en el arco, usamos el Pacman gerente de empaquetación:

$ sudo Pacman -Sy TLP TLP -RDW

Una vez que se instala TLP en nuestro sistema, debemos iniciar el servicio relacionado y habilitarlo en el arranque (en Fedora y Debian, el servicio debe iniciarse automáticamente como parte de la instalación). Hoy en día, casi todas las distribuciones usan Systemd como gerente de inicio, por lo tanto, para realizar tales tareas podemos usar el systemctl dominio:

$ sudo systemctl Enable - -Now TLP.servicio

Configuración de TLP

Para configurar TLP y ajustarlo a mejor nuestras necesidades, tenemos básicamente dos opciones:

  1. Editar el /etc/tlp.confusión archivo
  2. Deje caer archivos de configuración en el /etc/tlp.d directorio

¿Qué enfoque debemos adoptar?? Eso depende. Si abrimos el archivo de configuración TLP principal, /etc/tlp.confusión, Podemos ver cómo se comenta todo su contenido. Para cada opción disponible se proporciona una breve descripción, incluido su valor predeterminado y, a menudo, el sugerido. Para cambiar el valor de una opción, necesitamos eliminar el comentario de la línea apropiada y asignar el valor deseado a la variable correspondiente. Este enfoque es más fácil de adoptar si estamos modificando la configuración manualmente.



Como alternativa, podemos crear uno o más archivos de configuración que contienen las opciones que queremos usar y sus valores, y dejarlas dentro del /etc/tlp.d directorio. Cada uno de esos archivos debe tener el ".confusión"Extensión a su nombre. Este enfoque puede ser más conveniente, por ejemplo, si estamos implementando TLP como parte de una instalación automatizada realizada con Ansible o Kickstart.

Como ya dijimos, los parámetros establecidos por TLP se describen muy bien dentro del archivo de configuración principal, en el curso de este tutorial, sin embargo, investigaremos más a fondo algunos de ellos y veremos en qué subsistemas de núcleos operan. Vamos.

Modo portátil

Una de las primeras opciones que cumplimos dentro del archivo de configuración TLP principal es Disk_idle_secs y Max_lost_work_secs. Se puede asignar un valor dependiendo de si se ejecuta en el adaptador de alimentación (ON_AC) o en la batería (ON_BAT). Esas opciones, debajo del capó, utilizan una característica del núcleo Linux que se llama "modo portátil". Cuando el modo portátil está activo, lo que cambia es básicamente cómo se maneja Linux "datos sucios": Los datos en la memoria que deben escribirse en el disco.

El valor que asignamos Disk_idle_secs_on_ac o Disk_idle_secs_on_bat están escritos para el /sys/proc/vm/laptop_mode archivo. Un valor mayor que 0 habilita el modo portátil y representa El número de segundos después de que el disco se inactivo, antes de intentar realizar una sincronización de datos. El valor predeterminado utilizado por TLP, cuando el adaptador de alimentación está conectado, es 0; en la alimentación de la batería, 2 se usa en su lugar.

La otra opción que modifica el comportamiento del modo portátil es Max_lost_work_secs. El valor para esta opción en el archivo de configuración TLP se expresa en segundos; Bajo el capó, el valor se convierte en centisegundos (multiplicado por 100) y escrito en los siguientes archivos del sistema:

Cada uno de esos archivos tiene un papel diferente. El núcleo usa periódicamente "hilos de descarga"Escribir datos" antiguos "en el disco: el valor escrito en el /proc/sys/vm/sucio_writback_centisecs archivo, expresa el intervalo entre estos descargas debe ejecutarse. Qué datos deben considerarse "antiguos"? Esto se establece por el valor escrito al /Proc/Sys/VM/Dirty_EXPIRE_CENTISECS Archivo: los datos que han estado en la memoria durante un intervalo de tiempo más largo que él, se considerarán "antiguos".

El /proc/sys/fs/xfs/age_buffer_centisecs y /proc/sys/fs/xfs/xfssyncd_centisecs Los archivos, como se puede inferir por sus nombres, influyen en el comportamiento del XFS sistema de archivos. El valor dentro del primero representa el intervalo de tiempo después de lo cual el sucio La lista de buffers de metadatos está escaneada, y el valor dentro de este último, establecer el intervalo de tiempo después del cual los metadatos se escriben en el disco.

Establecer el gobernador de escala

TLP se puede usar para establecer un Gobernador de escala de CPU dependiendo de la fuente de alimentación de una máquina. Un gobernador de escala establece y cambia la frecuencia de una CPU dependiendo de ciertos factores. Cómo se cambia la frecuencia depende del gobernador en uso. Los gobernadores de CPU disponibles se pueden recuperar consultando el /sys/disposites/system/cpu // cpufreq/scaling_available_governors Archivo, donde debe ser sustituido por el número de CPU, por ejemplo:

$ cat/sys/disposites/system/cpu/cpu0/cpufreq/scaling_available_governors

El comando anterior debería devolver algo como:

Programación de rendimiento de PowerSave conservador de Ondemand Ondemand PowerSave

Para establecer el gobernador de escala con TLP, debemos usar el nombre del gobernador como el valor del Cpu_scaling_governor_on_ac y CPU_SCALING_GOBERNOR_ON_BAT opción. Debajo del capó, TLP escribirá la elección deseada en el /SYS/Devices/System/CPU/CPU*/CPUFreq/Scaling_Governor archivos.

TLP también permite al usuario ajustar fácilmente también el frecuencias máximas y minium para el gobernador de escala seleccionado a través del Cpu_scaling_min_freq_on_ac, Cpu_scaling_max_freq_on_ac, Cpu_scaling_min_freq_on_bat y
Cpu_scaling_max_freq_on_bat opción. Los valores proporcionados se escribirán en el /SYS/Devices/System/CPU*/CPUFREQ/SCALING_MAX_FREQ y /SYS/Devices/System/CPU*/CPUFREQ/SCALING_MIN_FREQ archivos.

Usando el Intel HDA PowerSave

Otra estrategia útil para reducir el consumo de energía al ejecutar la batería, es habilitar el ahorro de energía para dispositivos Intel HDA (audio de alta definición). TLP nos permite habilitar esta estrategia a través del Sound_power_save_on_ac y Sound_power_save_on_batvariables. Un valor de 0 deshabilita la función, mientras que un valor mayor lo permite y representa El número de segundos de inactividad, después de lo cual el dispositivo debe colocarse en modo de ahorro de energía. TLP escribe el valor aprobado al /SYS/MODULE/SND_HDA_INTEL/parámetros/power_save y /SYS/MODULE/SND_AC97_CODEC/parámetros/power_save archivos. Esta característica es habilitado por defecto tanto en batería como en aire acondicionado.



El controlador de audio también está deshabilitado cuando está en modo de ahorro de energía. Esto se controla a través del Sound_power_save_controller opción, que se puede configurar en '' o 'norte', para habilitar y deshabilitar respectivamente la función. El archivo del sistema que controla este parámetro es /SYS/MODULE/SND_HDA_INTEL/parámetros/power_save_controller.

Configuración de umbrales de la batería

En ciertas máquinas, para ejemplos en ThinkPads, el firmware del sistema permite establecer umbrales de carga de la batería. Esta característica es realmente útil para preservar la duración de la batería. Las baterías de litio modernas potencialmente perdieron la capacidad cuando están completamente descargadas o mantenidas continuamente en su nivel máximo de potencia. Al establecer los umbrales de carga, podemos ajustar el comportamiento de carga a nuestras necesidades.

Si la máquina rara vez se usa en la batería, por ejemplo, podemos establecer los umbrales inferiores y superiores a 40 y 50 respectivamente, para evitar ciclos completos de la batería y sobrecalentamiento. Si a menudo usamos la máquina en la batería, en su lugar, podemos establecer un umbral más bajo para 85 y máximo a 95, Por ejemplo (los valores se sugieren en la página de Lenovo). El sistema comenzará a cargar la batería solo si el porcentaje de carga es por debajo del umbral mínimo, y la voluntad Detente cuando se alcanza el umbral superior. TLP controla esta función a través del Start_charge_thresh_bat0 y Stop_charge_thresh_bat0 variables. Si nuestro sistema tiene más de una batería, podemos agregar una configuración dedicada agregando la misma configuración para Bate1, etc. Los valores aprobados se escriben para el /sys/class/power_supply/BAT0/Charge_Control_Start_threshold y /sys/class/power_supply/BAT0/Charge_Control_end_threshold archivos.

Desactivar las interfaces de radio en eventos específicos

Al usar TLP, tenemos la oportunidad de habilitar o deshabilitar interfaces de radio específicas cuando ocurren ciertos eventos; Por ejemplo, podemos desconectar las tarjetas wifi cuando el sistema está conectado a la LAN a través de éternet. TLP controla esto a través de las siguientes opciones:

Los nombres de las variables se explican bastante por sí mismos. Aceptan una lista de tipos de dispositivos separada por espacio y separado como su valor. Por ejemplo, para deshabilitar todos los dispositivos WiFi cuando el sistema está conectado a LAN con un cable, escribiríamos:

Dispositivos_to_disables_on_lan_connect = "wifi"

TLP también nos permite deshabilitar dispositivos en otros eventos, como el adaptador de potencia o la conexión de muelle o la desconexión.

Verificación del estado de ahorro de energía usando TLP-STAT

Para verificar el estado actual de ahorro de energía, podemos usar una utilidad que viene con TLP: tlp-status. Esta utilidad vemos varias información, como el valor de la configuración de TLP, las configuraciones del núcleo y los datos de la batería. Cuando se invoca sin ninguna opción, TLP-STAT imprime toda la información disponible:

$ sudo tlp-stat

Aquí hay un extracto de los datos devueltos (salida truncada):

--- TLP 1.4.0 -------------------------------------------- +++ Configuración configurada : valores predeterminados.Conf L0004: tlp_enable = "1" Valores predeterminados.Conf L0005: TLP_WARN_LEVEL = "3" Valores predeterminados.conf l0006: tlp_persistent_default = "0" predeterminados.Conf L0007: disk_idle_secs_on_ac = "0" predeterminados.conf l0008: disk_idle_secs_on_bat = "2" predeterminados.Conf L0009: max_lost_work_secs_on_ac = "15" [...] +++ Sistema Info System = Asustek Computer Inc. 1.0 K52F BIOS = K52F.218 OS Release = Fedora Linux 35 (treinta y cinco) kernel = 5.15.18-200.FC35.x86_64 #1 SMP sábado 29 de enero 13:54:17 UTC 2022 X86_64 […] +++ Tlp State State = habilitado rdw state = no instalado la última ejecución = 09:22:18 AM, 23834 SEC (S) MODO = AC = AC = AC Fuente de energía = AC […]

La información devuelta se puede filtrar utilizando las opciones apropiadas. Para mostrar solo datos de batería, por ejemplo, ejecutaríamos:

$ sudo tlp-stat-baterías

De la misma manera, para hacer para que solo se muestren información sobre dispositivos USB, podemos usar el --USB opción. Para el conjunto completo de opciones que se pueden usar, eche un vistazo a la mano de obra de la utilidad.

Conclusiones

En este tutorial vimos cómo instalar y configurar TLP en algunas de las distribuciones de Linux más utilizadas, y cómo podemos configurarlo para optimizar la duración de la batería en Linux. Vimos cuál es el archivo de configuración principal, algunas de las directivas contenidas en él y cómo se escriben la configuración pasada en archivos del sistema, debajo del capó. TLP se puede utilizar para realizar una amplia gama de otros ajustes de ahorro de energía: la mejor manera de conocerlos es echar un vistazo al archivo de configuración y ver cómo se implementan.

Cómo despertar en el host compatible con LAN a través de la red utilizando Linux
Cómo despertar en el host compatible con LAN a través de la red utilizando Linux...
Ejemplo de algoritmo de búsqueda binaria en C ++
Aquí hay un simple ejemplo de búsqueda binaria en C++. El ejemplo primero crea un vector de 4 000 000 números y luego hace una llamada de función de.....
Error del decodificador principal No hay módulo de decodificador adecuado para FourCc 'XVID'
Este problema puede ocurrir cuando su sistema Debian Linux está utilizando paquetes del repositorio principal de Debian, así como de http // www.Debia...