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»