Skip to content

opiproject/spdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Storage Performance Development Kit (SPDK)

Linters Docker Travis License Pulls Last Release GitHub stars GitHub Contributors

The Storage Performance Development Kit (SPDK) provides a set of tools and libraries for writing high performance, scalable, user-mode storage applications. It achieves high performance by moving all of the necessary drivers into userspace and operating in a polled mode instead of relying on interrupts, which avoids kernel context switches and eliminates interrupt handling overhead.

This project contains Dockerfile for https://github.com/spdk/spdk

I Want To Contribute

This project welcomes contributions and suggestions. We are happy to have the Community involved via submission of Issues and Pull Requests (with substantive content or even just fixes). We are hoping for the documents, test framework, etc. to become a community process with active engagement. PRs can be reviewed by by any number of people, and a maintainer may accept.

See CONTRIBUTING and GitHub Basic Process for more details.

Installation

There are several ways of running spdk.

Docker

docker pull opiproject/spdk:<version>

You can specify a version like v22.09 or use latest to get the most up-to-date version.

docker run --rm opiproject/spdk:<version>

Compose

docker-compose is deprecated. For details, see Migrate to Compose V2.

docker-compose up --build --force-recreate

Test SPDK RPC proxy

See documentation JSON RPC Proxy

$ curl -k --user spdkuser:spdkpass -X POST -H "Content-Type: application/json" -d '{"id": 1, "method": "bdev_get_bdevs", "params": {"name": "Malloc0"}}' http://127.0.0.1:9009/
{"jsonrpc":"2.0","id":1,"result":[{"name":"Malloc0","aliases":["f1c5d95a-b235-40af-9e4d-2c0b3320de80"],"product_name":"Malloc disk","block_size":512,"num_blocks":131072,"uuid":"f1c5d95a-b235-40af-9e4d-2c0b3320de80","assigned_rate_limits":{"rw_ios_per_sec":0,"rw_mbytes_per_sec":0,"r_mbytes_per_sec":0,"w_mbytes_per_sec":0},"claimed":false,"zoned":false,"supported_io_types":{"read":true,"write":true,"unmap":true,"write_zeroes":true,"flush":true,"reset":true,"nvme_admin":false,"nvme_io":false},"driver_specific":{}}]}

Test Nvme

docker run --rm --network=host --privileged -v /dev/hugepages:/dev/hugepages \
              ghcr.io/opiproject/spdk:main \
              spdk_nvme_perf \
              -r 'traddr:127.0.0.1 trtype:TCP adrfam:IPv4 trsvcid:5555 subnqn:nqn.2016-06.io.spdk:cnode1 hostnqn:nqn.2014-08.org.nvmexpress:uuid:feb98abe-d51f-40c8-b348-2753f3571d3c' \
             -c 0x1 -q 1 -o 4096 -w randread -t 10