doc: Add an overview page for the project

Change-Id: I21b793c27aa7f24ffa1235c4a2c43d594148a689
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.gerrithub.io/392982
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
Ben Walker 2017-12-26 13:22:55 -07:00 committed by Daniel Verkamp
parent c038770620
commit d5d24e3e9d
3 changed files with 38 additions and 0 deletions

View File

@ -782,6 +782,7 @@ WARN_LOGFILE =
INPUT = ../include/spdk \
index.md \
about.md \
changelog.md \
directory_structure.md \
getting_started.md \

36
doc/about.md Normal file
View File

@ -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.

View File

@ -2,6 +2,7 @@
# Introduction {#intro}
- @ref about
- @ref getting_started
- @ref vagrant
- @ref changelog