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:
parent
c038770620
commit
d5d24e3e9d
@ -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
36
doc/about.md
Normal 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.
|
@ -2,6 +2,7 @@
|
||||
|
||||
# Introduction {#intro}
|
||||
|
||||
- @ref about
|
||||
- @ref getting_started
|
||||
- @ref vagrant
|
||||
- @ref changelog
|
||||
|
Loading…
x
Reference in New Issue
Block a user