how do i get lowest possible datagram latency on Linux these days? io_uring? dpdk? raw sockets?
running a kernel with real time patches (recent NixOS boot.kernelPackages = pkgs.linuxPackages-rt)
dedicated machines, dedicated gigabit ethernet link(s), rt scheduling (jack audio)
Conversation
looking into dpdk it seems that this could in principle be used for hard real time applications
dedicated cores interact with nics directly using shared memory (dram or cache) and cores uses polling receive
2
1
Replying to
the absolute lowest latency answer is use a smart nic, the second lowest latency is run in a kernel thread, after that is probably cpu affinity and io_uring. though it also matters whether you're talking about worst-case, average, or 90th percentile
1
1
Replying to
mostly interested in worst case in the order of 1ms. this is for sending real time audio
1
intel e1000 seems to be supported in DPDK
so basically if i do UDP or raw Ethernet this shouldn't be too hard to try out... the NIC doesn't need to do anything smart i think?
1
Replying to
1
1
Exactly the kind of thing I'm looking for before diving in. Bad in what sense?
DPDK is basically a framework for writing a "unikernel" for packet processing. ...The unfortunate part is that you're effectively having to co-exist with Linux. That includes the scheduler, other tasks, etc...
1
1
I'd actually strongly suggest XDP with a userspace ring buffer, instead of DPDK.
1
1
Show replies


