Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the Unix/Linux equivalent of Registered I/O?

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?

like image 500
Evgeniy Berezovsky Avatar asked May 28 '15 01:05

Evgeniy Berezovsky


2 Answers

Starting with Linux Kernel 5.1 there is finally proper support with io_uring.

like image 78
damageboy Avatar answered Sep 29 '22 12:09

damageboy


It seems netmap is that - and more:

In building netmap, we identified and successfully reduced or removed three main packet processing costs:

  1. per-packet dynamic memory allocations, removed by preallocating resources
  2. system call overheads, amortized over large batches
  3. 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
like image 34
Evgeniy Berezovsky Avatar answered Sep 29 '22 13:09

Evgeniy Berezovsky