读写SSD的注意事项

标签: 硬件相关 | 发表时间:2016-03-01 12:55 | 作者:Litrin
出处:http://www.litrin.net

在几次对SSD硬盘进行fio的测试之后,我们采用了与传统硬盘相似的做法:依次采用了512K,1K, 2K,4K直至2M大小的数据对一块NVMe 企业级SSD进行读写测试,测试它的延时,并在不同的主机/操作系统上做出了2组数据,最终,得到了下图。

SSD Pormormance Chart

纵坐标表示延时的时常,单位是ns;暖色调表示对磁盘读的测试结果,而冷色调则是代表对磁盘写的测试结果。相信只要是明眼人一看就能明白这个数据似乎有很严重的问题: 对于小于4K的数据写入操作,系统会有惊人的延时,甚至延时的时长可以用秒来计算。令人吃惊的是两组数据的结果出入居然不大!

种种迹象说明,对于小文件的写入,SSD确实存在性能低下的问题。

另一个测试是连续数小时对SSD进行写操作,记录下每秒的操作数据,得到了如下图表:

不管如何测试,总会有一根断崖式的“跳楼线”出现在测试结果中。

这要从SSD的几个设计思路讲起。

我们知道,正常情况下,操作系统在format一块硬盘的时候,会有一个“簇”的概念。“簇”也就成了操作系统读写文件的一个最小单位。兴许是出于对这种“簇”概念的映射,SSD在内部也有簇的概念,我们称之为“page(页)”。SSD设备的读写都遵循以page为单位,也就是说:

  1. Reads are aligned on page size
  2. Writes are aligned on page size
  3. Pages cannot be overwritten
  4. Erases are aligned on block size

对应我的测试数据,当读取数据大小小于4K的page大小时,根据“1”,我们可以得知,SSD的主控芯片会将一个page的数据取出,然后截断到合适的大小即可,性能不会有太大的损失;而当写入一个小于page size的数据时,根据“2”可知,SSD的主控会等待数据填充至4K大小才能进行回填,性能自然会大幅下降。

看到这里,你一定会问:“对于现实中小文件的问题如何解决?”其实这个fio的测试数据是针对裸盘来进行的,对于已经被操作系统格式化的SSD只要保证它格式化时簇的大小是page的整倍数即可,而操作系统则可以完成对对于小于一个簇文件的自动缓存和填充。

未命名2

对于数据的修改,根据3可知,SSD的主控芯片的操作并不是直接修改page的内容,而是将数据填充进一个新的page,然后SSD通过索引(register)位置的方式重新定义该文件的page。旧的簇会被索引标记为stale。

当SSD磁盘中 所有的page都被占用的时候,SSD就会自动触发垃圾回收机制(garbage collection)连续的stale pages会被合并成一个block并一次性清空。而这个清空的过程在实际状况下对于用户来说是自动启动且透明的,正常使用中我们是很难感觉到这个过程的存在,但在这个属于非正常使用的测试中,这个过程就会被反应成一个明显的“跳楼线”。

相较传统的物理硬盘,由于NAND芯片存在的擦写次数有限的缺陷,而且不能通过覆盖的方式更新文件。相较传统机械硬盘的读写模式,这样的读写操作比较复杂,但这从一定程度上减少了由于操作系统上部分文件过于频繁的修改(比如日志文件、swap文件等)导致的少数page迅速劣质化的问题。这种通过“擦除+写入”的实现方式由于擦除的耗时远远大于写入的过程,而且这个垃圾回收是针对于整个硬盘来说的,所以擦除的过程就成了整个测试中的瓶颈。

由于SSD需要定期触发GC进行垃圾回收,对于普通用户来说,长时间+大负荷的写入操作之后,尽可能的给SSD一个相对较为平静的时间段有利于SSD发挥更好的写性能。

相关 [ssd 注意] 推荐:

读写SSD的注意事项

- - 开源小站
在几次对SSD硬盘进行fio的测试之后,我们采用了与传统硬盘相似的做法:依次采用了512K,1K, 2K,4K直至2M大小的数据对一块NVMe 企业级SSD进行读写测试,测试它的延时,并在不同的主机/操作系统上做出了2组数据,最终,得到了下图. 纵坐标表示延时的时常,单位是ns;暖色调表示对磁盘读的测试结果,而冷色调则是代表对磁盘写的测试结果.

SSD 以及其它

