We don't want to maintain an in-process read cache, as that just duplicates what's already in the kernel's page cache. We also want to let the OS handle readahead for us. However, in the worst case, we'll end up doing 16 KiB random reads, which will spend a significant amount of time in syscall overhead. See if io_uring might help with this. It would also reduce the number of threads we'd need.
We don't want to maintain an in-process read cache, as that just duplicates what's already in the kernel's page cache. We also want to let the OS handle readahead for us. However, in the worst case, we'll end up doing 16 KiB random reads, which will spend a significant amount of time in syscall overhead. See if io_uring might help with this. It would also reduce the number of threads we'd need.