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 ... 
随机推荐
- scrapy+selenium 爬取淘宝商城商品数据存入到mongo中
			1.配置信息 # 设置mongo参数 MONGO_URI = 'localhost' MONGO_DB = 'taobao' # 设置搜索关键字 KEYWORDS=['小米手机','华为手机'] # ... 
- Laravel 项目中事件控制的体会--综合应用 trait 多态
			1 我们想像有这样的需求 1.1 应用中有两个类.其一是 荣誉(Honour)其一是 档案(Archive)Honour 和 Arhcive 是多态关联.即拥有档案属性的不只荣誉类,还有更多的类去关联 ... 
- 在linux写一个shell脚本用maven git自动更新代码并且打包部署
			服务器上必须安装了git maven jdk 并且配置好环境变量 实际服务器中可能运行着多个Java进程,所以重新部署的时候需要先停止原来的java进程,写一个按照名称杀死进程的脚本 kill.sh ... 
- linux下编译利用CMakeLists.txt 编译C++写的opencv程序
			https://hihozhou.com/blog/2017/05/11/linux-compile-opencv-c++-file.html cmake . make -j8 
- 关于Linux上面无法读取资源目录下文件的问题
			一开始我的代码是这样子的,读取本地子路径下的json文件 代码运行的时候,在window是可以正常的 @Override public String getBannerStr() { String s ... 
- No Desktop License Servers available to provide a license
			远程桌面连接失败,提示:“no Remote Desktop License Servers available to provide a license” 原因:没有remote desktop l ... 
- oracle获取当前月的第一个星期五
			-to_char(trunc(sysdate,'month'),'D') end || '号是当月的第一个星期五' from dual; 
- CentOS服务器安装部署Java环境(jdk,tomcat)
			第一步:卸载openjdk 用命令 java -version,如有下面的信息说明CentOS自带OpenJdk,没安装跳过这一步: 最好还是先卸载掉openjdk,再安装oracle公司的jdk.先 ... 
- POCO C++库笔记 【1.Foundation基础库的结构】
			Foundation库是POCO的基础库,提供了一些C++编程中常用的功能的抽象封装,主要由以下这些部分组成: Core -- 这部分除了建立跨平台库的基础头文件外,最有意义的部分是分装了原子计数的 ... 
- leetcode218 天际线问题
			来自leetcode题解:扫描线法AlgsCG class Solution { public: vector<vector<int>> getSkyline(vector&l ... 
