Implementación de Retpoline en Windows 10 Pro

Google desarrolló Retpoline, una técnica inteligente de control de flujo, para acelerar drásticamente las operaciones y procesos dependientes de la ejecución especulativa. La clave de Retpoline es hacerlo, además, sin comprometer la seguridad.

Microsoft ha adaptado recientemente Retpoline al kernel de Windows. En este artículo detallo la Implementación de Retpoline en Windows 10 Pro, con esta optimización conseguiremos mejoras de velocidad de un 25 – 50 % en ciertas áreas.

Google desarrolló Retpoline, una técnica inteligente de control de flujo, para acelerar drásticamente las operaciones y procesos dependientes de la ejecución especulativa. La clave de Retpoline es hacerlo, además, sin comprometer la seguridad.

Retpoline tiene como objetivo acelerar drásticamente las operaciones y procesamiento que dependen de la ejecución especulativa sin comprometer la seguridad.

En este artículo detallo como activar Retpoline en sistemas Windows 10 y aprovechar sus ventajas en velocidad.

Prestaciones con Retpoline habilitado

Por todos es conocida la gran afectación en prestaciones y velocidad que acarrearon los patches para todos los sistemas operativos Windows y distribuciones Linux para mitigar las vulnerabilidades descubiertas debidas a ejecución especulativa.

Según estudios de Microsoft, la implementación de Retpoline en el Kernel de Windows 10 ha aportado importantes mejoras en velocidad:

  • Hasta un 25% de mejora en el tiempo de lanzamiento de  aplicaciones.
  • Un 50% en el rendimiento del almacenamiento en los puntos de referencia de DiskSpd.
  • Mejoras drásticas en operación con redes  en las CPU de Broadwell 14 nm y Haswell 22 nm.

Bien, manos a la obra, vamos a habilitar Retpoline en nuestro sistema Windows 10 Pro.

Implementación en Windows 10 Pro

Los procedimientos aquí detallados están pensados para sistemas basados en CPUs Intel Broadwell y anteriores (Haswell, IvyBridge, …) con Windows 10 1809 instalado. No son compatibles con CPUs Intel Skylake:

«Since Retpoline is a performance optimization for Spectre Variant 2, it requires that hardware and OS support for branch target injection to be present and enabled. Skylake and later generations of Intel processors are not compatible with Retpoline, so only Import Optimization will be enabled on these processors.»

Lanzamos Windows PowerShell como administrador y ejecutamos:

PS> Install-Module -Name SpeculationControl
Instalación de Retpoline en Windows 10. Speculation Control
Instalación de Retpoline – Speculation Control

Y después:

PS> # Guardamos estado política ejecución
PS> $SaveExecutionPolicy = Get-ExecutionPolicy

PS> # comprobamos la variable
PS> echo $SaveExecutionPolicy
PS> Restricted

PS> # Ajustamos nueva política ejecución a RemoteSigned
PS> Set-ExecutionPolicy RemoteSigned -Scope Currentuser

PS> # Guardamos estado nueva política ejecución
PS> $SaveNewExecutionPolicy = Get-ExecutionPolicy

PS> # comprobamos la variable
PS> echo $SaveNewExecutionPolicy
PS> RemoteSigned
Instalación de Retpoline en Windows 10. Set-Execution Policy
Instalación de Retpoline – Set-Execution Policy

Continuamos:

PS C:\> Import-Module SpeculationControl
PS C:\> Get-SpeculationControlSettings

Aquí vemos los ajustes actuales del sistema operativo de la máquina de tests:

Instalación de Retpoline en Windows 10. Get-SpeculationControlSettings
Instalación de Retpoline – Get-SpeculationControlSettings

Y ahora debemos insertar valores en el registro de Windows. Esta es la implementación de retpoline en sí.

En SKUs de sobremesa o portátiles debemos ejecutar lo siguiente:

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 0x400

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 0x400

Instalación de Retpoline en Windows 10. reg add
Instalación de Retpoline – Adiciones claves al registro: reg add

Y reiniciar la máquina. Comprobamos que se ha aplicado la configuración:

PS> Get-SpeculationControlSettings

Retpoline activado en Windows 10
Retpoline correctamente activado en Windows 10
Retpoline activado en Windows 10
Retpoline correctamente activado en Windows 10

Como vemos, tras el reinicio ya tenemos Retpoline activado.

Nuestro equipo será mucho más rápido en múltiples tareas, sobretodo en las relacionadas con el almacenamiento, redes y arranque de aplicaciones.

Bibliografía complementaria

Microsoft: Retpoline en el kernel de Windows 10:

Artículo original de Google sobre a optimización Retpoline:

Intel sobre Retpoline en Skylake vs. arquitecturas anteriores (Broadwell 14 nm, Haswell 22 nm, IvyBridge 22 nm…):

Hasta la próxima.

Carlos Yus Valero