Power management (Español)

La gestión de energía es una característica que apaga la alimentación o los interruptores del sistema para un menor consume de energía cuando está incactivo.

Esta traducción de Power management fue revisada el 2019-05-26. Si existen cambios puede actualizarla o avisar al equipo de traducción.

En Arch Linux, la administración de energía consiste en dos partes principales:

  1. Configurar el kernel de Linux, que interactua con el hardware.
  2. Las herramientas de configuración del espacio del usuario pueden interactuar con el núcleo y reaccionar a sus eventos. Muchas de estás herramientas le permiten también modificar la configuración del núcleo de una forma fácil. Vea #Herramientas de espacio del usuario para las opciones.

Herramientas de espacio del usuario

Utilizando estas herramientas puede remplazar la configuración de muchos ajustes a mano. Solo ejecute una de estas herramientas para evitar conflictos ya que todas trabajan más o menos de la misma forma. Eche un vistazo a la categoria de administracion de energía para tener una noción de las opciones de administración energética que existen en Arch Linux.

Aquí están los scripts y herramientas más populares para ahorrar energía:

Consola

  • TLP Administración avanzada de energía de Linux.
https://linrunner.de/tlp || tlp

Gráficos

  • cbatticon Icono de batería ligero y rápido que se encuentra en la bandeja del sistema.
https://github.com/valr/cbatticon || cbatticon

Administración de energía con systemd

Eventos de ACPI

