Ufrop
UFROP is a plugin to enable NVM Express® Flexible Data Placement (FDP) support on RocksDB.
Install / Use
/learn @kioxia-jp/UfropREADME
UFROP
UFROP : <ins>U</ins>serland IO <ins>F</ins>ilesystem for <ins>Ro</ins>cksDB with FD<ins>P</ins> SSD
What is this?
UFROP can leverage Flexible Data Placement (FDP) interface defined in the NVM Express® with RocksDB. It is implemented as a plugin for RocksDB that can provide filesystem function in user space and can translate life time hints of files generated by RocksDB into PlacementIDs assinged in SSDs supporting FDP. It can exploit FDP with no additional instructions by user application because it uses a predefined life time hints within RocksDB. RocksDB applications with UFROP can decrease write the amplification factor (WAF) within SSDs so that lives of SSDs may be prolonged.
Dependencies
UFROP depends on Linux kernel 5.19 or later.
Getting started
How to build
Install required libraries.
$ sudo apt install build-essential git liburing-dev libnvme-dev libboost-dev
Build db_bench with UFROP plugin enabled.
$ git clone https://github.com/facebook/rocksdb.git
$ cd rocksdb
$ git clone https://github.com/KioxiaAmerica/ufrop.git plugin/ufrop
$ DEBUG_LEVEL=0 LIB_MODE=shared ROCKSDB_PLUGINS="ufrop" make -j32 db_bench
How to use
UFROP uses NVMe character device directly (such as /dev/ng0n1).
If you want to run RocksDB applications with UFROP enabled with user privileges, it is necessary for them to be able to access the character device.
$ chmod 777 /dev/ng0n1
To enable FDP, run applications with USE_FDP environment. To specify the target SSD, --fs_uri=fdpring:// is needed.
$ USE_FDP=true USE_DISCARD=true ./db_bench --fs_uri=fdpring:///dev/ng0n1 --benchmarks=fillrandom
Contributing
We welcome any feedback such as reports on usage and bugs.
Todo
- Multi drive support
Related links
- Article: Kioxia Demonstrates Flexible Data Placement-Enabled SSD Running RocksDB at 2024 OCP Global Summit
- Movie: FDP Discussion Panel at 2024 OCP Global Summit (KIOXIA's part)
License
UFROP is dual-licensed under both the GPLv2 (found in the COPYING file in the root directory) and Apache 2.0 License (found in the LICENSE.Apache file in the root directory). You may select, at your option, one of the above-listed licenses.
- NVM Express and NVMe are registered or unregistered trademarks of NVM Express, Inc., in the United States and other countries.
- The OCP and Open Compute Project marks are owned by and used with the permission of the Open Compute Project Foundation.
- Linux is a trademark of Linus Torvalds in the U.S. and other countries.
- Apache is either a registered trademark or a trademark of the Apache Software Foundation in the United States and/or other countries.
- All other company names, product names and service names may be trademarks of third-party companies.
Related Skills
openhue
349.0kControl Philips Hue lights and scenes via the OpenHue CLI.
sag
349.0kElevenLabs text-to-speech with mac-style say UX.
weather
349.0kGet current weather and forecasts via wttr.in or Open-Meteo
tweakcc
1.6kCustomize Claude Code's system prompts, create custom toolsets, input pattern highlighters, themes/thinking verbs/spinners, customize input box & user message styling, support AGENTS.md, unlock private/unreleased features, and much more. Supports both native/npm installs on all platforms.
