性能工程高手课
庄振运
Facebook 性能优化和容量管理高级专家
24631 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 40 讲
性能工程高手课
15
15
1.0x
00:00/00:00
登录|注册

23 | 存储案例:如何降低SSD峰值延迟?

使用fstrim
对Discard选项的调优
使用fstrim
优化Trim
使用Trim
保留空闲存储空间
SSD的垃圾回收
HDD vs. SSD
思考题
解决方案
SSD损耗与延迟问题
问题解决方法
Trim对IO访问延迟的影响
Trim的作用
写入放大系数
年损耗率
写入放大
总结
想减少SSD损耗,却导致访问延迟过大?
如何减少SSD损耗?
SSD的损耗
如何降低SSD峰值延迟?

该思维导图由 AI 生成,仅供参考

你好,我是庄振运。
我们之前讲过,存储系统的性能很关键(参见第 17 讲)。我们这一讲就探讨存储方面的优化案例,是关于 SSD 性能的。
现在很多公司里面的高性能存储系统,一般都是基于 SSD 的,这主要归功于 SSD 价格在近几年的大幅度下降。但是,SSD 也不是包治百病的灵丹妙药,也有自己的特殊性能问题。我们今天就重点讲述两点:SSD 的损耗IO 访问延迟偶尔过大的问题。
这里的第二个问题可能听起来很让人吃惊:不是说 SSD 延迟很低吗?
一般情况下,是的。但是特殊情况下就不一定了,这个就说来话长了,它和 SSD 的内部原理有关。我们会一步步地探讨问题形成的原因和解决的策略。

SSD 为什么会损耗?

我们的第 17 讲是关于存储系统的,讲过 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
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • 张翠山
    怎么确认目前系统用的是SSD

    作者回复: 一般用Linux命令来看model等就可以判断。

    2020-04-25
  • 如果在很短时间内写到 SSD 太多数据,就会导致 SSD 损耗太快,有可能过早烧坏 SSD。 请问老师SSD是怎么存储数据的?为什么说在很短的时间内写入到SSD太多数据,就会导致SSD损耗太快,有可能过早烧坏SSD?

    作者回复: 这个其实就是说的SSD特性:一块SSD,它能写入的总体数据量(每次写都算)差不多是固定的。写得越快,就会越容易烧坏。SSD内部也有些均衡措施,如果应用程序慢慢写(相对快速写),对SSD和应用程序都会有好处。

    2020-03-05
    2
  • 我来也
    现在很多都是用的云服务器了,不知道云厂商是怎么来调优的。 我们在使用云服务器的过程中,如果遇到了ssd的间歇性性能问题,有什么好办法来判断是自身程序的问题还是云服务器的问题呢? 之前在使用某云时,遇到过写入一个3M的日志,耗时2分多钟的情况,整个进程就租塞住了。 好在当时是有时间戳,知道是卡在写日志了。

    作者回复: 这个问题的确诊断比较复杂,一个直观的方案就是对比。 比如如果其他服务用同样的云服务器,都好好的,那多半就是自己这个服务导致的。倒也不一定就是服务的程序有“问题”,只是需要考虑硬件特点来调优一下。 如果没有其他对比服务,可以试着自己写一个测试服务,用同样的云服务器。然后调节测试服务的各个参数,看看能不能把问题重现出来。

    2020-01-19
  • 黑崽
    fstrim挂起之后,有办法干预吗?

    作者回复: 应该不行。原理上讲,操作系统的命令传给了SSD;挂起也多半是因为SSD内部导致的,操作系统也不能做啥了。

    2020-01-19
  • logo3755
    老师,那如果ssd做raid以后是不是可以理解为增加了ssd的io周期呢?那raid模式(例如:0-10)会对trim的优化有影响么?
    2020-08-30
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部