电脑存储的真实世界性能

性能是 PC 用户确定固态硬盘 (SSD) 是否为满足特定需求最佳选择的一个关键因素。 即便如此,一般情况下也无法直接做出选择。当然,价格也需要重点考量。此外,根据您的预期用途,可能会优先考虑其他驱动器特征(例如耐用性或安全功能)。

但一切都会回到性能问题。

PC 存储的零售固态硬盘带宽与实际固态硬盘带宽。

下载白皮书或阅读下文,了解 PC 固态硬盘存储的实际性能如何,同时考虑价格、耐用度、安全性和功能。

或许更准确地说,有几个关乎性能的问题。多高的性能才够用?性能是如何衡量的?用户可能进行的每一项活动(我们将在本文中用术语“工作负载”来表示每一项具体活动)对存储设备的要求是否相同,还是说我们需要考虑好几种性能?

简而言之,答案如下:视情况而定;非常细致;是的,虽然制造商经常只在零售包装盒上公布一个唯一的速度值,但除此之外,还有更多因素。固态硬盘零售包装盒上的性能数字通常代表最大带宽,在真实世界使用中极少能达到。

产品规格和“四角” ;

这个数字向潜在用户传达了有关驱动器性能的某些信息,因此是有效的,也是有用的,但事实证明,它与系统在日常使用中“感觉”有多快并无太大关系。个中原因,我们稍后将进行解释。

更用心的购物者可能会找到固态硬盘的产品规格或规格表(供应商通常会针对每一款驱动器都发布一份规格表)来进一步了解详情。在那里他们通常会发现,列出的性能数字多达四个。

这些数字才更有意义。查看规格表后,我们发现了所谓的“四角”数字,于是了解到“性能”并不唯一——驱动器能够以不同的速度读取和写入数据,顺序读写和随机读写(“传输大小”的功能之一;有关这一点的更多信息,见“输入/输出特征快速入门”一节)也存在区别。

这些区别有助于我们更准确地了解固态硬盘的性能。但根据本文中提到的 Solidigm 研究,这些仍不够。

正如我们将谈到的,大多数真实世界工作负载通常是由读取和写入组成的混合型活动。有时,瓶颈完全不在于存储设备,也就是说,用户体验可能是受到了其他系统资源(如 CPU 或 GPU)的限制。关键的是,我们还需要考虑队列深度 (QD) 的问题,即在任何给定时间有多少输入/输出请求在等待 SSD 控制器处理。

我们将详细展开队列深度相关问题,因为它是 SSD 性能的关键驱动因素。QD 越高,SSD 可以并行处理的操作就越多,从而产生更高的吞吐量——这就是为什么 SSD 供应商用于零售包装盒和规格表的数字几乎总是在非常高的 QD(通常是 32)下测量的。但我们发现,绝大多数真实世界的使用发生在 QD 仅为 1 或 2 的情况下。因此,在大多数情况下,理论最大性能的重要性不及低 QD 性能。

我们还将简单介绍几款常见的 SSD 基准测试工具,看看它们的结果与我们所了解的真实世界性能是否相符。

展示 PC 存储性能的 Solidigm 670p 固态硬盘产品规格表。

图 1. 摘自 Solidigm 670p 产品规范

I/O 特征快速入门

检查给定工作负载特征的方法不胜枚举。对于有关 SSD 性能的讨论来说,重要的是确定对用户体验影响最大的几个关键指标。

例如:使用我们的内部工具“跟踪”运行中的工作负载,并记录底层系统活动(详见“研究方法”一节),我们观察了启动 Adobe Acrobat 并加载 PDF 文件时发生的情况。这一常见活动产生了一个跟踪输出文件,其中包含数千个单独的数据点,尽管该工作负载只持续了 9 秒左右。

并非所有这些都对用户体验有重大影响,但其中一些肯定是关键的驱动因素。让我们逐一展开这三个方面。

1. 读/写混合对大多数用户来说,读写混合可能是最直观的。根据您在电脑上进行的操作,电脑会发出指令,将数据放到驱动器上,或检索现存数据以供使用。您大概能够猜到某类活动是会引起读取还是写入:启动应用程序和加载文件都是读取密集型活动,而保存数据的结果主要是写入。转换文件格式均需要读写,即读取源文件,写入输出文件。

