PREEMPT_RT also includes a lot of possible low-latency work.
io_uring also provides ridiculous performance benefits for normal server code, too.
My experience with io_uring is that it requires a fairly fundamental change in the way you architect software, which makes it hard to retrofit it to existing code (eg. code using poll). If you have a greenfield project that requires very high performance and will only/mainly run on Linux then you should strongly consider it. I'd actually love to hear peoples' thoughts on whether there is a good way to retrofit code.
Most software doesn’t properly use the old io_submit facility and that has been around for decades, despite the large performance improvements possible. Even when io_uring is widely deployable, most software won’t use it.
But sometimes it means that what you have is software that can't run on recent enough kernel to have io_uring (^_^;;)
Does the job nicely without even half the boilerplate of aio if you use liburing.