Una nueva característica con Intel 4th Gen Xeon Scalable”Sapphire Rapids”de la que no se ha hablado demasiado es la nueva funcionalidad de interrupciones de usuario (UNITR). El soporte del kernel de Linux aún no se ha fusionado, pero ha mostrado resultados prometedores en forma de parche.

Anteriormente, Intel (desde 2020) documentó interrupciones de usuario dentro de su Manual de referencia de programación ISA. A fines de 2021, Intel comenzó a publicar parches del kernel de Linux para interrupciones de usuario.

La descripción de Kconfig X86_USER_INTERRUPTS en esta nueva función de CPU se reduce a:

Las interrupciones de usuario son eventos que se pueden enviar directamente al espacio de usuario sin una transición a través del núcleo. Las interrupciones pueden ser generadas por otra aplicación de espacio de usuario, kernel o dispositivo.

Y de la serie de parches RFC original sobre la implementación de interrupciones de usuario:

Hoy, prácticamente todas las comunicaciones a través de los límites de privilegios ocurren mediante pasando por el núcleo. Estos incluyen señales, canalizaciones, llamadas a procedimientos remotos y notificaciones basadas en interrupciones de hardware. Las interrupciones del usuario proporcionan la base para versiones más eficientes (baja latencia y baja utilización de la CPU) de estas operaciones comunes al evitar las transiciones a través del kernel.

En la arquitectura de hardware de interrupciones de usuario, siempre se espera que un receptor sea una tarea de espacio de usuario. Sin embargo, otra tarea de espacio de usuario, kernel o una fuente externa (como un dispositivo) puede enviar una interrupción de usuario.

Los resultados de rendimiento con el kernel parcheado de Intel para interrupciones de usuario han sido muy prometedores. Los primeros números de rendimiento en Sapphire Rapids mostraron una mejora de rendimiento de ~9x o superior mediante el uso de interrupciones de usuario sobre otros mecanismos de IPC para la señalización de eventos. Las interrupciones de usuario se ven geniales para un IPC más rápido, pero en el transcurso de 2022 no vimos mucho más de Intel en esta nueva característica de Sapphire Rapids.

Al momento de escribir, el soporte de Interrupciones de usuario para el kernel de Linux no se ha fusionado pero Intel todavía está trabajando en el código del núcleo. Han puesto en cola su trabajo a través de intel/uintr-linux-kernel en GitHub. Los últimos parches de uintr-next se actualizaron a mediados de octubre. Los parches introducen la nueva llamada al sistema uintr_wait(), agregan soporte UINTR a IO_uring y otra infraestructura en torno a este soporte de señalización de eventos de usuario.

Esperemos que este soporte de Interrupciones de usuario para Sapphire Rapids llegue al kernel principal de Linux este año como una característica que lamentablemente no se fusionó a tiempo para el día del lanzamiento y hasta ahora no hemos escuchado más antecedentes o información sobre su retraso.

Categories: IT Info