2. 顺序/随机混合顺序/随机混合是另一个主要特征。这是指输入如何写入驱动器或从驱动器读取:顺序传输在驱动器上较长的一系列连续位置(称为逻辑块地址或 LBA)上进行,而随机运算则往往是在不连续的位置读取或写入少量数据。传输大小通常在几千字节的数量级。(较敏锐的读者可能会注意到,一些 SSD 供应商会在其性能规格中列出传输大小——例如,“4 KB 随机读取”与“128 KB 顺序读取”)。由读取或写入许多小文件构成的活动本质上往往更具随机性,而单个文件较大的工作负载则更具顺序性。

3. 队列深度队列深度不那么直观,但它对于用户体验的重要性却并不因此而降低。任何工作负载(即便很小的工作负载)都会产生大量的输入/输出操作(在我们 9 秒的 Acrobat 启动和加载示例中超过 6,000 次)。SSD 会尽可能快地处理这些请求,但有时等待处理的请求会形成队列。得益于智能架构,现代 SSD 可以同时服务于队列中的多个请求(这个概念被称作“并行性”)。因此,高 QD 下(同时处理多个请求)的数据吞吐量性能指标最高。但我们稍后将了解到,许多典型的电脑工作负载不会形成长队列,因为 SSD 的响应速度与请求传入的速度相当。

工作负载特征

图 2. 工作负载特征

上述三个输入/输出特征构成了本文分析的基础。值得注意的是,与存储性能无关的第四个向量可能也会对用户体验产生巨大影响:如果瓶颈实际上发生在系统的其他位置(例如 CPU 已满载,或本地内存已耗尽)的话,那么存储性能的提高无法带来更出色的用户体验。

研究方法论


为了确定实际 PC 使用过程中幕后发生的情况,我们首先必须确定两件事:要研究哪些工作负载,以及如何收集和分析数据。 

在选择工作负载方面,我们采取了一种平衡的方法,将三个重要的“细分”使用场景纳入考量:常规高效办公、游戏和内容创作。

我们的工作负载样本远未穷尽一切可能,其结果不应用于概括所有真实世界电脑使用。相反,我们计划研究一组能够或多或少地代表这三个细分市场中的用户日常进行的一些典型活动。我们还希望确保可能产生各种各样的结果,从读取密集型输入/输出模式到写入密集型,并体现大文件和小文件的平衡。

运行轨迹提示


对于每个工作负载,我们定义运行跟踪的“开始”和“停止”提示,并尝试确保系统上没有同时运行可能会扰乱结果的其他活动。

数据收集本身是使用内置的 Microsoft Windows 功能完成的。Microsoft 在 Windows 评估和部署工具包 (Windows ADK) 中提供了一个名为 Windows 性能记录器 (WPR) 的工具,该工具可在工作负载执行期间实时记录 Windows 事件跟踪 (ETW)。

真实世界电脑工作负载分析

图 3. 用于分析的实际 PC 工作负载

如前所述,生成的跟踪输出文件包含数千个数据点。其中包括:

  • 各种系统资源的活跃程度,包括固态硬盘、CPU、GPU、主内存和网络
  • 工作负载总量(MB 和 I/O 运行次数),加上读/写混合(按大小和次数)
  • 每次操作的 QD
  • 每次操作的传输大小
  • 平均响应时间(按传输大小)
  • 按流程分隔传输的数据(包括大小和次数)
  • 被触及的各个文件,以及每个文件的读取或写入数据量
  • 还有其它更多!

组织跟踪

然后,我们使用内部工具将跟踪数据组织成 Excel 工作簿,进行分析和可视化。

实际上,它看起来是这样的:

  1. 确保系统处于静止状态(即没有其他活动在后台运行),以备跟踪
  2. 开始跟踪
  3. 执行工作负载(例如,双击 Adobe Acrobat 图标启动程序,然后从“文件”菜单加载 PDF)
  4. 完成最后的执行步骤后,停止跟踪

如果要客观地指出上述方法的不足之处,那就是由于我们预先选定要研究的工作负载,已经令汇总结果产生了偏差,从而使它们就电脑的典型使用情景“一般来说”应该如何而作出的表述不那么有帮助。毕竟,可能有很多用户日常并不从事我们研究的 12 项操作中的任何一项。那么,如果它不一定能代表更广泛的电脑使用趋势时,准确理解这些特定情景下的数据有多大帮助?

读取结果时的提醒

我们的回答包括两点。第一点:保持关注!Solidigm 打算继续这项研究,进入“用户会话”特征分析的另一个阶段——换句话说,如果我们仅仅对一个具有代表性的人群的日常操作进行观察和测量,不要求任何人运行特定的工作负载的话,能带给我们什么样的启示?我们预计将在未来的几个月内公布这项研究的结果。

第二点:尽管本文中的研究结果可能与最普遍意义上的电脑使用情景不完全一致,但我们确信自己的方向是正确的。因此,将这项研究作为讨论的起点是有意义的。有些方面的结果甚至在进入更广泛的研究阶段之前就得到极其显著地体现(例如,12 个工作负载中 92% 的输入/输出操作发生在 QD 为 1 或 2 的情况下),这一点值得我们深思。

现在,让我们来看看都有哪些工作负载吧!

常规生产力工作负载 

让我们从回顾四个生产力工作负载开始,并讨论我们在每个工作负载中的发现。

Acrobat“启动并加载”工作负载是一个不错的起点——这是一个常见用例,结果并不令人意外。工作负载总量约为 300 MB,其中 88% 为读取,其余为写入。该活动主要是随机的,传输大小为 4 KB。

测得的最大 QD 为 191,几何平均值为 2.1。(这种现象将出现在我们研究的许多工作负载中:测得的超高 QD 峰值占比极小,仅零点几秒时间;而绝大多数操作的 QD 仅为 1 或 2)。

启动 Acrobat + 加载 PDF 

Workload analysis with performance metrics for Adobe Acrobat PDF launch and load

图 4. Adobe Acrobat PDF 启动和加载的性能指标

第二项高效办公工作负载也表现出类似的情况。在本例中,我们启动了 Microsoft Outlook,它还会触发加载包含电子邮件和相关项目的关联 Outlook 数据文件 (PST)。同样以随机读取为主。值得注意的是,在此工作负载期间,超过 98% 的输入/输出操作发生在 QD 为 1 或 2 的情况下。 我们的第一项写入密集型任务包括将一系列幻灯片从 PowerPoint 导出为 MP4 视频,这是 PowerPoint 的一个内置功能。整个过程花了大约 90 秒。

带宽图表与这项活动的逻辑一致:前半段发生大量读取活动,而随后在生成新视频文件时则以写入为主。

启动 Microsoft + 加载 PST 以及将 Microsoft Powerpoint pptx 导出为 MP4

Workload analysis with performance metrics for Microsoft PowerPoint launch and load
Workload analysis with performance metrics for Microsoft PowerPoint launch and load

图 5. Microsoft PowerPoint 启动和加载的性能指标

最后一项高效办公工作负载代表了自新冠疫情爆发以来越来越常见的一个用例:加入在线会议。

该活动涉及一些轻量 I/O 流量,超过 99% 处于低 QD,但这里最可能的瓶颈是网络,与其他资源相比,网络更能决定用户在此类呼叫中的体验

启动 Zoom + 加入在线会议

Workload analysis with performance metric for Zoom virtual meeting launch and load

图 6. Zoom 在线会议启动和加载的性能指标

游戏工作负载

游戏玩家对等待加载并不陌生。这就是为什么我们非常希望对这一细分类型展开全面分析——因为还存在巨大的改善空间。自电脑游戏诞生以来,启动游戏、加载保存状态和新关卡等操作一直都会导致长时间的等待。但这背后的原因是什么?让我们来找出答案。 我们研究的第一项游戏工作负载相对较轻量——我们只需从桌面加载《英雄联盟》游戏客户端。这只是通往游戏的第一步;把玩家带到菜单为止。我们想单独研究这一步。整个工作负载耗时 18 秒,涉及超过 500 MB 的数据传输,其中 85% 为读取,80% 为低 QD。

启动《英雄联盟》游戏客户端

Workload analysis with performance metrics for League of Legends launch and load

图 7.《英雄联盟》启动和加载

与我们之前研究的高效办公工作负载不同,本例中的顺序读取活动比例极高,最常见的传输大小为 128 KB——鉴于现代 AAA 游戏使用模型、纹理等大型资产来制造沉浸式环境,这个数字是合理的。

在这项工作负载中,我们还开始看到需要更多的其他系统资源,特别是主内存和 GPU。

这项工作负载包括启动游戏和加载新战斗,同时使用 Open Broadcaster Software (OBS) 对活动进行直播和录制。与 AAA 游戏工作负载的典型情况一致,大多数读取是顺序进行的。

在此例中,其他系统资源之一 (GPU) 达到最大利用率,这意味着存在与存储性能无关的瓶颈。

加载《艾尔登法环》新关卡以及启动《全面战争:战锤 III》 

Workload analysis with performance metrics for Elden Ring & Total War: Warhammer III launch and load
Workload analysis with performance metrics for Elden Ring & Total War: Warhammer III launch and load

