Mejore el consumo de energía y la duración de la batería mediante la minimización del trabajo en segundo plano
En esta guía se muestra cómo mejorar el consumo de energía de la aplicación de Windows, ofreciendo principios que le ayudarán a mejorar el rendimiento general de los dispositivos y la duración de la batería.
Los principios más básicos para mejorar el consumo de energía son asegurarse de que, mientras la aplicación está en segundo plano, no:
- se usen los recursos del sistema,
- se reactive la CPU mediante temporizadores,
- se reactive la CPU esperando a eventos vsync.
Si la aplicación está "en segundo plano", significa que no es visible ni audible para el usuario. Debe haber pocas razones para reactivar la CPU o utilizar los recursos del sistema en segundo plano. Comprobar si la aplicación desencadena estos eventos y abordar la causa puede mejorar significativamente el consumo de energía de la aplicación, la duración de la batería y podrá reducir las emisiones de carbono resultantes del uso que los clientes hagan de la aplicación.
Para comprobar que la CPU no se reactiva para hacer un trabajo innecesario mientras la aplicación no está en uso, puede capturar y analizar un proceso de seguimiento mediante Windows Performance Analyzer (WPA). A continuación se muestran los pasos que detallan cómo puede hacerlo.
Es importante configurar las condiciones correctas al ejecutar la aplicación antes de capturar un proceso de seguimiento para analizar si existe algún trabajo innecesario activo que pueda agotar la energía. También es posible que quiera ejecutar varios procesos de seguimiento para probar la aplicación en una serie de condiciones.
Para asegurarse de que el dispositivo de prueba está inactivo, abra el Administrador de tareas y asegúrese de que el uso de la CPU sea inferior al 5 %. Al hacerlo, se minimizarán las interferencias de medición y se proporcionarán procesos de seguimiento de tamaño razonable.
Inicie la aplicación y vaya a una vista que se espera que se use con frecuencia.
Minimice la aplicación. *Es posible que quiera repetir los pasos siguientes mientras la ventana de la aplicación está totalmente ocluida (bloqueada de la vista) detrás de otras ventanas y cuando la aplicación está en primer plano, después de que el usuario pase un tiempo sin realizar ninguna interacción, para asegurarse de que la aplicación no inicia ningún trabajo innecesario.
Abra una línea de comandos (PowerShell o símbolo del sistema) en modo de administrador. (Si no ejecuta el modo de administrador, puede recibir el código de error: 0xc5585011, "No se pudo habilitar la directiva para generar perfiles del rendimiento del sistema").
Escribe el comando:
wpr -start power -filemode
.Deje el dispositivo inactivo durante 5 minutos.
Escribe el comando:
wpr -stop idletrace.etl
.Abra el proceso de seguimiento mediante Windows Performance Analyzer (WPA) y escriba el comando:
wpa.exe idletrace.etl
.Abra el gráfico Cálculo>Uso de CPU (preciso).
Vaya al proceso (o a un modelo de varios procesos relacionados con la aplicación) y evalúe el recuento de Cswitch, "Uso por CPU". Lo ideal es que estén lo más cerca de 0 posible mientras la aplicación está en segundo plano. Examinar las pilas es una excelente manera de saber dónde se usan los recursos y cómo puede mejorarlos.
Para buscar reactivaciones excesivas, agregue una "nueva pila de subprocesos" para ver en qué pila se reactivó el subproceso.
Abra el gráfico Cálculo>Uso de CPU (muestra). Realice un seguimiento de los problemas de uso de la CPU; para ello, evalúe dónde se dedica el tiempo de ejecución del código.
Nota
Céntrese en el uso básico de la CPU en la sección anterior antes de investigar este escenario más avanzado.
Abra una línea de comandos (PowerShell o símbolo del sistema) en modo de administrador.
Escribe el comando:
wpr -start gpu -filemode
.Deje el dispositivo inactivo durante 5 minutos.
Escribe el comando:
wpr -stop gputrace.etl
.Abra el proceso de seguimiento mediante Windows Performance Analyzer (WPA) y escriba el comando:
wpa.exe gputrace.etl
.Abra el gráfico Actividad del sistema>Eventos genéricos.
- Filtre por eventos "Microsoft-Windows-Dxgkrnl".
- Arrastre la columna Proceso para que sea la segunda columna.
- Compruebe si llama a WaitForVsync. Por ejemplo, a través de API como IDXGIOutput::WaitForVBlank (dxgi.h) mediante el evento
WaitForVerticalBlankEventInternal
.
Para obtener más información, consulte el artículo Uso de Windows Performance Analyzer para analizar los problemas de espera modernos.
Comentarios de Windows developer
Windows developer es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios: