无忧启动论坛
标题: 对于 SSD 的 4KB随机读取的意义的探求,随机写入并不重要 [打印本页]
作者: sairen139 时间: 2019-12-30 16:24
标题: 对于 SSD 的 4KB随机读取的意义的探求,随机写入并不重要
本帖最后由 sairen139 于 2019-12-30 16:54 编辑
对于 SSD 的 4KB随机读取的意义的探求,随机写入并不重要
4KB随机读取访问IOPS是SSD根本性能的直接表征。要理解为什么要先理解SSD的工作方式。
简单说,SSD可以抽象为一个这样的设备——许多闪存芯片,连接到一个控制器上,这个控制器负责控制如何访问这些闪存和与外部总线交互。控制器内部提供了缓存用于缓冲命令和数据,还有算法负责压缩数据、整理数据、平衡硬件损耗等。外部把数据和操作的结果整理后发送到数据总线上。
当然SSD具体如何工作是很复杂的,但4KB随机读取访问是其中涉及机制最少的一个——
1)随机的意义——连续访问数据的话控制器内部可以缓存命令和数据,导致无法准确测量操作耗时。
打个比方说,我跑到商场里要求售货员把一个货架上的商品都给我,那么售货员可能只需要跑一趟就能给我大量商品。如果我每次都只要求其中一件,但是每次都是要求顺序上的下一个,很快售货员看出来我在干啥了,就会一次把之后的都拿给我。可是如果再加上要求的顺序没有规律,那么售货员每拿一样商品都得跑一趟。虽然三种方式最终把同样商品都拿给我了,但显然只有完全随机的方式能通过测量总耗时而计算出售货员的平均速度,其他都不行。
2)为什么只考虑读取不考虑写入——因为写入可以缓存后完成,同样无法准确测量操作耗时。
相比读取,写入并不需要返回任何具体数据,所以写入请求可以放在控制器的缓存里慢慢执行。那么如果控制器的缓存很大,则无论写入块多小或者多随机,控制器都可以拿到命令后先告诉软件任务已经执行好了。相当于前一个例子里的售货员把我要求放回去的商品直接丢在身边一个临时货架上,我除非一直测试到这个临时货架满了,不然我测不出来这位售货员跑多快。
除此之外,读取还不影响数据内容,一般不会导致控制器的数据压缩、整理、硬件损耗平衡等操作介入而影响测试一致性。
3)4KB的意义——因为4KB是现代SATA接口下的最小数据块规模,数字更小可能受压缩、命令流程控制的影响,而数字更大则会受连续访问的影响。
综上,4KB随机读取是考量SSD控制器最基础性能的方法。但这个测量离实际日常使用中的体验反而并不是那么相关。假设一款控制器4KB随机读取很慢但缓存很大的话,在日常使用中可能并不会感觉比一款很快但没有缓存的控制器更慢。不过,在一些商业应用场景里这个差异就可能很明显了。
-
53416D5A-A613-41E5-8F3E-3D86A00E2E04.jpeg
(815.3 KB, 下载次数: 90)
作者: sairen139 时间: 2019-12-30 16:33
转载文章解惑:SSD的随机读能力 和一个高访问量的读写服务系统 原创[size=0.24]jeanter
[size=0.24]1481次阅读 2016-04-19
[size=0.28][url=]关注[/url]
昨天晚上写了个代码,测试了下目前我这个1000块钱的SSD的随机读能力。
主机配置 i5 4核(两物理核),8G内存 linux 内核版本 2.6.18-128.el5
一个50G的文件(>> 8G内存 ,防止全缓存至内存中 page cache),随机seek到一个位置,读取100字节,返回,基本模拟了rmdb和nosql 根据主ID读取某条记录的场景(忽略索引ID时间).
SSD在开启10个channel时读数据达到峰值 读取1百万条随机ID的数据,用时9.0S
[color=rgb(34, 34, 34) !important] 然后接USB连一个5400转的机械硬盘随机读1万条,注意是1万,不是100万,花了90s。
顺序写20G文件, SSD 150MB/s 5400转机械硬盘 80MB/s ,一倍差距. 所以顺序写文件的10K转速的机械磁盘应该和SSD不分上下的. 基于机械磁盘的这种特点,存储系统中,特别是NoSql的内存数据库,基本会用这类做binlog日志,先写文件日志,再写内存,即便掉电,也是基本可以从binlog日志中恢复的。
设计一个高吞吐量的服务系统。上述SSD,基本达到了10万/s的随机访问读取小数据块的能力,除去网络层对资源的消耗,索引消耗(10亿 8字节ID索引文件 -
[color=rgb(34, 34, 34) !important]10亿 * (8 + 12) = 20G ,哈希索引,全放内存,time33 hash算法 i5基本可以每秒到1千万)+32G内存 + 1T SSD 可以承载 8万/S ,10亿记录的随机读 ,再一水平分布,X 4 ,32万/s . 再乘以2,每个热.备, 每天8万秒,正常服务时间 6万秒。支撑每天180亿请求的系统就这么出来了. 这180亿/天 可以干嘛,最典型的就是全站用户凭证系统,每个pv都会访问的.
[color=rgb(34, 34, 34) !important] 当然这个测试还是比较简单的,, 可以有更多的维度去反映这个读的能力, 比喻统计各个时间段的每周期的处理数曲线,await时间,开启关闭page cache时的 曲线波动情况。启用文件系统的pageCache后,cache满后 pdflush到设备是否会导致当前读的耗时波动过大. 具体波动情况.
[color=rgb(34, 34, 34) !important] 还有读写混合时,读写各种比例的情况,有锁 无锁的情况,及锁的粒度对吞吐量及耗时曲线的影响.优秀的存储系统都是需要对这些细节都了如指掌的。
[color=rgb(34, 34, 34) !important] 波动是一个很危险的现象,当一个大的波动发生时,在一个小的周期内,系统的吞吐量会迅速下降,如果一旦下降后,产生系统的吞吐量小于最上层用户的请求,那么请求就会积压,积压的时间一长,特别是互联网业务,上层用户的请求很容易发生重试,一旦重试,上层的请求树就会向上波动增长,而系统的吞吐量却在降低(向下波动),很容易导致请求数持续积压,重试持续增长,系统就崩的下,雪崩了. 说到这里就讲到了 系统过载时的对应了,就需要降级,熔断等措施了 。不发散了. 有时间在另起篇幅来讲讲.
[color=rgb(34, 34, 34) !important]-------ps 写写技术博客的好处,经常会主动思考一些问题,然后把来龙去脉通过各种方式梳理清楚,如有精力和时间,会将细节弄的越细越好. 经常思考一个问题以后,过了若干时间,发现当初思考的不全面或是有误,还可以再继续修改一番。这样感觉很好.
文章最后发布于: 2016-04-19
[size=0.24]版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/jeanter/article/details/51193038
作者: sairen139 时间: 2019-12-30 16:50
用CDM测SSD性能,它的4K Q1T1 write为什么比read的分数高
头像
通吃世界 1
2018-10-10
只看楼主
各位大神们,用CDM测SSD性能,它的4K Q1T1 write为什么比read的分数高
2
头像
k627324240 1
12-14 15:25
操作
虽然在挖坟但我还是回复一下吧
4K Q1T1的读取也就是Read部分,读取时因为是单队列单线程随机,无法被与闪存无关的高速缓存预测,每一次读取都是考验闪存+主控的真实随机性能
4K Q1T1的写入也就是Write部分,写入时可以先置于与闪存颗粒无关的高速缓存,因此4K Q1T1 Write是很快的
个人认为的考验SSD的日常性能几个理论数据:
——读写速度数据——
Seq(大量连续读写时的性能参考)
4K Q8T8(重度负载时的性能参考)
4K Q1T1(重要,影响日常体验)
——其它——
响应延迟
唤醒延迟
k627324240: 其中4K Q1T1只要看Read部分就行了,Write部分只要不慢得离谱,是没有实用意义的
作者: 董大 时间: 2020-1-2 20:19
看起来我用的硬盘很垃圾啊,浦科特 PX-256M7VC
测试4k Q1T1 才得760,都不上1000
楼主能推荐一下256G的速度快的固态硬盘吗
作者: cntvic 时间: 2024-1-7 20:18
感谢分享
欢迎光临 无忧启动论坛 (http://wuyou.net./) |
Powered by Discuz! X3.3 |