uNVMe-Blobfs
: SPDK Blob filesystem Improvement on LBA SSD
-
Support Multiqueue
- spdk_file_read() API now supports multiple io channels, in turn, nvme queues.
- will further apply Multiqueue on write path later on -
Cache / Prefetch Policy
- Introduce 8 new APIs to leverage SPDK Blobfs cache and readahead// set/get retain read cache flag (default = false) void spdk_file_set_retain_cache(struct spdk_file *file, bool retain); bool spdk_file_get_retain_cache(struct spdk_file *file); // set/get readahead size (default = 256*2 KB) void spdk_file_set_prefetch_size(struct spdk_file *file, int size); int spdk_file_get_prefetch_size(struct spdk_file* file); // set/get readahead threshold (default = 128 KB) void spdk_file_set_prefetch_threshold(struct spdk_file *file, int size); int spdk_file_get_prefetch_threshold(struct spdk_file *file); // set/get direct_io (default = buffered IO) void spdk_file_set_direct_io(struct spdk_file *file, uint32_t direct_io); uint32_t spdk_file_get_direct_io(struct spdk_file *file);
-
BM tools on uNVMe-blobfs
- app/Blobfs_perf : a novel BM tool working on blobfs layer
- app/uNVMe_rocksdb : apply changes to reflect uNVMe-blobfs
- further includes vanilla rocksdb / spdk /dpdk for comparison with uNVMe-Blobfs (will be removed on public release) -
Documents
- Documentation
-
Bug Fix for KV SSD
- kv_itearte_open() was not return the error code(KV_ERR_ITERATE_NO_AVAILABLE_HANDLE = 0x91) and (KV_ERR_ITERATE_HANDLE_ALREADY_OPENED = 0x92). Now it is fixed to properly return the error codes.
-
Refactorings
Notes: The uNVMe-blobfs changes only apply on LBA SSD, not influences on KV SSD.