Windows 8 and Server 2012 sport RIO, which allows you to pre-register I/O buffers once and then just use those same buffers repeatedly, avoiding the otherwise (apparently) necessary per-I/O-op buffer checks.
RIO also allows completion operations such as polling to be done entirely in user-mode, without making system calls.
(How) is this possible with Linux/Unix?
Starting with Linux Kernel 5.1 there is finally proper support with io_uring.
It seems netmap is that - and more:
In building netmap, we identified and successfully reduced or removed three main packet processing costs:
- per-packet dynamic memory allocations, removed by preallocating resources
- system call overheads, amortized over large batches
- and memory copies, eliminated by sharing buffers and metadata between kernel and userspace, while still protecting access to device registers and other kernel memory areas
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With