图 8.《艾尔登法环》与《全面战争:战锤 III》启动及加载的性能指标

最后一项游戏“工作负载”略有不同,展现了这一细分类型的另一面——我们没有定义具体的活动,而是让志愿者玩了 15 分钟游戏,来了解当玩家在开放世界环境中移动角色时,数据会如何加载。

玩《侠盗猎车手 5》15 分钟 

结果显示,硬盘活动未出现极高的峰值,但稳定的一系列较小的读取操作流在这一时间窗口内累计传输超过 4 GB 的数据。这些读取是顺序和随机读取的混合。

Workload analysis with performance metrics for Grand Theft Auto Play for 15 min

图 9. 玩《侠盗猎车手 5》15 分钟的性能指标

内容创作工作负载

最后,让我们看看内容创作细分,指的是涉及媒体(视频、照片、音频等)制作的一类多样化的工作负载。与游戏一样,这个细分类型可能会涉及一些大型数据传输和较长的等待时间,具体取决于项目。

在第一项内容创作工作负载中,我们研究的是一项颇常见的活动:启动 Adobe Photoshop 并加载包含多个图层的 PSD(项目文件)。

这项持续时间为 10 秒的活动涉及约 1 GB 的数据传输;读取操作以随机为主,但顺序读取虽然所占比例较小,从磁盘中读取的数据量却占到大约一半,因为这些操作更大(绝大多数操作为 128 KB)。

启动 Adobe Photoshop——加载 PSD

Workload analysis with performance metrics for launch and load

图 10. Adobe Photoshop 启动和加载的性能指标

启动 Blender

Blender 是一款开源的免费 3D 创作软件,深受各行各业创意工作者的青睐。

本例中,平均 QD 一路攀升至 2.6,但 77% 的操作的 QD 仍处于 1 或 2。

在本特定案例中,输入/输出操作以 4 KB 读取为主,不过根据使用的项目文件,在其他案例中可能会看到更大比例的顺序传输。

这项活动涉及将许多视频文件从外部驱动器导入到 Adobe Premiere Pro 项目中——创作者在创建家庭幻灯片或剪辑故事长片时可能会进行这样的操作。带宽图表显示,许多文件在工作负载的前半段被读入程序,而后半段则执行了大量并发读写活动。

启动 Blender + 加载项目文件,以及将 100 个视频剪辑导入 Adobe Premiere Pro

Workload analysis with performance metrics for Blender launch and load
Workload analysis with performance metrics for Blender launch and load

图 11. Blender 启动和加载的性能指标

就持续时间和规模而言,本文的最后一项工作负载远超其它各项。将一个大型 Premiere Pro 项目文件导出为 AVI 视频花了两个多小时,涉及到移动近半 TB 的数据。

如图表所示,绝大部分硬盘活动发生在时间窗口最后的 20%。虽然该流程属于写入繁重型(约占 57% 的操作),但导出过程也涉及相当大比例的读取操作。

将 Adobe Premiere Pro PRRROJ 导出为 AVI 

Workload analysis with performance metrics for Adobe Premier export

图 12. Adobe Premier 导出的性能指标

实际 PC 存储性能的趋势

PC 用户试图确定哪种固态硬盘 (SSD) 是满足特定需求的最佳选择,但这并非易事。当然,价格也需要重点考量。根据预期用途,耐用性或安全特性等其他驱动器特性可能会处于优先地位。然后还有性能问题。或许更准确地说,有几个关乎性能的问题。多高的性能才够用?性能是如何衡量的?用户可能进行的每一项活动(我们将在本文中用术语“工作负载”来表示每一项具体活动)对存储设备的要求是否相同,还是说我们需要考虑好几种性能?简而言之,答案如下:视情况而定;非常细致;是的,虽然制造商经常只在零售包装盒上公布一个唯一的速度值,但除此之外,还有更多因素。除此之外,其他输入/输出特征高度取决于具体工作负载。一方面,我们的工作负载汇总视图显示,读取操作的比例总体高于写入操作,而且随机活动多于顺序活动——虽然我们预计所有用户和工作负载的常规 PC 使用情景也是如此,但只有等到我们进入“研究方法”一节中提到的下一个阶段后,才能就此作出明确的声明。

至于工作负载的顺序或随机程度,很明显,结果基本取决于工作负载——不过,这些早期研究结果确实显示情况因细分使用类型而异,其中游戏更依赖于顺序传输,而高效办公则以随机传输为主。

Queue depth chart for PC storage performance

图 13. 队列深度

Read/write mix chart for PC storage performance

图 14. 读/写混合

