Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >把 SSD 说个明白

把 SSD 说个明白

作者头像
Apache IoTDB
发布于 2020-09-27 02:32:26
发布于 2020-09-27 02:32:26
9480
举报
文章被收录于专栏:Apache IoTDBApache IoTDB

上篇文章介绍了机械硬盘和固态硬盘:硬盘的各种概念。在文章里有说到固态硬盘只有一种访问方式,不管是顺序读写还是随机读写,SSD都没有寻址时间。但是有朋友来讨论固态硬盘的顺序和随机访问的速度问题,有一些矛盾点。今天就把事情说明白。

正文 1746 字,预计阅读时间 5 分钟。

顺序和随机怎么比?

一般来说,顺序访问用吞吐量(Throughput)做度量指标,而随机访问用每秒执行的请求数(IOPS)做度量指标,按说是没啥可比性的。但是如果没有可比性,我在实际编程的时候应该怎么选?难道因为没得比就随便选了?这显然不可能,因此还是要比的。但是怎么比?

以一个数据库系统来说,索引用B树或者LSM-tree,这是两种方向,一个主要利用随机写,一个顺序写。你给用户吹数据库性能的时候,主要是看数据库一秒钟能写多少数据量,到了应用层面没人管你磁盘的 IOPS 是多少。因此,还是要用吞吐量来比。

一种访问方式,顺序和随机速度不一样?

SSD 只有一种访问方式,但是有很多地方还会看到 SSD 的一些测试中,顺序和随机访问的吞吐量不一样,这不是矛盾么?不矛盾,这是工程实现的事。我们接下来看一看。

顺序读和随机读

以一个例子来说,逻辑地址是1到10000。假设都访问5个地址的数据,而且第一个地址是11,那么顺序读就读的是11-15的数据。SSD 中有并行度的概念,他可以并行的读,因此顺序读可以同时把后边的都读出来,这就是一个优化点。

而随机读可能读11,1205,250,520,1408。怎么做优化呢?当你给SSD发一个读请求的时候,他是不可能知道你后边要读什么的,那就没法做优化了吗?在 SSD 层面没法做优化了,但是可以在上层进行优化。我同时把 5 个地址发过去让 SSD 并行读就就行了。

这个就像跟直男打交道一样,如果你也是个顺序女,好,那他能猜出来你要干嘛,你很开心,但是你要是个随机女,那他绝对猜不出来你要干嘛。这时候最好的方式就是直接告诉他你的所有计划,让他去全力以赴,这样效率最高。

那我们看看,在 SSD 层面进行优化的顺序读和在应用层面优化的随机读谁牛逼一些:(图来自《WiscKey: Separating Keys from Values in SSD-Conscious Storage》)

这是用 ext4 文件系统上一个 100GB 的文件测的,可以看到,顺序读一直很牛逼。随着每次读的数据量的大小增大,单线程随机读的吞吐量也在逐渐上升,但还没追上顺序读。重点来了,当 32 线程并发随机读的时候,单次读数据量大于 16KB 的时候,随机读的吞吐量就能追上顺序读了,在 64KB 以上就完全一样了。

这个事情在 HDD 的时代是不可能的,这也是 SSD 牛逼的地方,这也是有的地方说 SSD 顺序读和随机读性能一样。而且 16KB 也不是一个很高的限制,很多地方应该都可以用到。

顺序写和随机写

再来看写入。在写一个文件的情况下,文件在逻辑上就是有序的一堆字节,这时候写入的区别主要是每次写入数据量的大小。(图来自《WiscKey: Separating Keys from Values in SSD-Conscious Storage》)

写一个 10GB 的文件,每次写入的数据量越大,总写入时间越短。这张图是顺序写的。基本到 4KB 就可以了。如果要往文件写数据,最好做个缓存。

关于顺序写和随机写,大家认为随机写对 SSD 是不好的。当 SSD 的剩余空间充足时,随机写的性能很好,但是当剩余空间不多时,随机写的性能会急剧下降。原因有两个:SSD block的擦除机制,垃圾回收。

关于垃圾回收,Seagate 给了一些解释(https://www.seagate.com/cn/zh/tech-insights/lies-damn-lies-and-ssd-benchmark-master-ti/),主要是在顺序写的时候无效数据比较整齐,回收的时候不用拷贝数据到新块,而随机写的时候无效数据块比较零散,会跟有效数据混在相同的块中,在擦除块时就需要将有效数据拷贝到新块,给垃圾回收带来了麻烦。

总结

顺序和随机访问如果要对比,就对比吞吐量。不管在机械硬盘还是固态硬盘,顺序读写总是好的,而且单次访问的数据量越大越好。固态硬盘的随机读可以通过并发和增加访问数据大小使得吞吐量和顺序读持平。写 SSD 的话还是尽量顺序写入。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Apache IoTDB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
从 wiscKey 看 LSMtree 的不足
说一句废话就是:任何软件的发展,其实都依赖于硬件的设计和进步,所以从这一点来看,LSMtree诞生于上世纪80年代,在那个年代,还是机械硬盘的时代。所以,可以看的到的是,整个LSMtree最初的构建思想都是基于机械硬盘的设计思路,但是需求是无止境的。WiscKey自我感觉是,在LSMtree的基础上,基于SSD的设计思路所做的一种优化,基于这个思路,我们来简单分析一下论文中所阐述的观点。
梦醒人间
2021/07/16
7680
WiscKey —— SSD 介质下的 LSM-Tree 优化
LSM-tree 是大数据时代一个经典的存储结构,是 Bigtable,Habse,LevelDB,RocksDB 等大数据存储的构建基础。LSM-tree 高效的设计建立在磁盘随机访问要比顺序访问慢两个数量级的基础上。但近年来 SSD 的大规模应用对此基础提出了挑战,而 WiscKey 正是基于 SSD 存储介质对 LSM-tree 的痛点:读写放大,进行了优化。
木鸟杂记
2021/09/26
2K2
【合集】深入理解大容量SSD设计
随着数据量的爆炸式增长,对SSD容量的需求也日益迫切。如何在有限的物理空间内,进一步提升SSD的存储容量,同时兼顾性能与成本,成为了业界亟待解决的关键问题。
数据存储前沿技术
2025/04/24
1730
【合集】深入理解大容量SSD设计
FDP与SSD主控创新
按:本文含两单元,前半部分介绍数据中心SSD发展趋势及FDP技术在SSD领域应用价值,后半部分介绍FADU 在SSD主控领域技术创新及发展路线.
数据存储前沿技术
2025/02/11
2750
FDP与SSD主控创新
Samsung:揭秘SSD单盘扩容的 IU 方案
NAND闪存技术的物理限制以及DRAM成本的考量,使得SSD架构设计面临严峻挑战。如何在有限的DRAM资源下,实现更大容量、更高性能和更长寿命的SSD,成为业界关注的焦点。
数据存储前沿技术
2025/04/19
1000
Samsung:揭秘SSD单盘扩容的 IU 方案
WiscKey:LSM-Tree 写放大优化WiscKey 简介WiscKey 带来的好处WiscKey 面临的问题和挑战参考文档
WiscKey 的提出,主要是为了优化 LSM-Tree 的写放大问题。此前已经有不少论文讨论过这个问题,如 LSM-trie 和 PebblesDB,但是大部分优化方法都不是很彻底——简单说就是,优化效果太差,或者不够通用。WiscKey 提出的是一种比较通用、效果明显且简单易懂的方法。
linjinhe
2018/10/10
2K0
FADU:SSD主控高效能耗管理
文章主要探讨如何通过采用新型节能固态硬盘(SSD)控制器来大幅提高数据中心的整体拥有成本(TCO)。
数据存储前沿技术
2025/02/11
1860
FADU:SSD主控高效能耗管理
FADU:FDP多命名空间实验:提升SSD性能
在现代存储技术中,SSD(固态硬盘)因其高速读写性能和低延迟特性,成为数据中心和云计算环境中不可或缺的一部分。然而,随着多租户环境和混合工作负载的普及,SSD的性能优化和资源管理成为亟待解决的挑战。传统的SSD管理方式往往难以应对复杂的工作负载,导致性能波动和资源浪费。
数据存储前沿技术
2025/02/18
2510
FADU:FDP多命名空间实验:提升SSD性能
NAND Flash基础知识简介
NAND Flash是一种非易失存储介质(掉电后数据不会丢失),常见的U盘、TF卡/SD卡,以及大部分SSD(固态硬盘)都是由它组成的。 本文主要介绍其组成及工作原理。
coderhuo
2020/07/23
7.4K0
NAND Flash基础知识简介
Samsung:从QLC应用生态来看大容量SSD前景
文末材料由Samsung Electronics提供,着重探讨了QLC(四层单元)和高容量存储设备如何依赖开放生态系统以实现成功。随着对大容量需求的增长(64TB、128TB、256TB),传统的4KB或512B LBA格式已不再能满足要求,因此提出了使用更大的Indirection Units(IUs)。这不仅有助于降低能耗,还能简化对高容量硬盘的支持,并减少Write Amplification Factor(WAF)。
数据存储前沿技术
2025/02/11
2300
Samsung:从QLC应用生态来看大容量SSD前景
性能测试监控指标及分析调优
1、CPU,如果存在大量的计算,他们会长时间不间断的占用CPU资源,导致其他资源无法争夺到CPU而响应缓慢,从而带来系统性能问题,例如频繁的FullGC,以及多线程造成的上下文频繁的切换,都会导致CPU繁忙,一般情况下CPU使用率<75%比较合适。 2、内存,Java内存一般是通过jvm内存进行分配的,主要是用jvm中堆内存来存储Java创建的对象。内存的读写速度非常快,但是内存空间又是有限的,当内存空间被占满,对象无法回收时,就会导致内存溢出或内存泄漏。 3、磁盘I/O,磁盘的存储空间要比内存存储空间大很多,但是磁盘的读写速度比内存慢,虽然现在引入SSD固态硬盘,但是还是无法跟内存速度相比。 4、网络,带宽的大小,会对传输数据有很大影响,当并发量增加时,网络很容易就会成为瓶颈。 5、异常,Java程序,抛出异常,要对异常进行捕获,这个过程要消耗性能,如果在高并发的情况下,持续进行异常处理,系统的性能会受影响。 6、数据库,数据库的操作一般涉及磁盘I/O的读写,大量的数据库读写操作,会导致磁盘I/O性能瓶颈,进而导致数据库操作延迟。 7、当在并发编程的时候,经常会用多线程操作同一个资源,这个时候为了保证数据的原子性,就要使用到锁,锁的使用会带来上下文切换,从而带来性能开销,在JDK1.6之后新增了偏向锁、自旋锁、轻量级锁、锁粗化、锁消除。
NeilNiu
2023/03/10
6980
LSM-tree 基本原理及应用
LSM-tree 在 NoSQL 系统里非常常见,基本已经成为必选方案了。今天介绍一下 LSM-tree 的主要思想,再举一个 LevelDB 的例子。
Apache IoTDB
2020/09/27
9220
LSM-tree 基本原理及应用
Ceph搭建硬件建议详解
Ceph是专为在商品硬件上运行而设计的,这使得构建和维护超大规模的数据集群在经济上是可行的。当规划出你的集群硬件时,你需要平衡一些考虑因素,包括故障域和潜在的性能问题。硬件规划应该包括将Ceph守护进程和其他使用Ceph的进程分布在许多主机上。一般来说,我们 建议在为该类型的守护进程配置的主机上运行特定的Ceph守护进程。我们建议使用其他主机来处理使用您的数据集群的进程(例如OpenStack、CloudStack)
jwangkun
2021/12/23
1.4K0
Ceph搭建硬件建议详解
硬件知识:SSD越用越慢的原因,看完你就懂了!
从机械硬盘到SSD硬盘的升级,让无数PC用户感受到什么叫“丝滑流畅”。然而,使用一段时间以后,总会感到你的SSD有如下变化: 同样使用环境下,同款测试软件测得的磁盘性能降低;磁盘写入速度出现大起大落的速度波动; 启动、载入程序、文件的速度没有刚买时候流畅了;各种各样的系统运行迟滞感不断产生。 到底是什么原因导致上述情况呢?其实原因很简单,抛开硬件故障因素之外,主要有以下三点: 1、固态硬盘写入逻辑 SSD的数据写入方式不同于传统机械硬盘,崭新的SSD硬盘(也就是空盘)在进行测试、数据写入时,NAND芯片是空置的,可以直接写入,因此速度是最快的。 然而,在硬盘使用一段时间、尤其是写入大量数据之后,新载入的数据则需要由SSD主控进行可删除数据判断,然后进行空间擦除——复写流程,因此导致SSD使用后期的写入速度降低。为此,厂商会根据自家NAND、主控方案搭配不同的TRIM类技术。
小明互联网技术分享社区
2022/04/07
3K0
硬件知识:SSD越用越慢的原因,看完你就懂了!
你不知道的SSD那些事
从2005年三星作为第一个进入SSD市场的巨头,到现在短短15年,SSD已经成为非常普遍的存储介质了,相对于机械硬盘HDD,SSD在IOPS上提升了数百倍,带宽提升了数倍,如今NVMe硬盘又进一步将普通SATA SSD的性能提升了近十倍。不管是普通的SATA SSD,还是NVMe SSD,对于大多数人说,只是介质和性能上的变化,普通人甚至IT工程师会简单地认为,只要使用了SSD,存储系统访问数据的性能也会随之获得数百倍性能的提升,事实真的是这样吗?这个问题,其实很像是这样的,只要装上法拉利的发动机,车就一定快了吗?我想只有法拉利的工程师知道车身任何一度的变化,会增加多少风阻,影响百分之几秒的速度。
焱融科技
2020/04/24
1.2K0
你不知道的SSD那些事
Micron:验证16KB IU对SSD_WAF的影响
现代SSD不直接寻址NAND,而是通过固件实现逻辑地址到物理地址的间接映射,以优化性能和耐用性。固件需要维护逻辑地址表,映射每个逻辑地址到对应的物理位置,考虑NAND的物理特性,如芯片、带区、页面和扇区。每个条目通常约为4字节。
数据存储前沿技术
2025/02/11
1740
Micron:验证16KB IU对SSD_WAF的影响
SQL数据库性能胯了,换 SSD硬盘就能解决问题?
这里汇集了各路公交车,是张江男女必争之地。打工人最怕的是什么,不是996,不是007,最怕挤公交。
Lenis
2021/07/28
1.5K0
线上系统没做性能优化,说炸就炸...
前几天跟某互联网主题旅游网架构师聊起性能调优的话题,那个时候正好遇到一些线上调优的一些困惑,希望一起探讨一下。
猿天地
2020/12/02
3970
线上系统没做性能优化,说炸就炸...
Samsung:解析SSD寻址原理(IU与L2P)
在数据存储领域,固态硬盘(SSD)已成为现代计算设备不可或缺的核心组件。与传统机械硬盘相比,SSD以其卓越的性能、低延迟和高可靠性,极大地提升了用户体验和系统效率。本文将深入探讨SSD的关键技术之一——间接单元(Indirection Unit, IU)机制。理解IU的工作原理及其在SSD数据管理中的作用,对于深入了解SSD架构、优化存储性能至关重要。
数据存储前沿技术
2025/04/18
1780
Samsung:解析SSD寻址原理(IU与L2P)
Samsung:大容量QLC-SSD 的若干问题
固态硬盘(SSD)作为高性能存储的主流选择,其容量也在不断突破极限。为了满足这一需求,存储行业正积极推动更高密度 NAND 闪存技术的应用,其中四层单元(QLC)技术因其更高的存储密度而备受关注。然而,QLC 技术在带来容量飞跃的同时,也带来了性能、耐用性和服务级别协议(SLA)等方面的挑战。理解这些挑战并探索相应的解决方案,对于充分发挥高容量 SSD 的潜力至关重要。本文将深入探讨高容量 QLC SSD 的技术特性、面临的挑战,以及行业为应对这些挑战所做的努力,特别是大块大小(LBS)等创新技术如何影响未来的存储格局。
数据存储前沿技术
2025/05/06
1660
Samsung:大容量QLC-SSD 的若干问题
相关推荐
从 wiscKey 看 LSMtree 的不足
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档