存储 频道

缓存对MLC SSD随机写入性能影响分析

    【IT168 专稿】随机写入的高延迟问题一直困扰着我们,也因此我们更希望用SSD来解决传统磁盘的随机写入效率问题。但在前面的测试(对比评测常见MLC SSD产品的写入性能,以及实际应用环境中MLC SSD产品的常见问题)中,我们发现市场上大多数MLC SSD产品仍然不能很好的解决这一问题。

  
    在我们前面的测试中,我们发现,Intel的MLC SSD产品在各项测试中均有领先的性能表现。与此同时,其他市场上的MLC SSD产品的性能表现相差SLC SSD产品实在相差太远,甚至对比一般的传统磁盘也并未有突出的性能表现。 
    实际上,市场上大多数的MLC SSD产品采用了相同厂商供应的驱动器,因此,这些MLC SSD的性能问题实际上是一个普遍问题。这些厂商的MLC SSD随机写入性能相比SLC SSD产品的性能差距实在太远,而Intel在相同条件下的测试数据则有良好的性能表现。对此,我们希望能深入探究其性能表现不佳的原因。
 
缓存对随机写入性能的影响 
Intel's controller (left) + DRAM (right)
 
     我们首先想到的是,这是因为MLC驱动器没有任何DRAM缓冲区,如果你稍加留意,你会发现英特尔的MLC驱动器是有DRAM缓冲区的。关于这点我询问过英特尔,并且关掉了英特尔驱动器内部的DRAM,他们称这些DRAM不是用于临时存储用户数据的,因为这会有很大的数据丢失风险,而这些DRAM缓存的真正用途是帮助英特尔的SATA或Flash控制器更快的定位数据该写向哪里(我估计是执行均衡损耗算法/可靠性算法)。 
    尽管都有外部的DRAM缓存存在,但英特尔和JMicron控制器都还是依靠内部的缓冲器缓存去访问固态硬盘。

JMicron JMF602产品性能分析 

JMicron JMF602 SSD驱动器产品

    我们预估其他SSD产品性能不佳的原因有可能是因为SSD控制器中没有数据缓存,但对于JMicron JMF602 SSD驱动器产品这个说法却说不通,因为他的芯片上有用于读/写请求的16KB大小的缓存,但我们几乎看不到JMicron JMF602控制器的任何一组数据让人满意。

    英特尔的控制器上有256KB的SRDM缓存。唯一的解释可能是英特尔在CPU缓存方面的经验让其SRDM的执行能力做的非常强。

    采用JMicron这样的方案,如果您尝试向驱动器中写入太多的数据并且数据很快让缓冲器填满,这时控制器就会告诉系统,它不能再写入更多的数据,系统需要暂停一下。

    如果你在使用过程中造成了JM602内部缓冲区的溢出,你的系统就将运行困难。应用程序将会花更多的时间去启动或关闭一个程序,Windows系统也将花更多的时间才能启动出现,反正是做和磁盘有关的任何事情都会出现明显的间断现象。

    你想发送一个即时消息?好吧,先写一个即时消息的日志吧,你可以想象在你发送即时消息之前的中断反应。在这种无缓存的MLC驱动器上,你会遇到最糟糕的下载网页状况,读/写缓存也将非常困难。

    出于娱乐,我尝试着在SuperTalent 60GB的 MLC驱动器上,读取5GB文件的同时载入AnandTech程序,从网站上载入大概花去了10秒钟时间。但是一旦JM602的缓存在读/写时处于空闲状态时,这个载入将在瞬间开始,直至我的DNS服务器出现问题。这种状况就好像我们的笔记本电脑打开过多的程序的时候一样,此时磁盘的快慢就将成为系统的瓶颈。

    值得庆幸的是,正如我们已经看到,这个问题是只限于JMF602的MLC驱动器。SLC驱动器和英特尔的MLC是完全没有问题的,因此,接下来我们将对比一下这些有问题的MLC驱动器,告诉大家哪些SSD我们将不会购买。

    JMicron的产品路线图显示,明年将会推出新的控制器,集成ARM内核并且支持外部DRAM ,可以缓解这些问题,但是现在该公司的SSD驱动器控制器还不具备这些功能。

1
相关文章