Comment by wahern
5 days ago
> Nothing about preadv lets you indicate you only want to read what's already in the page cache.
preadv2 + RWF_NOWAIT
5 days ago
> Nothing about preadv lets you indicate you only want to read what's already in the page cache.
preadv2 + RWF_NOWAIT
That’s not going to work for read ahead unless you’re really only requesting 1 page at a time which is terrible for performance across the board. That syscall will return EAGAIN if any data is missing to satisfy the read. Meaning if you issue a request for 128kib, it’ll error even if it has 124kib.
There really aren’t optimal user space APIs. What you want ideally is a way to register a callback on a memory region so that the kernel is able to treat it like page cache and then on a fault you regenerate it using said callback. Thats even more efficient because usually you have to do some processing of the on disk representation (eg if it’s compressed).