23 | 存储案例:如何降低SSD峰值延迟?
庄振运
该思维导图由 AI 生成,仅供参考
你好,我是庄振运。
现在很多公司里面的高性能存储系统,一般都是基于 SSD 的,这主要归功于 SSD 价格在近几年的大幅度下降。但是,SSD 也不是包治百病的灵丹妙药,也有自己的特殊性能问题。我们今天就重点讲述两点:SSD 的损耗和 IO 访问延迟偶尔过大的问题。
这里的第二个问题可能听起来很让人吃惊:不是说 SSD 延迟很低吗?
一般情况下,是的。但是特殊情况下就不一定了,这个就说来话长了,它和 SSD 的内部原理有关。我们会一步步地探讨问题形成的原因和解决的策略。
SSD 为什么会损耗?
什么是写入放大呢?当写入 SSD 的物理数据量,大于应用程序打算写入 SSD 的逻辑数据量时,就会造成“写入放大”。
如果是传统硬盘 HDD,就不会有写入放大的问题。那么 SSD 为什么会有写入放大呢?这是因为 SSD 内部的工作原理和硬盘很不一样。
我们知道,HDD 是可以直接写入覆盖的。和 HDD 不同,SSD 里面的页面只能写入一次,要重写的话,必须先回收擦除,而且只能在“块”这个级别进行擦除。因此呢,SSD 内部就需要不断地移动所存储的数据,来清空需要回收的块。也就是说,SSD 内部需要进行块级别的“垃圾回收”。垃圾收集器必须有效地在 SSD 内部不断地回收块,回收以前使用的页面空间,然后才能在这个块上写入新数据。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文探讨了SSD性能优化的案例,重点讨论了SSD的损耗和IO访问延迟过大的问题。文章首先解释了SSD的写入放大现象,即物理写入量大于逻辑写入量,导致SSD损耗加剧。为了降低SSD损耗,文章提出了两种方法:保留一定的空闲存储空间和使用Trim命令。保留空闲存储空间可以降低写入放大系数,减少SSD损耗率,而使用Trim命令则能有效通知SSD哪些页面存储的数据不再有效,从而减少垃圾回收和写入放大系数,延长SSD的使用寿命。然而,文章也指出了Trim命令的实际问题,不同厂商对Trim的处理方式存在差异,而且默认情况下操作系统并不启用Trim,需要手动设置。文章还提到了对Trim进行调优的两种方式,以减少IO延迟。总的来说,本文通过深入探讨SSD性能优化的案例,为读者提供了解决SSD损耗和IO访问延迟问题的实用建议。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《性能工程高手课》,新⼈⾸单¥59
《性能工程高手课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(5)
- 最新
- 精选
- 张翠山怎么确认目前系统用的是SSD
作者回复: 一般用Linux命令来看model等就可以判断。
2020-04-25 - 钱如果在很短时间内写到 SSD 太多数据,就会导致 SSD 损耗太快,有可能过早烧坏 SSD。 请问老师SSD是怎么存储数据的?为什么说在很短的时间内写入到SSD太多数据,就会导致SSD损耗太快,有可能过早烧坏SSD?
作者回复: 这个其实就是说的SSD特性:一块SSD,它能写入的总体数据量(每次写都算)差不多是固定的。写得越快,就会越容易烧坏。SSD内部也有些均衡措施,如果应用程序慢慢写(相对快速写),对SSD和应用程序都会有好处。
2020-03-052 - 我来也现在很多都是用的云服务器了,不知道云厂商是怎么来调优的。 我们在使用云服务器的过程中,如果遇到了ssd的间歇性性能问题,有什么好办法来判断是自身程序的问题还是云服务器的问题呢? 之前在使用某云时,遇到过写入一个3M的日志,耗时2分多钟的情况,整个进程就租塞住了。 好在当时是有时间戳,知道是卡在写日志了。
作者回复: 这个问题的确诊断比较复杂,一个直观的方案就是对比。 比如如果其他服务用同样的云服务器,都好好的,那多半就是自己这个服务导致的。倒也不一定就是服务的程序有“问题”,只是需要考虑硬件特点来调优一下。 如果没有其他对比服务,可以试着自己写一个测试服务,用同样的云服务器。然后调节测试服务的各个参数,看看能不能把问题重现出来。
2020-01-19 - 黑崽fstrim挂起之后,有办法干预吗?
作者回复: 应该不行。原理上讲,操作系统的命令传给了SSD;挂起也多半是因为SSD内部导致的,操作系统也不能做啥了。
2020-01-19 - logo3755老师,那如果ssd做raid以后是不是可以理解为增加了ssd的io周期呢?那raid模式(例如:0-10)会对trim的优化有影响么?2020-08-30
收起评论