File descriptor caching for value log #106
Labels
blocked
enhancement
New feature or request
good first issue
Good for newcomers
help wanted
Extra attention is needed
performance
Currently, when doing a range read over an uncached bunch of blobs, each blob will incur an
fopen()
syscall.If the blobs sit in the same blob file, the repeated calls of
fopen()
can be cached away.Blob files should also be cached like Segment files are, this needs an adjustment of the descriptor table to allow both LSM segment files and blob files to be stored (probably some kind of compound key), perhaps simply using
quick-cache
. Because we want to globally cap file descriptor usage, there needs to be a single descriptor cache that houses both segment and blob files. I would recommend rewriting the DescriptorTable, because it's bad.Blocked by fjall-rs/value-log#9 because the value log needs a new generic parameter to acquire a file descriptor (using a compound key ValueLogId + BlobFileId).
Benchmark of current behaviour, scanning over 5 x 4K blobs.
40% of the runtime sits in
fopen()
. Onefopen()
sits at around ~1µs per call.Reproduction
The text was updated successfully, but these errors were encountered: