SDF:Software-Defined Flash for Web-Scale Internet Storage System

一.参考

http://www.csdn.net/article/a/2013-12-18/309280

http://gtstorageworld.blog.51cto.com/908359/1269024

http://www.searchstorage.com.cn/microsites/2014sds/index.html

http://www.baike.com/wiki/%E8%BD%AF%E4%BB%B6%E5%AE%9A%E4%B9%89%E9%97%AA%E5%AD%98

二.其他

1.其核心创新点是“Software Defined”(软件定义):硬件Flash通道向软件暴露,通过系统的角度解决硬件复杂性和不确定性,使软件能充分利用硬件的潜能,让硬件变得更加简单。

众所周知,传统SSD具有一些缺点,如实际性能只有理论性能的50%左右、20%~50%的冗余空间无法使用等,这造成了巨大的硬件成本浪费,无形中也提高了运维成本。随着SSD被广泛应用,这些成本浪费问题越来越凸显。

面对这样的现状,林仕鼎于两年多前提出了Software-Defined Flash的创新概念,并启动相关项目。如今,百度已自主研发了SSD并在内部成功上线。相比市场上主流PCIe Flash卡,百度自研SSD性能提高2倍(在同样的成本下),每GB的成本下降40%~50%,相对于传统SATA SSD,性能提高5倍,每GB成本持平。被ASPLOS收录的论文就源于这一项目。

三.论文本身

摘要

1.目前的问题

(1)Currently only 40% or less of the raw bandwidth of the flash memory in the SSDs is delivered by the storage system to the applications.

目前,固态硬盘的原始带宽的利用率不到40%(由存储系统传送到应用程序。)

(2)Moreover, because of space over-provisioning in the SSD to accommodate nonsequential or random writes, and additionally, parity coding across flash channels, typically only 50-70% of the raw capacity of a commodity SSD can be used for user data

为了适应随机写入,以及 flash channels中的奇偶校验码,所以只有50-70%的固态硬盘的原始容量用来存储用户数据

2.目的:

we seek to maximize both bandwidth and usable capacity

扩大带宽和可用的容量

3.为了达到此目标,提出:SDF-software-defined flash

a hardware/software co-designed storage system to maximally exploit the performance characteristics of flash memory in the context of our workloads.

硬件/软件协同设计的存储系统,硬件/软件协同设计的存储系统 最大限度地利用闪存的性能特点 存储在我们的工作负荷的情况下。

SDF exposes individual flash channels to the host software and eliminates space over-provisioning. The host software, given direct access to the raw flash channels of the SSD, can effectively organize its data and schedule its data access to better realize the SSD’s raw performance potential.

SDF向主机软件公开独立的闪存通道,并消除过度配置的空间。主机软件,给予直接访问到SSD的原始闪存通道,可以有效地组织其数据并排定其数据访问,以更好地实现对SSD的原始性能潜力。

介绍

1.SSD的带宽构成 

The raw bandwidth of an SSD is obtained by multiplying its channel count, number of flash planes in each channel, and each plane’s bandwidth.

SSD的带宽由channel的数量和每个channel中的plane的数量决定。

The raw bandwidth of each plane is mainly determined by the flash feature size and was disclosed to us by the respective vendors

每个plane的带宽主要由flash的feature size决定, 这个是由供应商提供数据

*************

?1. We keep the small read unit but greatly increase the write unit size to be a multiple of the flash erase block size and require write addresses to be block-aligned. Thus write amplification is eliminated because no flash block can contain both valid and invalided data pages at the time of garbage collection

减小了读单元,增大了写单元,使得擦除快和写的地址对齐,这样就使得写放大消失,因为闪存快中没有同时包含有效的和无效的数据页。

*********补充********

1.http://ju.outofmemory.cn/entry/90907

百度研究 SDF 的动机有两点:1. 固态盘的空间利用率低;2. 固态盘的带宽利用率低。解决这两个问题,可以降低成本(用更少的固态盘满足需求,更低的冷却、占地、硬件成本)。

固态盘的空间利用率低的原因是:1. over-provisioning (OP)和 2. parity-coding across channels。固态盘一般会额外提供一些存储空间,称为OP,来加速随机写;parity coding 则将每个写请求编码分布到不同 channel去,通过数据冗余保证数据的可靠性,这和 RAID 的思想类似。SDF为了解决存储成本,1. 取消了 OP,所有存储空间都是可见的;2. 取消了 parity coding,也不做条带,每个写请求都只分发到一个 channel,通过上层的 replication 保证数据的可靠性。

固态盘的带宽利用率低的原因和解决方案是:1. 传统操作系统的 I/O 路径过长,穿过整个 I/O Stack 需要大概12微秒,这对磁盘来说不是问题,但对高性能固态盘却无法忽略,SDF 使用IOCTRL直接访问PCIe驱动(见原文图6);2. 过多的中断,每个I/O 请求都会触发中断,SDF 通过合并中断,将中断数减少到1/4 – 1/5(见原文第4页末);3. 将 channel 直接暴露给上层应用,上层应用可以利用 channel 级并行(EuroSys 的论文实际在讨论这个问题,见下文),每个 channel 对于应用来说都像一个独立的 SSD,有自己的 FTL;4. 增大写单元到若干个 block,舍弃对小写的支持(见第5页末);5. 耗时的 erase 命令会使得 SSD 的性能不稳定,由上层应用直接调用 erase 命令控制垃圾回收(见第6页右栏)。

原文地址:https://www.cnblogs.com/yaolei/p/3715729.html