Uncached buffered IO is back, after a 5 year hiatus. Simpler and cleaner now. Up to 65-75% improvement, at half the CPU usage on my system. And none of the nonsense of the unpredictability of the page cache. See commit 1 and 3 for read/write perf data.
@axboe I haven't been following any of this… why is it much simpler this time around?
@Aissen Because it's now just using the page cache as the synchronization rather than private pages, which is what the version from 5 years ago did.
Still got a few kinks to iron out, but there's not much to this now.
@axboe interesting! Couldn't this be used to force-drop some highly needed pages (by other processes) from the page cache, forcing a re-read?
@Aissen Right now it drops everything, but you could just drop the parts you instantiated. Only tricky bit there is read-ahead.
@axboe no, I was thinking as a local attack on performance by a different user, but anyone can do that already with posix_fadvise anyway.
@Aissen Yeah this is nothing new in that sense, the page cache is per-inode anyway.