Implementación de Retpoline en Windows 10 Pro

Google desarrolló Retpoline, una técnica inteligente de control de flujo y Microsoft lo ha adaptado al kernel de Windows. Retpoline acelera drásticamente las operaciones y procesos dependientes de la ejecución especulativa sin comprometer la seguridad. En este artículo detallo la Implementación de Retpoline en Windows 10 Pro.

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

Esta optimización  aporta mejoras en velocidad de un 25 a un 50 % en ciertas áreas.

Microsoft, tras meses de trabajo, finalmente ha adaptado Retpoline al kernel de Windows. En este artículo detallo como activarlo en sistemas Windows 10 y aprovechar sus ventajas en velocidad.

Continuar leyendo “Implementación de Retpoline en Windows 10 Pro”

VirtualBox Guest Additions en VM Red Hat RHEL 7.6

Dedico este artículo a la instalación de las VirtualBox Guest Additions en un Host Windows 10 Pro.

Las Guest Additions brindan numerosas posibilidades a nuestras máquinas virtuales y facilita mucho su utilización.

Oracle VM VirtualBox
Oracle VM VirtualBox

En este caso el Sistema Guest es un Red Hat RHEL 7.6 Server con interfaz gráfica. En otro artículo detallaré su instalación en una VM VirtualBox y algunas claves de configuración.

Recientemente hablé en este Blog sobre virtualización. En mi anterior artículo me centré en optimizar las prestaciones de VMs en VirtualBox para Windows 10. Estas optimizaciones de rendimiento iban dirigidas a máquinas con procesadores multicore, específicamente a CPUs con 8 cores y 16 threads como los AMD Ryzen 7 2700X o los Intel Core i9 9900K.

Instalación de las VirtualBox Guest Additions

La instalación es sencilla pero no está exenta de unos cuantos pasos, muchos de ellos se realizan en consola y con privilegios root.

Continuar leyendo “VirtualBox Guest Additions en VM Red Hat RHEL 7.6”

Afinidad, Scheduler de Windows 10 y Virtualización

En el artículo anterior hablé sobre el Scheduler de Windows y algunas optimizaciones posibles afinitizando tareas a CPUs lógicas poniendo de manifiesto técnicas para mejorar el threading en sistemas Windows 10.

En este me centraré en la Virtualización y como puede beneficiarse de manera importante asignando de forma permanente y definida recursos de CPU  a las VM.

Mediante el Administrador de Tareas podemos modificar el comportamiento de un componente crucial de Windows: El Scheduler de Windows 10.

Afinidad y Virtualización

En un Host Windows 10 puedo asignar 4 cores con SMT (un CCX completo con su L3 de 8 MB y 8 threads) a una VM Ubuntu 18.04 LTS en VirtualBox con excelentes resultados en velocidad y sin mermas de prestaciones en el Host Windows 10.

Pondré un ejemplo práctico con VirtualBox y un Guest Ubuntu 18.04 LTS en un Host Windows 10 Pro 1809 x64.

Primero, como base vamos a ver el comportamiento nominal de VirtualBox en Windows 10 Pro.

Continuar leyendo “Afinidad, Scheduler de Windows 10 y Virtualización”

El Scheduler de Windows 10 y las CPU multicore

En este artículo describiré sencillas optimizaciones de rendimiento aplicables a la mayoría de aplicaciones multithread debido a las interacciones  entre el Scheduler de Windows 10 y las CPU multicore.

Estas aplicaciones comprenden la inmensa mayoría del software:

  • Compresores de archivos (WinRAR, 7Zip…)
  • Software de edición de imagen, vídeo y audio (Adobe Photoshop, Audition…)
  • Escaneos antimalware.
  • Cargas ML, DL y AI.
  • Cálculos matemáticos y simulaciones numéricas.
  • Compilación.
  • Y cualquier software ejecutado en multitarea.

Las CPUs multicore actuales de interés para este estudio integran desde 4 cores con SMT, es decir, ejecutan más de 8 threads simultáneos. Las pruebas para este artículo las he ejecutado en el siguiente sistema portátil con 8 cores y 16 threads:

  • Windows 10 Professional 1803 x64
  • CPU AMD Ryzen 7 1700 de 8 núcleos y 16 threads
  • 8 cachés L2 512 KB y 2 L3 8 MB
  • Frecuencia fijada a 3.4 GHz para los tests (repetitividad)
  • Voltaje CPU 1.10 V @ 3.4 GHz
  • 24 GB DDR4 @ 2400 (16 + 8 GB)
  • SSD Sansung Evo 970 500 GB NVMe PCIex 3.0 4X
  • Driver NVMe Samsung
  • SSHD Seagate Firecuda 1 TB (HD Híbrido)
  • GPU AMD Radeon RX580 (driver 18.9.3)

El scheduler de Windows 10

El funcionamiento del Scheduler de Windows 10 (el sistema encargado entre otras tareas de distribuir los threads a las CPUs lógicas) tiene un funcionamiento muy optimizado. No es perfecto pero realmente hace un mejor trabajo que las versiones anteriores de Windows (8.1, 8, 7…) y marca una evolución evidente en el manejo de cargas multithread.

Continuar leyendo “El Scheduler de Windows 10 y las CPU multicore”