问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SSD的随机写一定很慢吗

发布网友 发布时间:2022-04-26 05:30

我来回答

1个回答

热心网友 时间:2022-04-12 14:33

对SSD一种常见的认识是随机读、顺序读、顺序写都很快,但随机写很慢。从很多目前公布的产品性能指标数据和测试结果看,确实如此。一般SSD小块随机读性能可以达到几万甚至过十万,但小块随机写性能则一般只有3-5千,相差一个数量级。

我认为这一认识不完全正确。SSD是一个很复杂的硬件,也还在不断改进,各代产品的性能表现往往有很大差异,针对不同的IO操作模式,SSD的性能表现可能有非常大的差异,它的性能表现决不能用“三快一慢”来简单的描述。要用好SSD,需要从原理上对SSD有深刻的理解,这样才能预计各种应用模式下SSD的性能表现,特别是才能预计出未来SSD的性能特征将走向何方。

SSD最基础的硬件是一堆可以并行操作的NAND Flash,之上的控制器提供了读写缓存、LBA到HBA的映射、wear-leveling、garbage collection等众多功能。控制器非常复杂,各个产商的实现也都不同,但基本上可以认为一个设计的还不错的SSD应该能够较好的发挥出底层NAND Flash的性能。如此,了解底层NAND Flash的性能特征非常重要。根据Wikipedia和《Design Tradeoffs for SSD Performance》论文的数据,NAND Flash的基本性能指标大致如下:
4K Page read latency: 25us
4K Page write latency: 200us
256K Block erase latency: 1.5ms
相对于SSD产品升级换代带来的性能差异,基础NAND Flash的性能指标保持比较稳定。

根据这一基础硬件的性能指标作些简单计算。
256K Block read latency: 1.6ms,单NAND颗粒读带宽:160MB/s
256K Block write latency: 13ms,单NAND颗粒写带宽:20MB/s
回收一个空的Block:1.5ms
回收一个近满(50个有效页面)的Block:(25us + 200us) * 50 + 1.5ms = 13ms

据此可以对SSD的性能作出一些分析和预测。

首先,从基本的硬件指标来看,写性能只有读性能的1/8,但目前的SSD产品顺序写的性能不比顺序读要慢很多。无论是Intel X-25/320还是Fusion IO,顺序写性能仅仅只比顺序读低10-20%,而不是只有1/8。这个问题,再仔细看一下可以发现主要原因是SSD的带宽已经到了接口的*。比如Intel 320系列,顺序读270MB/s,顺序写也有220MB/s,这主要是因为接这个SSD的SATA 3的带宽极限就只有375MB/s,再加上内存拷贝,200多MB/s其实已经接近整个硬件系统的极限了,SSD本身的读写性能再高也没用。但如果将来接口带宽大幅提高不成为瓶颈,则SSD顺序读写之间的性能差异就可能突显出来。

其次,无论是随机写还是顺序写,由于SSD都采用Copy on Write机制,最终对NAND Flash来说都是顺序写。那为什么经常随机写的性能要远差于顺序写?这里主要的差异在于页面的失效模式。随机写会导致随机的页面失效,顺序写会导致连续的大块页面失效。页面随机失效时,要回收block,需要将block中的有效页面读出并写到新位置,然后erase block,而连续的大块页面失效时,由于要erase的block中一般已没有有效页面,拷贝写到新位置的过程就没有了。

如果应用的IO访问有高峰和低谷,使得在低谷时可以完成垃圾回收的话,则erase的性能影响可不再考虑,此时随机写的吞吐率应该跟顺序写相当。反之,则erase对写性能的影响很大程度上取决于要回收的Block中的有效页面数。可以看到回收空Block和回收近满Block的用时相关很大。这可以解释为什么Intel SSD中用越多的Over Provisioning,随机写性能越高。Intel 320系列300G型,如果只用180G留120G用作Over Provisioning,则随机写IOPS就从用足300G的1400/s提高到6600/s。如果应用只用8G的话,则随机写IOPS更是可以高到23000/s。由此可见SSD随机写的性能并不一定很差,如果系统能在空闲时完成垃圾回收,或应用操作少量数据,则随机写性能应与随机读没有数量级上的差异。

不过从基础的理论数据计算,erase对性能的影响不应该像Intel 320系列那样有10多倍的影响,回收一个近满Block用时与写一个Block是差不多的,理论上应只会导致性能相差一半。这里有可能是因为Intel SSD的硬件内部IO并行不好,比如垃圾回收不能在所有NAND Flash上并行进行,或者控制器的算法还不够好。高端的硬件如Fusion IO,其随机写就不比随机读差。Intel还未发布的Ramsdale SSD的随机写IOPS也将过5万,我预计将来随着SSD技术的进步,其性能表现可能接近于基础NAND Flash的性能,随机写与顺序写之间的性能差异可能大幅缩减。

而未来的SSD,将可能更多的体现出基础硬件NAND Flash的性能特征,即:
1、无论顺序写还是随机写,其性能都远比顺序读或随机读差,可能接近一个数量级;
2、随机写性能与顺序写性能之间可能只存在2-3倍左右的差异。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 长痘痘要用什么 网易邮箱怎么取消手机绑定?(不再绑定手机号但是保留邮箱号) 硬盘里面随机读写是什么意思? 我要开商混*,需要写一个付款协议,请大家帮忙给你范本,十分感激 身上过敏 ssd还分随机和顺序io吗 我买了一套房子,总价值40万,付了定金7000元。签了一个认购协议和付款承诺书那个付款承诺书有法律效力吗 长痘痘用什么药 什么是随机读写 长痘痘应该用什么护肤品 存储阵列的随机读写是不是比顺序读写性能差? 有人说我是属黑狗的什么意思 长痘痘了用什么好? 如何判断文件是顺序读写还是随机读写 小牛电池闪烁还能跑多远 家里来了一条黑狗可有什么暗示意思? 小牛N1电瓶多少公里换? 电池回收要多少钱? c语言中在所有情况下顺序读写比随机读写效率高对吗? 身上经常过敏怎么办 小牛ms电池保护板多少 硬盘的连续读写、随机读写、缓存,在实际使用中,各体现在什么方面? 为什么过敏身上会有小红点和圪塔啊 次月付款协议要怎么弄 硬盘连续读写与随机读写的区别 脸上长痘痘用什么好呢? 硬盘是随机读写的吗?如果不是,请问它的读写顺序是什么? 皮肤全身过敏怎么回事? 水浒传如何好书推荐 我要开商混*,需要写一个付款协议,请大家帮忙给你范本,十分感激� 数据库是随机读写还是连续读写 身上过敏为什么会痒呢? ssd顺序和随机性能 长痘痘要擦什么 - 信息提示 怎么通过电脑蓝牙传文件 存储器的分类及它们的读取顺序 长痘痘,用什么药最好 长痘痘了能不能用护肤品 关于内存读写怎么看,有什么影响 蓝牙可以传软件吗怎么传