Systemd puede manejar algunos eventos ACPI («Interfaz Avanzada de Configuración y Energía») cuyas acciones pueden configurarse en o en /etc/systemd/logind.conf.d/*.conf — vea . En sistemas que no tienen un administrador de energía dedicado puede que los ajustes se remplacen con el demonio acpid que se usa normalmente para reaccionar a los eventos ACPI.

La acción especificada para cada evento puede ser una de las siguientes: , , reboot, , , , , , lock o . En caso de hibernar y suspender deben ajustarse apropiadamente. Si un evento no esta configurado systemd utilizara la acción por defecto.

Controlador de evento Descripción Acción por defecto
Especifica qué acción se invoca cuando el botón de encendido se pulsa.
Especifica qué acción se invoca cuando se pulsa el botón de suspensión.
Especifica qué acción se invoca cuando se pulsa el botón de hibernación.
Especifica qué acción se invoca cuando la tapa del portátil se cierra a excepción de los casos descritos más abajo.
Especifica que acción se invoca la tapa del portátil se cierra si el sistema está insertado en una estación de acoplamiento o si hay más de una pantalla conectada.
HandleLidSwitchExternalPower TEspecifica que acción se invoca la tapa del portátil se cierra si el sistema está conectado a una fuente de corriente externa. Acción establecida por

Para aplicar cualquier cambio reinicie (esto terminará todas las sesiones iniciadas).

Administradores de energía

Algunos entornos de escritorio incluyen administradores de energía que inhiben (desactiva temporalmente) algunos o todos los ajustes ACPI de systemd. Si hay algún administrador de energía ejecutándose las acciones ACPI solo se pueden configurar en el administrador de energía. Los cambios en o /etc/systemd/logind.conf.d/*.conf solo se necesitan hacer solo si desea configurar algún evento particular que no inhibe el administrador de energía.

Tenga en cuenta que el administrador de energía no inhibe systemd en los eventos apropiados en los que pueden terminar con una situación en la que systemd suspenda su sistema y después de que systemd lo despierte el otro administrador de energía vuelva a suspender el equipo. En diciembre de 2016 los administradores de energía como KDE, GNOME, Xfce y MATE solucionan los comandos necesarios inhibidos. Si los comandos inhibidos no se han solucionado, como cuando se utiliza acpid o otros administradores de eventos ACPI, establezca la opción Handle a . Vea también .

xss-lock

Funciona con los eventos de systemd , , , y  con las acciones apropiadas (ejecutar el bloqueador y espera al usuario para desbloquearse o terminar el bloqueador). xss-lock también reacciona a los eventos DPMS y ejecuta o termina el bloqueador en respuesta.

Inicie xss-lock en su archivo de inicio en el arranque así:

xss-lock -- i3lock -n -i background_image.png &

Suspensión e hibernación

Systemd proporciona órdenes para suspender en RAM, hibernar y una suspensión hibrida usando le funcionalidad de suspensión/reanudación nativa del kernel. También existen mecanismos para agregar hooks para personalizar las acciones de pre y post-suspensión.

debería funcionar tras su instalación, sin embargo, para que  pueda trabajar en su sistema debe seguir las instrucciones de hibernar.

Aquí hay dos modos de combinar la suspensión y la hibernación:

  • systemctl hybrid-sleep suspende el sistema en RAM y en disco, así cuando el sistema se quede completamente sin energía no se perderán los datos. Este modo se llama también suspensión híbrida.
  • inicialmente suspende el sistema en RAM y si no se interrumpe en el periodo de tiempo especificado en en el sistema se despertará utilizando una alarma RTC y se hibernará.
Nota: Systemd también puede utilizar otros backends (como por ejemplo Uswsusp), en conjunción con el banckend por defecto del kernel, con el fin de poner el ordenador a dormir o hibernar. Véase Uswsusp con systemd para obtener un ejemplo.

Suspensión híbrida en suspensión o en hibernación

Es posible configurar systemd para que siempre haga una suspensión híbrida cuando se realice una petición de suspensión o hibernación.

La acción por defecto de suspender e hibernar se pueden configurar en el archivo . Para establecer ambas acciones a suspensión híbrida:

Vea la página del manual para más detalles y la documentación de los estados de energía del kernel linux.

Archivos de servicios para suspender/reanudar

Los archivos de servicios pueden ser asociados a suspend.target, hibernate.target, sleep.target, hybrid-sleep.target y suspend-then-hibernate.target para ejecutar acciones antes o después de suspender/hibernar. Deben crearse archivos separados para las acciones del usuario y las acciones de root/sistema. Active los servicios y para que se inicien en el arranque. Ejemplos:

Nota: Los bloqueadores de pantalla puede que vuelvan antes de que la pantalla se halla "bloqueado" y puede retomar la suspensión. Añadir un pequeño tiempo via ExecStartPost=/usr/bin/sleep 1 ayuda a prevenir esto.

Para las acciones de root/sistema (active y los servicios para iniciarlos en el arranque):

/etc/systemd/system/root-suspend.service
[Unit]
Description=Local system resume actions
After=suspend.target

[Service]
Type=simple
ExecStart=/usr/bin/systemctl restart mnt-media.automount

[Install]
WantedBy=suspend.target

Archivo de servicio combinando suspensión/reanudación

Con el archivo de servicio que combina suspender/reanudar, un solo hook puede hacer todo el trabajo para las diferentes fases (dormir/continuar) y para diferentes objetivos (suspender/hibernar/suspensión híbrida).

He aquí un ejemplo y su explicación:

  • : Después de que se inicie el servicio se mantendrá siempre activo hasta que se detenga explícitamente.
  • : Cuando se active, el servicio se detendrá si ningún servicio activo lo requiere. En este caso el servicio se detendrá después de que se detenga sleep.target.
  • Debido a que sleep.target es apartado por suspend.target, hibernate.target y hybrid-sleep.target y debido a que sleep.target es en sí mismo un servicio StopWhenUnneeded garantiza que el hook iniciará/detendrá correctamente las diferentes tareas.

Hooks en /usr/lib/systemd/system-sleep

Systemd iniciará todos los archivos ejecutables ubicados en , y pasará dos argumentos a cada uno de ellos:

  • Argument 1: o bien o post, dependiendo de si la máquina se está durmiendo o despertando.
  • Argument 2: , o , dependiendo de lo que se ha invocado.

Systemd ejecutará estos scripts en paralelo y no uno tras el otro.

Las salidas de cualquier script personalizado se registrarán por systemd-suspend.service, systemd-hibernate.service o systemd-hybrid-sleep.service. Se pueden ver las salidas en el systemd (Español)/Journal (Español) de systemd:

# journalctl -b -u systemd-suspend.service

He aquí un ejemplo de script de sleep personalizado:

No debemos olvidarnos de hacer el script ejecutable:

# chmod a+x /usr/lib/systemd/system-sleep/example.sh

Véanse y para obtener más información.

Acción retardada del interruptor de la tapa

Al hacer cambios en la tapa muy rápido, logind retarda la acción de suspender hasta 90s para detectar posibles muelles. Este retardo se hizo configurable en systemd v220:

La suspensión desde la tecla Fn correspondiente del portátil no funciona

Si, independientemente de la configuración de logind.conf, el botón dormir no funciona (presionándolo no produce ningún mensaje en syslog) logind probablemente no vea el dispositivo de teclado. Realice:

# journalctl --grep="Watching system buttons"

Debería ver algo como esto:

May 25 21:28:19 vmarch.lan systemd-logind[210]: Watching system buttons on /dev/input/event2 (Power Button)
May 25 21:28:19 vmarch.lan systemd-logind[210]: Watching system buttons on /dev/input/event3 (Sleep Button)
May 25 21:28:19 vmarch.lan systemd-logind[210]: Watching system buttons on /dev/input/event4 (Video Bus)

Note que no hay ningún dispositivo teclado. Ahora obtenga el nombre ATTRS del dispositivo de teclado  :

Ahora escriba una regla personalizada udev para añadir la etiqueta "power-switch":

/etc/udev/rules.d/70-power-switch-my.rules
ACTION=="remove", GOTO="power_switch_my_end"
SUBSYSTEM=="input", KERNEL=="event*", ATTRS{name}=="AT Translated Set 2 keyboard", TAG+="power-switch"
LABEL="power_switch_my_end"

Reinicie los servicios y recargue las reglas:

# systemctl restart systemd-udevd.service
# udevadm trigger
# systemctl restart systemd-logind.service

Ahora debe ver en syslog.

Ahorrar energía

Esta sección es una referencia para crear scripts personalizados y ajustar el ahorro energético mediante las reglas udev. Asegurese de que no están administradas por alguna otra herramienta para evitar conflictos.

Casi todas las características que se listan aquí serán útiles dependiendo de si el ordenador está conectado a corriente o a la batería. Muchas tiene un impacto considerable en el rendimiento y no están habilitadas por defecto porque normalmente causan problemas con los controladores/hardware. Reducir el uso de energía significa reducir el calor con el que se puede conseguir un mayor rendimiento en un CPU Intel o AMD moderno gracias al overclocking dinámico.

Procesadores con soporte HWP (Hardware P-state)

Las preferencias disponibles para la energía de un procesador que soporta HWP son .

Esto se puede comprobar con $ cat /sys/devices/system/cpu/cpufreq/policy?/energy_performance_available_preferences

Para conservar más energía puede configurarlo creando la siguiente línea:

Vea las páginas de manual y para más detalles.

Audio

Por defecto el ahorro de energía de audio está apagado por muchos controladores. Se puede activar ajustando el parámetro : tiempo (en segundos) para cambiar al modo en reposo. Para dejar en reposo la tarjeta de sonido después de un segundo crea la siguiente línea para las tarjetas de sonido Intel.

Alternativamente, utilice la siguiente para ac97:

options snd_ac97_codec power_save=1
Nota:
  • Para recuperar el fabricante y el controlador correspondiente del núcleo que se está utilizando en su tarjeta de sonido ejecute lspci -k.
  • Cambiar el estado de energía de las tarjetas de sonido puede causar que suene un estallido o una latencia notable en algún dispositivo roto.

Es posible reducir los requerimientos de energía de audio desactivando la salida de audio HDMI que se puede hacer añadiendo en la lista negra los módulos del núcleo apropiados (por ejemplo en caso de dispositivos Intel ).

Retroiluminación

Vea retroiluminación.

Bluetooth

Para desactivar completamente el bluetooth añada en la lista negra los módulos y .

Para apagar el bluetooth temporalmente utilice rfkill:

# rfkill block bluetooth

O con una regla udev:

Cámara web

Si no va a utilizar la cámara web integrada añada en la lista negra el módulo .

Parámetros Kernel

Esta sección utiliza las configuraciones en que es "un directorio para los parámetros de sysctl del kernel." Vea Los nuevos archivos de configuración y más especificamente sysctl.d(5) para más información.

Desactivar NMI watchdog

El watchdog NMI es una característica de desarrollador que captura los cuelgues que causan el kernel panic. En algunos sistemas puede generar muchas interrupciones causando un aumento del uso energético:

o añada al parámetro kernel para desactivarlo completamente desde el principio del arranque.

Tiempo de reescritura

Aumentando el tiempo de reescritura de la sucia memoria virtual ayuda a agregar discos I/O juntos reduciendo así las escrituras en disco distribuidas y aumentando el ahorro energético. Para establecer este valor en 60 segundos (por defecto está en 5 segundos):

Para hacer lo mismo con las actualizaciones de journal en los sistemas de ficheros soportados (p.ej. ext4, btrfs...) utilice commit=60 como una opción en fstab.

Note que modificando este valor tiene un efecto secundario de la configuración del modo portátil descrito a continuación. Vea también memoria virtual para otros parámetros que afectan al rendimiento I/O y ahorran energía.

Modo portátil

Vea la documentación del kernel en el modo portatil 'knob.' "Un valor sensible para knob es 5 segundos."

Interfaces de red

Wake-on-LAN Puede ser una característica útil pero si no va hacer uso de ella es simplemente un consumo extra de energía esperando un paquete mágico mientras está en suspensión. Puede adaptar la regla udev para deactivar la característica para todas las interfaces de red. Para activar el ahorro de energía con en todas las interfaces inalámbricas:

El nombre del archivo de configuración es importante. Con el uso de nombres fijos de dispositivos, en systemd la regla de red de arriba, nombrado léxico-gráficamente después 80-net-setup-link.rules, se aplica después de que el servicio se renombre con un nombre fijo p.ej renombrada a . Tenga en cuenta que el comando se ejecuta después de que todas las reglas se hayan procesado y tienen que utilizar de cualquier forma el nombre fijo disponible en para el dispositivo emparejado.

Tarjetas inalámbricas Intel (iwlwifi)

Se pueden activar funciones adicionales de ahorro de energía de las tarjetas inalámbricas Intel con el controlador pasando los parámetros correctos al módulo kernel. Para hacerlo permanente se puede guardad añadiendo la línea de debajo al archivo /etc/modprobe.d/iwlwifi.conf file:

options iwlwifi power_save=1 d0i3_disable=0 uapsd_disable=0
options iwldvm force_cam=0

Tenga en mente que estas opciones de ahorro de energía son experimentales y pueden causar inestabilidades en el sistema.

Administración de energía en estado activo

Si cree que el ordenador no soporta ASPM se desactivará en el aranque:

# lspci -vv | grep 'ASPM.*abled;'

ASPM lo maneja la BIOS. Si ASPM está desactivado puede ser porque:

  1. La BIOS lo ha desactivado por alguna razón (¿Por conflictos?).
  2. La PCIE requiere ASPM pero L0s es opcional (puede que L0s esté desactivado y solo esté activado L1).
  3. La BIOS aún no ha sido programada para ello.
  4. La BIOS esta defectuosa.

Si cree que el ordenador tiene soporte para ASPM se puede forzar al kernel que se encargue con el parámetro kernel .

Para ajustar el ejecute (el siguiente comando no funcionara a no ser que este activado):

# echo powersave > /sys/module/pcie_aspm/parameters/policy

Por defecto se mostrara como esto:

Administración de energía PCI en tiempo de ejecución

La regla de arriba apaga todos los dispositivos no utilizados pero algunos dispositivos no se despertarán. Para permitir la administración de energía PCI en tiempo de ejecución que sabe que funcionan utilice simplemente la combinación de vendedor y el ID del dispositivo (utilice lspci -nn para obtener estos valores):

Alternativamente para poner en la lista negra los dispositivos que no funcionan con la administración de energía PCI en tiempo de ejecución y activarlo para todos los demás dispositivos:

Auto suspensión USB

El kernel Linux puede suspender automáticamente los dispositivos USB cuando no se utilizan. Esto ocasionalmente puede ahorrar un poco de energía. Sin embargo algunos dispositivos USB no son compatibles con el ahorro de energía USB y se inicia con un mal comportamiento (normalmente con ratones y teclados). Las reglas udev basadas en la lista blanca o lista negra puede ayudar a mitigar el problema.

Lo más simple y seguramente inservible es habilitar la auto suspensión para todos los dispositivos USB:

Para permitir auto suspender solo los dispositivos que sabe que van a funcionar simplemente utilice la combinación entre vendedor y el ID del producto (utilice lsusb para obtener estos valores):

Alternativamente para poner en la lista negra los dispositivos que no funcionan con la auto suspensión USB y activarlo para el resto de dispositivos:

/etc/udev/rules.d/50-usb_power_save.rules
# Lista negra auto suspensión usb
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", ATTR{idProduct}=="9205", GOTO="power_usb_rules_end"

ACTION=="add", SUBSYSTEM=="usb", TEST=="power/control", ATTR{power/control}="auto"
LABEL="power_usb_rules_end"

El tiempo de retardo por defecto en la auto suspensión se controla con el parámetro del módulo kernel . Para establecer el retardo a 5 segundos en vez de los 2 segundos por defecto:

De forma similar para el tiempo de retardo puede personalizarse para cada dispositivo ajustando el atributo .

Vea la documentación kernel de Linux para más información sobre la administración de energía USB.

Administración de energía de enlace activo SATA

Desde Linux 4.15 hay un nuevo ajuste llamado que marca el comportamiento de los ajustes del controlador Windows IRST y no debería causar pérdida de datos en discos SSD/HDD recientes. El ahorro de energía puede ser insignificante, entre 1.0 a 1.5 Vatios (en reposo). Será un ajuste por defecto en los portátiles basados en Intel en Linux 4.16 .

Los ajustes actuales se pueden leer desde /sys/class/scsi_host/host*/link_power_management_policy como sigue:

# cat /sys/class/scsi_host/host*/link_power_management_policy
Ajustes ALPM disponibles
Ajuste Descripción Ahorro energético
max_performance Actualmente por defecto Ninguno
medium_power - ~1.0 Vatios
med_power_with_dipm Ajuste recomendado ~1.5 Vatios
min_power ADVERTENCIA: Posible pérdida de datos ~1.5 Vatios

Controlador de disco duro

Vea Configuración energética hd para más información sobre los parámentros que se pueden establecer.

El ahorro energético no es efectivo cuando varios programas están escribiendo en el disco duro. Siga todos los programas y como y cuando escriben en el disco para poder limitar el uso del disco. Utilice iotop para ver qué programas utilizan el disco frecuentemente. Vea mejorar el rendimiento de dispositivos de almacenamiento para otros consejos.

También detalles como ajustar la opción noatime puede ayudar. Si hay suficiente RAM disponible considere limitar o deshabilitar swappiness limitando posiblemente un gran número de escrituras a disco.

Herramientas y scripts

Utilizar un script y una regla udev

Desde que los usuarios de systemd pueden suspender o hibernar a través de o y encargarse de los eventos acpi con puede ser interesante eliminar pm-utils y acpid. Solo hay una cosa que systemd no puede hacer (a partir de systemd-204): administrar la energía dependiendo su el sistema está ejecutando con AC o con batería. Para solventar esto puede crear una regla udev simple que ejecute un script cuando el adaptador AC se conecte y desconecte:

Ejemplo de un script de powersave:

Las reglas udev de arriba suelen funcionar como se esperan pero su sus ajustes de energía no se actualizan después de suspender o hibernar debe añadir un script en con el siguiente contenido:

/usr/lib/systemd/system-sleep/00powersave
#!/bin/sh

case $1 in
    pre) /ruta/a/su/script false ;;
    post)       
	if cat /sys/class/power_supply/AC0/online | grep 0 > /dev/null 2>&1
	then
    		/ruta/a/su/script true	
	else
    		/ruta/a/su/script false
	fi
    ;;
esac
exit 0

¡No olvide hacerlo ejecutable!

Ajustes de energía de la impresora

Este script ajusta la administra energéticamente la impresora y otras propiedades para los dispositivos PCI y USB. Note que se necesitan permisos root para ver todos los ajustes.

Vea también

gollark: Although lots of proprietary stuff is moving to a subscription model which is highly æææ.
gollark: IKR, right? I've just gotten used to stuff being free/open source now.
gollark: Also, muahahahahahahahahahahahahahahahaha I have achieved void linux installation.
gollark: Or, well, anyone else's.
gollark: You can't prove human consciousness at all.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.