It Needs A Restart: GLIBC Drops Support For Restartable Sequences

Restartable Sequences were introduced into the kernel back in Linux 4.18 for allowing various performance benefits with this system call allowing for faster user-space operations on per-CPU data by avoiding expensive atomic operations. For work like querying the current CPU number, incrementing per-CPU counters, writing/reading to the per-CPU ring buffers, and other work can all be made faster by RSEQ. The performance improvements are looking very good with RSEQ in the kernel when taken advantage of.
For making it easier to utilize Restartable Sequences from user-space, glibc was adding support for it to make it easier for developers to make use of. Glibc's RSEQ support had been going through a lot of work before merged.
Two weeks ago the RSEQ support finally made it into Glibc, but already was reverted today. Red Hat's Florian Weimer commented in removing the support, "Linux: Remove rseq support. The kernel ABI is not finalized, and there are now various proposals to change the size of struct rseq, which would make the glibc ABI dependent on the version of the kernels used for building glibc. This is of course not acceptable."
Thus over concerns of potential ABI breakage should the kernel interfaces be changed, the GNU C Library's RSEQ support is sadly being removed for now... We'll see how long it takes to get the code back in there but given that it will likely be tied to a newer version of the kernel, unfortunate that it will take yet more time before widespread adoption of this feature beneficial to performance.
6 Comments