Comment by a-dub
18 days ago
i wonder if we'll ever see hardware accelerated cross-context message passing for user and system programs.
18 days ago
i wonder if we'll ever see hardware accelerated cross-context message passing for user and system programs.
Shared ring buffers for IO exist in Linux, I don't think we'll ever see it extend to DMA for the NIC due to the rearchitecture of security required. However if the NIC is smart enough and the rules simple maybe.
There are systems that move the NIC control to user space entirely. For example Snabb has an Intel 10g Ethernet controller driver that appears to use a ring buffer on DMA memory.
https://github.com/snabbco/snabb/blob/master/src/apps/intel/...
"(You could think of it as a [busybox](https://en.wikipedia.org/wiki/BusyBox#Single_binary) for networking.)"
They sugggest thinking of busybox
But if using busybox, their Makefile will fail
Using toybox instead will work
RDMA offers that. The NIC can directly access user space buffers. It does require that the buffers are “registered” first but applications usually aim to do that once up front.
There is AMD's onload https://github.com/Xilinx-CNS/onload. It works with Solarflare, Xilinx but also generic NIC support via AF_XDP.
The price of doing that is losing OS controls over emitted packets. For servers fine. Browsers not so much.
sure, but what about some kind of generalized cross-context ipc primitive towards a zero copy messaging mechanism for high performance multiprocessing microkernels?