2011年(264)
分类: 服务器与存储
2011-07-08 21:36:47
IOPS:每秒钟做多少次输入输出次数。指的是系统在单位时间内能处理的最大的IO频度,一般OLTP应用涉及更多的频繁读写更多考虑IOPS。
FusionIO 7USB/GB
SATA II 的计算机体系结构
CPU
北桥 南桥
2GB/S(pci-express X 8)
使用PCI口不走南桥直接走 300M/S 南桥速度《CPU通磁盘走南桥大概300M/s》
北桥离CPU更近可以速度更快
(为了能够提高CPU的读写磁盘速度可以考虑采用PCI接口的直接让北桥连接到CPU)
SSD/IO
FLASH
SATA接口
Intel X25-M/SATA 多个蕊片一块工作的《尽可能支持并行开发提高CPU的使用率》
FusionIO iodrive/PCI-E 将其插到主板槽里面去。
卡坏了不可以支持热拔
SSD写入如何发生的呢?
背景知识1:Nand 芯片擦写次数
第三代的来讲
SLC MLC eMLC
100.000 5.000 35.000
擦写速度:
2M的BLOCK为单位,一次申请2M的块每次写入的时候将2M的块填满,如果要改写
就要先擦除掉。擦写擦写一次就减寿命减1.
写放大倍数
定义:SSD物理写字节数/应用逻辑写字节数
放大倍数越大说明:
设备不够好
我们没用好 如果一次就只写几个字节就可能导致写放大倍数加大!
寿命杀手 擦写次数是固定。
新买的SSD盘符速度非常快。到后面的速度下降非常慢。要理解SSD的写入机制
一开始的block都是空的。如果时间越到后面BLOCK就会占用満了,空闲的状态就要去找如果很快找到那速度就非常快如果找不到就速度下来了
这就是为什么速度会有抖动。先写满再写真实的表现
垃圾收集导致IO性能下降
为什么会随机去写而不是顺序写?
芯片多可以同时写。就会提升40倍。随机写会比顺序写
有可能是某个block块坏了。《颠覆原来的优化方案尽可能走顺序写现在是随机写》
擦除操作时间差大概为10ms左右。
磁盘优化工具
SSD不需要做碎片整理。内部在做这个整理!
(比如频繁写10分钟之后性能下来了然后休息片刻马上又恢复上去了)
适用环境
对IOPS要求高,离散读多.读不需要消耗寿命的。写会
离散写多 写很多写入速度非常快。
需要低延迟 传统的读写10ms SSD的盘读写在几十微秒
作为后备内存 内存4-6G/s 它大概在1.1G/s 这个吞吐量非常大了。可以将磁盘当主存来用了!!!
作为L2 cache 比如像CDN上 分三层。第一级热点到SSD 取不到SAS 再不到SATA《形成一个层 速度越来越慢容量越来越大》
对程序员的影响
SSD=/= 磁盘,传统软件基于机械硬盘设计
IOPS不再是问题 利用好是问题 IOPS过剩如何把它用好!尽量使用并行计算
离散读写非常快(3个数量级),顺序读写没优 随机读写优势明显
读写延迟时间小 几十微秒就够了
读不消耗寿命,写消耗,越小的数据写越不合算 尽量大的数据块写
同一个位置由于 均衡算法的存在不会磨损芯的同一位置
尽量合并写《一次写到磁盘》
SSD IO吞吐量1.XG/s 内存是4-6G/s 可看作是更大的内存
MMAP做后备内存和jemallo这样的内存分配器配合
异步IO保证IO请求队列深度 尽量使用异步IO,一次写入大的数据块而不是分块去写!
对SSD的特性进行算法优化 像MYSQL的传统的引擎。可以利用SSD的特性来写。比如MYSQL存储的算法。
fsync能力是数据类应用天花板
使用SSD通常要考虑的问题
PCI-E Flash卡测试报告
型号
软件硬件环境的最低要求《影响性能》
卡硬件架构 《卡硬件架构对性能的影响》
性能
over provisioning
寿命 每个厂家的SSD寿命差很多的
驱动程序
固件
数据安全性
监控
技术支持 厂家技术支持
性价比
市场开发
Hdd 贵
intel ssd
fusion io
选择
多线程和IOPS 《多线程编程与并发编程》CPU大概在16个线程 就可以放到比较高的水平了。异步IO 请求队列要有一定的深度
文件系统的选择 xfs是一个比较友好的一个比EXT3的性能要好文件系统的内部锁设计不太合理了。XFS线程越多速度越快《文件系统的锁机制决定的》
IO块大小
SLC还是MLC
写放大倍数
数据库典型应用
IntelX25-M 5-8倍
FusionlIO iodrive 2-3倍
可以透过SSD设备提供的监控程序(如smartctl)来获取这些参数
寿命:
Intel X 25-M:200T
Fusion iodrive 320G:4P 可以计算下大概寿命有多久
数据安全性
数据校验
ECC校验
Raid冗余
Intel X25-M支持硬件raid卡 Fusion IO只能做软raid
掉电保护:
大电容保护 会有寿命
日志系统 它是靠日志来维持可靠性的。一旦掉电就要从日志里面恢复数据《设备上的文件系统自己的数据》
不是真正写到磁盘而是先写到日志系统。
数据恢复时间
FusionIO最多10分钟左右(内部日志系统)
驱动对应用的影响
Sata接口 工业标准。标准LINUX驱动驱动开销小
PCI-E接口 每家厂家驱动不同对CPU和内存的消耗可能会非常大。FusionIO在峰值的时候可能会导致占用1-2G内存
最多1X0% CPU
中断开销:中断多的时候是否可以考虑均衡
满负载的时候中断就会比较高。就是上下文的切换。频繁的进程的上下文切换
抖动/延迟
Intel脏块回收做的不是很好在使用过程中数据写入多的情况下抖动很厉害
FusionIO 相对要好些。但也有轻微抖动
解决办法:
可以通过加大reserve容量(通常默认20%)来大缓解这个问题延迟时间可能会达到1ms
L2 Cache的方案
包括CDN
好处:
低成本、高性能
对应用透明
可选方案
Facebook FlashCache
FusionIO DirectCache
文件系统
《将两个设备的优点绑定在一块。像FusionIO可以将SSD设备与SAS或SATA绑定在一块使用》
存在问题
性能损失《中间层多了,性能损失》
单点故障
数据热点问题《数据的热点要有热点。命中缓存》
MLC VS SLC
MLC的密度很高,一个芯片存储容量大。成本很低的!
SLC现在已经不推了。MLC可以用到非常好。4P的寿命。大概3年的寿命使用了!