- 我爱小老虎 - DBA Notes
在微博上说起了 SSD 和高端存储的话题. 在 SSD 出现之前,高端存储厂商很多年都在安稳的赚钱,尽管互相之间也有竞争,但单个设备动辄上百万,总有钱可赚. SSD + PC 服务器这个组合的出现终将革掉他们的命. EMC / HDS / IBM 这几家公司卖存储的朋友恐怕日子都比较难过. 据说苹果新的数据中心买了 EMC Isilon 的设备作为存储解决方案,12 PB 的存储(refer),不差钱的主总是有的.

干掉光驱、拥抱 SSD

- hama - apple4us
我几乎不用光驱,但它却占据了笔记本内相当大一部分空间(见图). 光驱用的是 SATA 接口,我决定把它拆出来,换上一块固态硬盘(后文称 SSD). 我垂涎 SSD 已久,但又有很多资料需要存储,在笔记本内保留一块大容量传统机械式硬盘(后文称 HDD)同时加装一块 SSD 做系统盘似乎是最完美的选择.

SSD 安装与优化

- - 操作系统 - ITeye博客
1.BIOS中打开ACHI,并且关闭兼容IDE,如果安装前忘记这个,可以安装后,改注册表:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\msahci 的START值为0. 3.关闭休眠:cmd: powercfg -h off. 4.确认trim: cmd: fsutil behavior query DisableDeleteNotify,如果DisableDeleteNotify=1,更新主板程序一般能解决.

SSD FRESH – 一键快速优化 SSD 硬盘

- - 小众软件 - Appinn
SSD FRESH 是款专门优化 SSD 硬盘(Solid State Drive)的软件,可以延长 SSD 硬盘使用寿命以及部分性能. 青小蛙在体验过 SSD 的速度(普遍在500MB/s左右)后,就再也无法忍受普通硬盘(7200转硬盘内部传输速率约为 66MB/s)的龟速了(当然 SSD 的速度还取决于接口速度,比如 SATA2.0 只能达到 300MB/s,而 SATA3.0 则理论上可以 600MB/s).

SSD的随机写一定很慢吗?

- crystal - 风轻扬
对SSD一种常见的认识是随机读、顺序读、顺序写都很快,但随机写很慢. 从很多目前公布的产品性能指标数据和测试结果看,确实如此. 一般SSD小块随机读性能可以达到几万甚至过十万,但小块随机写性能则一般只有3-5千,相差一个数量级. SSD是一个很复杂的硬件,也还在不断改进,各代产品的性能表现往往有很大差异,针对不同的IO操作模式,SSD的性能表现可能有非常大的差异,它的性能表现决不能用“三快一慢”来简单的描述.

KingMax带领SSD跨入TB时代

- ghx88 - cnBeta.COM
9月15日,国际知名存储大厂KINGMAX携业界首个1TB容量SSD固态硬盘高调亮相北京. 会场显著位置,落地海报一行排开,除了备受世人瞩目的大容量SSD之外,KINGMAX的其他存储设备也有着力宣传,包括了奈米冰神内存,高速高容量存储卡以及USB3.0极速U盘等等.

三星发布512GB 500MB/s的笔记本SSD

- 锟小胖 - cnBeta.COM
韩国三星周三公布了最新的SSD产品线,2.5英寸PM830型号带着512GB的最大容量来到市场,这款大容量高速SSD采用了最尖端的20nm制程闪存,256bit AES加密,DDR技术让性能方面可以带来500MB/s的读取速度和350MB/s的写入速度,支持SATA3.0接口,可用于台式机和笔记本.

关于《干掉光驱、拥抱 SSD》一文的补充

- BOLIWA - Apple4.us
这里集中回答一下大家关于《干掉光驱、拥抱 SSD》的主要疑问:. 理论上光驱不属于用户可以自行拆卸、更换的部件,所以可能会影响保修政策. 但由于光驱上并没有任何封条,可以先拆了,等需要保修的时候再把它装回去. 拆装过程中稍微注意一点其实看不出来任何区别. (当然,如果这样还是被看出来了因而拒保,请不要来找我……).

新串行ATA标准瞄准SSD和平板

- raincoatrun - Solidot
串行ATA标准管理机构SATA-IO宣布了两个新接口标准,其中一个还在开发之中,另一个已经完成. SATA 3.0的最大传输带宽是6Gb/s,新的SATA Express标准结合了SATA软件栈和PCI Express 3.0的传输速率,能提供最高16Gbps的带宽. 另一个uSSD标准则已经准备就绪,它的传输速率仍然保持6Gb/s,但抛售了传统的SATA连接器,可以允许SSD控制器直接焊到主板上,针对的是超轻薄笔记本和平板电脑.