Starting to play with dependent SQEs for io_uring. Enables things like "read data from here, then write to there". Or "open this file, then read this data from it". It's a powerful primitive, and eliminates wait points in sequences of operations.
As postgres uses a per-process model (for now at least), the uring sizes + additional buffers wouldn't be exactly free...
-
-
uring size isn't that costly, each sqe is just 64 bytes and a cqe is 16 bytes. So if you went from needing 256 entries for 128 pending writes instead of just 128 entries, you're using 20kb of memory instead of 10kb. That's hardly more than a single write anyway.
-
I suspect that going from async buffered writeback to RWF_SYNC would require a significant number of queue entries for each process. And all of those would have to point to a userland 8KB buffer for each IO. It's not a problem if we just use two SQEs (write + sync_file_range).
- 2 more replies
New conversation -
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.