大话SSD(淘宝核心系统数据库组 褚霸)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
好处: • 低成本,高性能 • 对应用透明 可选方案: • Facebook FlashCache • FusionIO DirectCache • 文件系统 存在问题: • 性能损失 • 单点故障 • 数据热点问题
Agenda
初见 相识 相知 相爱
交流时间Βιβλιοθήκη Baidu
谢谢大家! SSD未来会很快普及, 我们做好相爱的准备了吗?
淘宝使用案例
• • • • • • • • • CDN IC库 TC主库 TC读库 Oceanbase Vstore 图像搜索 Tair ...
Agenda 初见 相识 相知 相爱
PCI-E/SATA接口
Intel X25-M/SATA
FusionIO iodrive/PCI-E
Virident tachion/PCI-E
大话SSD
淘宝核心系统数据库组 褚霸 http://yufeng.info 2011/06/25
Agenda 初见 相识 相知 相爱
存储设备IOPS演变史
设备 7200 RPM SATA drives 15k RPM SCSI drives Intel X25-M G2 (MLC) ioDrive, a PCI-Express card with Flash IOPS ~90 IOPS ~180 IOPS ~8,600 IOPS 接口 SATA II SAS SATA II
with Flash 140,000 PCIe Read IOPS, 135,000 Write IOPS 1,180,000+ Random Read/Write IOPS PCIe
Fusion-io ioDrive Octal
存储设备价格对照
设备 SATA 7200转 SAS 10000转 Intel X25-M 160G FusionIO iodrive MLC 320G Virident tachion SLC 400G 价格/每 价格 每GB 0.1 USD 0.4 USD * USD * USD * USD
对程序员的影响
• • • • • • SSD=/=磁盘,传统软件基于机械硬盘设计。 IOPS不再是问题,如果利用好是问题。 离散读写非常快(3个数量级),顺序读写没优势。 读写延迟时间小。 读不消耗寿命,写消耗,越小的数据写越不合算。 同一个位置写,由于均衡算法的存在,不会磨损芯片的同一位 置。 • 尽量合并写。
写放大倍数和寿命
数据库典型的应用: Intel X25-M: 5-8倍 FusionIO iodrive: 2-3倍 可以透过ssd设备提供的监控程序(如smartctl)来获取这些参数 . 寿命: Intel X25-M: 200T FusionIo iodrive 320G: 4P
数据安全性
SSD写入如何发生的呢?
背景知识1:Nand芯片擦写次数
Generation 2x 3x 5x 100,000 100,000 100,000
SLC 2,500 5,000 10,000
MLC
eMLC
35,000
背景知识2:写放大倍数
写放大倍数的定义:SSD物理写字节数/应用逻辑写字节数 放大倍数越大,说明: • 设备不够好 • 我们没用好 • 寿命杀手
抖动和延迟
由于数据整理的不可避免性,抖动也是不可避免的。 Intel: 脏块回收做的不是很好,在使用过程中,数据写入多的情况下 抖动会很厉害。 FusionIO: 相对好些,但是也会有轻微抖动。 可以通过加大reserve容量(通常默认20%)来大大缓解这个问题。 延迟时间可能会达到1ms.
SSD作为L2Cache方案
数据校验: • ECC校验 • Raid冗余 • Intel X25-M支持硬件raid卡,FusionIO 只能做软raid 掉电保护: • 大电容保护 • 日志系统 数据恢复时间: • FusionIO最多10分钟左右(内部日志系统)
驱动对应用的影响
Sata接口:标准Linux驱动,驱动开销很小 PCI-E接口:每个厂家驱动不同,对CPU和内存的消耗可能会非常 大。 FusionIO在峰值的时候可能会占用1-2G内存, 最多 1x0%CPU, Virident由于板载处理器CPU消耗比较小。 中断开销: • 中断多的时候是否可以考虑均衡
Agenda
初见 相识 相知 播种
选择
• • • • • • • • • 多线程和IOPS 文件系统的选择 IO块大小 SLC还是MLC 写放大倍数 数据安全性 驱动对应用的影响 抖动/延迟 L2 Cache方案
离散读性能/线程数目
离散写性能/线程数目
文件系统的影响
IO块大小的影响
Nand: MLC还是SLC
对程序员的影响(续)
• SSD IO吞吐量1.XG/s, 内存是4-6G/s, 可看作是更大的内 存? • MMAP做后备内存,和jemalloc这样的内存分配器配合。 • 异步IO, 保证IO请求队列深度。 • 对SSD的特性进行算法优化。 • fsync能力是数据类应用天花板。
使用SSD通常要考虑的问题
Intel X25/M Nand内部布局
数据如何写入SSD(1)
数据如何写入SSD(2)
数据如何写入SSD(3)
数据如何写入SSD(4)
垃圾收集导致IO性能下降
Agenda 初见 相识 相知 相爱
适用环境
• • • • • 对IOPS要求高,离散读多。 离散写多。 需要低延迟。 作为后备内存。 作为L2 Cache 。