SkillAgentSearch skills...

Ufrop

UFROP is a plugin to enable NVM Express® Flexible Data Placement (FDP) support on RocksDB.

Install / Use

/learn @kioxia-jp/Ufrop
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

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

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

View on GitHub
GitHub Stars7
CategoryCustomer
Updated19d ago
Forks1

Languages

C++

Security Score

85/100

Audited on Mar 17, 2026

No findings