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页右栏)。
SDF:Software-Defined Flash for Web-Scale Internet Storage System的更多相关文章
- Method of Seamless Integration and Independent Evolution of Information-Centric Networking via Software Defined Networking
A method of transferring data between a software defined network (SDN) and an information-centric ne ...
- RFIDler - An open source Software Defined RFID Reader/Writer/Emulator
https://www.kickstarter.com/projects/1708444109/rfidler-a-software-defined-rfid-reader-writer-emul h ...
- NFV-based QoS provision for Software Defined Optical Access and residential networks
文章名称:NFV-based QoS provision for Software Defined Optical Access and residential networks 发表时间:2017 ...
- Improving Network Management with Software Defined Networking
Name of article:Improving Network Management with Software Defined Networking Origin of the article ...
- Web Scale IT 与 6 种 DevOps 工具
新年伊始,在总结过去一年 IT 行业变化和发展的同时,不少企业更关注未来一年甚至几年的行业趋势.Gartner 于 2014 年发表了文章 Gartner Says By 2017 Web-Scale ...
- NFV-Based Scalable Guaranteed-Bandwidth Multicast Service for Software Defined ISP Networks
文章名称:NFV-Based Scalable Guaranteed-Bandwidth Multicast Service for Software Defined ISP Networks 发表时 ...
- 错误<BEA-101165> <Could not load user defined filter in web.xml
<2017-7-4 上午10时13分33秒 CST> <Error> <HTTP> <BEA-101165> <Could not load us ...
- Software Defined Networking(Week 1)
前言 课程名称:软件定义网络 课程地址 Coursera上新的一期还没开课,所以是YouTube. Instructor:Nick Feamster Get Started 对于本次课程,主要的新内容 ...
- 阅读Deep Packet Inspection based Application-Aware Traffic Control for Software Defined Networks
Deep Packet Inspection based Application-Aware Traffic Control for Software Defined Networks Globlec ...
随机推荐
- HDU 6102 - GCDispower | 2017 Multi-University Training Contest 6
个人感觉题解的复杂度很玄,参不透,有没有大佬讲解一下- - /* HDU 6102 - GCDispower [ 数论,树状数组] | 2017 Multi-University Training C ...
- keras计算指定层的输出
import keras model = keras.models.Sequential([ keras.layers.Dense(4, activation='relu', input_dim=1, ...
- JavaScript属性名和属性值
㈠属性名 var obj = new Object(); 向对象中添加属性 ⑴属性名: - 对象的属性名不强制要求遵守标识符的规范 什么乱七八糟的名 ...
- trigger(type,[data]) 在每一个匹配的元素上触发某类事件。
trigger(type,[data]) 概述 在每一个匹配的元素上触发某类事件.大理石平台价格表 这个函数也会导致浏览器同名的默认行为的执行.比如,如果用trigger()触发一个'submit', ...
- dcokee 安装 nginx
1,docker pull openresty/openresty 2, mkdir /opt/local/openresty 等等文件夹 3, docker run --name=" ...
- 监控redis性能
注存数据,取数据的功能,即 set,get,非常适合用作缓存服务器,降低后端数据库压力.有时,想确认下数据是否是从 redis 里读的,以及 redis 是怎么取得数据,这时就可以使用 monitor ...
- Tomcat配置 https SSL证书
HTTP与HTTPS的区别:HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Soc ...
- Mac 下python3 [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed 解决方法
原文:http://blog.yuccn.net/archives/625.html python3.6下使用urllib 的request进行url 请求时候,如果请求的是https,请求可以会出现 ...
- python桶排序代码
代码基于3.8 def bucketSort(nums): #选择一个最大的数 max_num = max(nums) # 创建一个元素全是0的列表, 当做桶 bucket = [0]*(max_nu ...
- Java和python中的面向对象
Python与Java中的示例类 Java类是在与类同名的文件中定义的.因此,必须将该类保存在一个名为Car.java的文件中.每个文件中只能定义一个类. public class Car { pri ...