From d5d24e3e9d101fb46f7f950c0c8fa84a398b0f6e Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Tue, 26 Dec 2017 13:22:55 -0700 Subject: [PATCH] doc: Add an overview page for the project Change-Id: I21b793c27aa7f24ffa1235c4a2c43d594148a689 Signed-off-by: Ben Walker Reviewed-on: https://review.gerrithub.io/392982 Tested-by: SPDK Automated Test System Reviewed-by: Jim Harris Reviewed-by: Paul Luse Reviewed-by: Daniel Verkamp --- doc/Doxyfile | 1 + doc/about.md | 36 ++++++++++++++++++++++++++++++++++++ doc/index.md | 1 + 3 files changed, 38 insertions(+) create mode 100644 doc/about.md diff --git a/doc/Doxyfile b/doc/Doxyfile index d474f700a..f0fa28245 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -782,6 +782,7 @@ WARN_LOGFILE = INPUT = ../include/spdk \ index.md \ + about.md \ changelog.md \ directory_structure.md \ getting_started.md \ diff --git a/doc/about.md b/doc/about.md new file mode 100644 index 000000000..e77196807 --- /dev/null +++ b/doc/about.md @@ -0,0 +1,36 @@ +# What is SPDK? {#about} + +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 through the use of a number of key +techniques: + +* Moving all of the necessary drivers into userspace, which avoids syscalls + and enables zero-copy access from the application. +* Polling hardware for completions instead of relying on interrupts, which + lowers both total latency and latency variance. +* Avoiding all locks in the I/O path, instead relying on message passing. + +The bedrock of SPDK is a user space, polled-mode, asynchronous, lockless +[NVMe](http://www.nvmexpress.org) driver. This provides zero-copy, highly +parallel access directly to an SSD from a user space application. The driver is +written as a C library with a single public header. See @ref nvme for more +details. + +SPDK further provides a full block stack as a user space library that performs +many of the same operations as a block stack in an operating system. This +includes unifying the interface between disparate storage devices, queueing to +handle conditions such as out of memory or I/O hangs, and logical volume +management. See @ref bdev for more information. + +Finally, SPDK provides +[NVMe-oF](http://www.nvmexpress.org/nvm-express-over-fabrics-specification-released), +[iSCSI](https://en.wikipedia.org/wiki/ISCSI), and +[vhost](http://blog.vmsplice.net/2011/09/qemu-internals-vhost-architecture.html) +servers built on top of these components that are capable of serving disks over +the network or to other processes. The standard Linux kernel initiators for +NVMe-oF and iSCSI interoperate with these targets, as well as QEMU with vhost. +These servers can be up to an order of magnitude more CPU efficient than other +implementations. These targets can be used as examples of how to implement a +high performance storage target, or used as the basis for production +deployments. diff --git a/doc/index.md b/doc/index.md index e9cd7426f..7f4003736 100644 --- a/doc/index.md +++ b/doc/index.md @@ -2,6 +2,7 @@ # Introduction {#intro} +- @ref about - @ref getting_started - @ref vagrant - @ref changelog