Sequential/random mix chart for PC storage performance

图 15. 顺序/随机混合

评估常见基准

有了这些结果,我们可以简要讨论各种常见 SSD 基准测试在评估或预测实际最终用户体验方面的有效性。

1. ATTO 磁盘基准测试提供的结果屏幕侧重于固态硬盘在不同的传输大小(可由用户配置)下的读写性能。据我们研究,真实世界使用中最重要的大小是 4 KB、16 KB、32 KB 和 128 KB。

2. Anvil 的 Storage Utilities 提供的默认测试涵盖不同队列深度(包括 4 和 16)下的 4 KB 随机传输,以及不确定 QD 下 32 KB、128 KB 和 4 MB 的顺序操作。还会输出合计的读写“分数”以及一个总分。

3. AS SSD 基准测试的界面干净、简单,默认测试次数较少。用户界面既不能指定顺序测试的传输大小,也不能指定顺序测试或随机测试的队列深度。

4. CrystalDiskMark 在易用性和全面性之间达到平衡,因而受到用户和科技媒体的青睐。当前的版本 8 提供一个默认测试集,其中包括 QD 1 和 QD 8 的 1 MB 顺序传输,以及 QD 1 和 QD 32 的 4 KB 随机传输。该工具中还包括其他测试“配置文件”,允许用户测量系列混合读写活动,非常实用。

5. PCMark 10 的存储基准测试由四项测试组成:全系统驱动器、快速系统驱动器、数据驱动器和驱动器性能一致性测试。不同于这里列出的其他工具,PCM10 测试依赖于来自常见应用程序的真实世界跟踪数据来计算分数。虽然这种方法没有太大的预先自定义空间,用户不能指定队列深度或传输大小,但它的天然优势在于与真实世界使用接轨。为了更好地理解这种方法,我们对运行中的 PCM10 快速系统驱动器基准测试进行了跟踪,结果如下。

PCMark 10 快速系统驱动器基准测试

Workload analysis with performance metrics for PCMark 10 Quick System Drive Benchmark

图 16. PCMark 10 快速系统驱动器基准测试

PCMark 10 的结果与我们的 12 项工作负载样本的汇总结果颇为一致。平均 QD 为 1.2(96% 的操作 QD 为 1 或 2),大多数操作是随机读取。

鉴于上述一致性,我们得出结论:这项测试的结果对于衡量 SSD 的实际应用性能很有帮助——不过,与任何通过计算输出得分的测试一样,用户在将其作为唯一的依据进行任何比较之前,应先确保已充分理解其计算方法。

PCMark 10 存储基准加速了跟踪的输入/输出模式,消除了源工作负载中的其他因素,如计算时间和主机空闲时间。这大幅增加了存储系统的压力,并提高了测试对存储性能改进的敏感度,因而使该基准测试更有帮助。而 Solidigm 对 PCMark 10 的跟踪体现出这一差异,其平均 CPU 时间和 GPU 时间分别为 7% 和 0%。

一个显著的差异是,PCMark 10 工作负载中测量到的 4 KB 传输大小的比例与 Solidigm 的应用程序跟踪结果有所不同。虽然 Solidigm 的测量结果通常是以 4 KB 传输为主,但具体比例低于 PCMark10(绝大多数)。如果不进行进一步的研究,我们很难推测出造成这种差异的原因;请密切关注 Solidigm 发布的下一份有关实际性能的白皮书

结论和后续步骤

  1.  在真实世界环境下,固态硬盘的性能几乎不可能用一个数字来传达。即便是大多数产品规格中列出的“四角”数字,也只能说明一部分情况。
  2. 了解固态硬盘在最大性能下的能力非常重要,这对某些现实世界的活动很有用。但在我们本次研究的工作负载中,许多其他因素显然可以、而且确实会影响用户对于存储性能或系统“响应能力”的整体感觉。
  3. 用户可以根据预期用途做出明智的决定,选出最适合自己的固态硬盘。我们的研究提出了几条实用的基本法则。
  4. 1 或 2 的队列深度在现实世界的 I/O 操作中占绝大多数;因此,除了“四角”性能数据之外,驱动器的低 QD 性能也值得考虑
  5. 本文中研究的活动是一组读取和写入的混合活动;侧重于混合活动的测试应与强调某种单一操作的测试一起作为参考
  6. 虽然不同细分类型之间存在一些明显差异,但我们研究的每项工作负载中都存在顺序和随机操作。因此,了解哪些传输大小在实际使用中更为普遍将非常有帮助,并应据此对 SSD 进行评估