-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Change-Id: I54c50ab0e0595b3b3ea517fcac3539fb22d39125 Signed-off-by: Wenyun Xu <[email protected]> Reviewed-on: https://review.gerrithub.io/424165 Reviewed-by: GangCao <[email protected]> Reviewed-by: Jim Harris <[email protected]> Tested-by: SPDK Automated Test System <[email protected]>
- Loading branch information
Showing
1 changed file
with
13 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,39 +1,22 @@ | ||
--- | ||
layout: index | ||
title: Storage Performance Development Kit | ||
title: SPDK中文网站 | ||
lang: cn | ||
--- | ||
<style>p{ text-indent: 2em; }</style> | ||
Storage Performance Development Kit (SPDK)提供了一组用于编写高性能、可伸缩、用户态存储应用程序的工具和库。它通过使用一些关键技术来实现高性能: | ||
|
||
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: | ||
* 将所有必需的驱动程序移至用户空间,这样就避免了系统调用,并允许从应用程序中进行零拷贝访问; | ||
* 轮询硬件任务的完成而不是依靠中断,这会降低总延迟和延迟抖动; | ||
* 避免在I/O路径中出现锁, 而是依赖消息传递。 | ||
|
||
* 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. | ||
SPDK的基础是用户态、轮询、异步、无锁 | ||
[NVMe](http://www.nvmexpress.org) 驱动。这提供了从用户空间应用程序直接访问SSD的零拷贝、高度并行的访问。驱动程序被编写为带有一个公共头文件的C语言库。 | ||
|
||
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. | ||
SPDK进一步提供了一个完整的块堆栈,作为一个用户空间库,它执行许多与操作系统中的块堆栈相同的操作。这包括统一不同存储设备之间的接口、通过队列来处理内存不足或I/O挂起等情况以及逻辑卷管理。 | ||
|
||
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. | ||
|
||
Finally, SPDK provides | ||
最后,SPDK提供 | ||
[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. | ||
[iSCSI](https://en.wikipedia.org/wiki/ISCSI), 和 | ||
[vhost](http://blog.vmsplice.net/2011/09/qemu-internals-vhost-architecture.html)。 | ||
在这些组件之上构建的服务器,能够通过网络或其他进程为磁盘提供服务。NVMe和iSCSI的标准Linux内核启动器与这些target交互, 以及与QEMU和虚拟主机进行交互。与其他实现相比,这些服务器的CPU效率可以提高一个数量级。这些target可以用作实现高性能存储目标的范例,也可以用作生产部署的基础。 |