Linux Support For Sapphire Rapids’ User Interrupts Still Awaiting Mainline – Phoronix

Npressfetimg 11680.png

Show Your Support: This site is primarily supported by advertisements. Ads are what have allowed this site to be maintained on a daily basis for the past 18+ years. We do our best to ensure only clean, relevant ads are shown, when any nasty ads are detected, we work to remove them ASAP. If you would like to view the site without ads while still supporting our work, please consider our ad-free Phoronix Premium.

A new feature with Intel 4th Gen Xeon Scalable “Sapphire Rapids” that hasn’t been talked about too much is the new User Interrupts (UNITR) functionality. The Linux kernel support for it still also hasn’t been merged but has shown promising results in patch form.

Intel previously — all the way back in 2020 — documented User Interrupts within their ISA programming reference manual. In late 2021 Intel began posting Linux kernel patches for User Interrupts.

The X86_USER_INTERRUPTS Kconfig description on this new CPU feature comes down to:

User Interrupts are events that can be delivered directly to userspace without a transition through the kernel. The interrupts could be generated by another userspace application, kernel or a device.

And from the original RFC patch series on implementing User Interrupts:

Today, virtually all communication across privilege boundaries happens by going through the kernel. These include signals, pipes, remote procedure calls and hardware interrupt based notifications. User interrupts provide the foundation for more efficient (low latency and low CPU utilization) versions of these common operations by avoiding transitions through the kernel.

In the User Interrupts hardware architecture, a receiver is always expected to be a user space task. However, a user interrupt can be sent by another user space task, kernel or an external source (like a device).

The performance results with Intel’s patched kernel for User Interrupts have been very promising. Early performance numbers on Sapphire Rapids showed a ~9x or higher performance improvement by using User Interrupts over other IPC mechanisms for event signaling. User Interrupts look great for faster IPC but over the course of 2022 didn’t see much more form Intel on this new Sapphire Rapids feature.

As of writing the User Interrupts support for the Linux kernel has not been merged but Intel is still working on the kernel code. They have been queuing their work via intel/uintr-linux-kernel on GitHub. The latest uintr-next patches were updated as of mid-October. The patches introduce the new uintr_wait() system call, add UINTR support to IO_uring, and other infrastructure around this user event signaling support.

Hopefully we’ll see this User Interrupts support for Sapphire Rapids reach the mainline Linux kernel this year as a feature sadly not merged in time for launch day and so far haven’t heard any further backstory or information on its delay.

Source: https://news.google.com/__i/rss/rd/articles/CBMiPWh0dHBzOi8vd3d3LnBob3Jvbml4LmNvbS9uZXdzL0xpbnV4LVNQUi1JbnRlbC1Vc2VyLUludGVycnVwdHPSAQA?oc=5


Leave a Reply

Your email address will not be published. Required fields are marked *