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

29 | 如何彻底发挥SSD的潜力?

使用较少的线程来执行大I/O
使用多个线程执行小的I/O
避免SSD存储太满
避免长而繁重的持续写入
采用紧凑的数据结构
区分热、冷数据
避免就地更新优化
线程
I/O处理
数据结构
Netflix的例子
HDD和SSD混合的数据库
专门针对SSD的数据库
SSD友好的设计原则
设计变化
数据来源
对SSD友好的数据库
专门为SSD设计的文件系统
适用于SSD的通用文件系统
延长SSD的寿命
提高SSD的I/O效率
提升应用程序等软件的性能
应用程序层
数据基础架构层
数据库系统
文件系统
好处
更高的IOPS和带宽
更好的I/O性能
设计对SSD友好的软件
SSD的好处
SSD的潜力
如何彻底发挥SSD的潜力

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

你好,我是庄振运。
今天是“性能工程实践”这个模块的最后一讲,我们来讨论一种“软硬件结合”的性能工程优化实践,与 SSD(硬件)有关。现在 SSD 用的越来越普遍的情况你一定非常清楚,但是你设计的应用程序(软件)真的充分利用了 SSD 的特点,并发挥 SSD 的潜力了吗?
要知道,SSD 可不仅仅是“更快的 HDD”。
SSD 的好处显而易见,它作为存储时,应用程序可以获得更好的 I/O 性能。但是这些收益,主要归因于 SSD 提供的更高的 IOPS 和带宽。如果你因此只将 SSD 视为一种“更快的 HDD”,那就真是浪费了 SSD 的潜力。
如果你在设计软件时,能够充分考虑 SSD 的工作特点,把应用程序和文件系统设计为“对 SSD 友好”,会使服务性能有个质的飞跃。
今天我们就来看看,如何在软件层进行一系列 SSD 友好的设计更改

为什么要设计 SSD 友好的软件?

设计对 SSD 友好的软件有什么好处呢?简单来说,你可以获得三种好处:
提升应用程序等软件的性能;
提高 SSD 的 I/O 效率;
延长 SSD 的寿命。
先看第一种好处——更好的应用程序性能。在不更改应用程序设计的情况下,简单地采用 SSD 可以获得性能提升,但无法获得最佳性能。
我为你举个例子来说明。我们曾经有一个应用程序,它需要不断写入文件以保存数据,主要性能瓶颈就是硬盘 I/O。使用 HDD 时,最大应用程序吞吐量为 142 个查询 / 秒(QPS)。无论我们对应用程序设计进行什么样的更改或调优,这就是使用 HDD 可以获得的最好性能了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

SSD软硬件结合的性能工程优化实践是本文的核心内容。文章介绍了设计对SSD友好的软件的好处,包括提升应用程序性能、提高SSD的I/O效率和延长SSD的寿命。在文件系统、数据库系统、数据基础架构层和应用程序等领域,都可以进行对SSD友好的设计。具体包括采用适用于SSD的通用文件系统、对SSD友好的数据库、新的数据基础架构层设计以及应用程序层的七大SSD友好设计原则。这些设计可以充分发挥SSD的特点,提高性能、效率和寿命,为读者提供了全面的指导和实践建议。 文章首先介绍了在SSD世界中,随机更新和就地更新对性能的影响,以及热数据与冷数据的区分。接着讨论了采用紧凑的数据结构、避免长而繁重的持续写入、避免SSD存储太满、使用多个线程执行小的I/O和使用较少的线程执行大的I/O等七大SSD友好设计原则。这些原则涵盖了数据结构、I/O处理和线程使用等方面,为读者提供了全面的指导。 总的来说,本文通过丰富的案例和技术原理,深入浅出地介绍了如何设计对SSD友好的软件,以充分发挥SSD的性能潜力。读者可以从中获得对SSD友好设计的实践建议,提高应用程序性能、效率和寿命,从而更好地应用SSD存储技术。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《性能工程高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • 安排
    应用层多线程写入数据,那不是写到了操作系统的缓存里了吗,内核线程刷盘的时候还会用多线程写入ssd吗?应用层多线程写入的好处感觉没讲清楚,应用层多线程写入应该利用文件系统层或者通用快层提供的能力来体现出优势,而不是直接对接ssd内部的并行写入机制,除非你的应用绕过这两层直接操作裸盘。

    作者回复: 写入有同步和异步的;像数据库等需要及时commit的场合,一般是同步写入磁盘的,不会只缓存。 当然多数情况下异步就够了。

    2020-04-12
  • 我来也
    对于个人的电脑,考虑到ssd硬盘寿命,会适当确保磁盘空闲比例。 但对于云服务器,还是先保证性能吧,有精力了再考虑放大系数。😄

    作者回复: 云服务器如果是另外的提供商提供的,如果写入量不是超高的话,的确不需要担心太多。毕竟,保证服务器硬件,更多的是提供商的职责。

    2020-02-06
  • 木行
    老师您好,Cassandra升级memcached缓存到本地ssd这部分有参考链接吗,想进一步了解下,但网上没有搜索到

    作者回复: 我查了一下,原来的连接不work了。这个连接应该最相关:https://netflixtechblog.com/benchmarking-high-performance-i-o-with-ssd-for-cassandra-on-aws-df621335de0b

    2020-02-02
    2
  • *
    ssd内部并行度要怎么看是多少的
    2023-05-21归属地:福建
  • Bravery168
    对SSD友好的软件设计,似乎更多的在于系统软件层面的设计,从上层应用来说,可直接优化的应该不多。不过理解了SSD的原理,确实有助于思考怎么用好。
    2021-04-27
  • 皮特尔
    软件工程师也需要懂硬件才行呀。 关于SSD,隔壁专栏《深入浅出计算机组成原理》也有讲到,大家有兴趣的可以去看看。
    2020-06-01
  • 受教了,公司有用SSD存储的,不过也确实没意识到从代码层面来写出对SSD友好的程序。
    2020-03-14
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部