Intel Sapphire Rapids NVMe Aggregate Performance with Flexible I/O Tester ----学习笔记(一)

本文探讨了如何通过调整FlexibleI/OTester(FIO)配置和启用LinuxNVMe驱动的新功能来提升IntelXeon-SPCPU上NVMe设备的性能,重点关注SapphireRapids平台的PCIe带宽利用和性能因素,如设备规格、队列深度、IOPS、超线程技术对I/O性能的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概况

性能既是一种艺术也是一门科学,在已知的配置中,可使用特定规则赖增强性能,大多情况下,需要确定系统I/O模型,更快的处理器、更快和更高密度的系统RAM以及更快的互连架构可能会提高大多数应用程序的性能。本论文仅讨论更改 Flexible I/O Tester(FIO)配置和启用Linux Non-Volatile Memory Express (NVMe)驱动程序中的新功能以改进Intel® Xeon®-SP CPU产品上的NVMe*聚合性能的实际应用。

测试是在Sapphire Rapids上进行,因为它支持80个PCIe通道,Gen5的接口,足够数量的CPU核数和内存带宽,从而能够为最苛刻的工作负载提供最高性能。

2.Performance Factors 因素

为了计算NVMe设备的读取或写入性能,将在设备上执行的并行I/O操作数量除以执行I/O操作所需的时间,结果是每秒可以执行的I/O操作数量,并称为每秒输入/输出(IOPS)。

多个因素会影响服务器host端nvme设备的性能。以下是nvme子系统影响性能的因素:

PCIe总线带宽

PCIe总线速率

NVMe设备规格

NVMe设备容量

操作的传输大小

读操作和写操作的比例

顺序操作和随机操作的比例

访问NVMe设备的总队列深度(QD,worker/jobs)

主机根端口的盘数量

FIO和内核版本/配置

NVMe设备和主机的功耗和热限制

主机系统的CPU频率、缓存利用率和内存带宽

可用的PCIe总线带宽和PCIe速率

总吞吐量实质上是指能够在任何时间通过整个PCIe总线的最大数据量。英特尔至强SP第四代支持每个插槽最多80条PCIe Gen5通道,这意味着总的I/O带宽可能达到以下最大水平:

  • x16 Gen5 ~ 128 GB/s
  • x32 Gen5 ~ 256 GB/s
  • x48 Gen5 ~ 384 GB/s
  • x64 Gen5 ~ 512 GB/s
  • x80 Gen5 ~ 640 GB/s

目前市场上许多NVMe设备使用PCIe Gen3或Gen4接口,同时开始推PCIe Gen5的NVMe设备,它们通常连接到PCIe主机。Sapphire Rapids支持支持将Link细分为x8s/x4s/x2s用于Gen4,以及x8s/x4s用于Gen5,以便在使用多个NVMe设备时提供更多的总带宽。支持80条PCIe Gen5通道,每个插槽可配置最多20个NVMe设备,采用x4s Gen5配置。本文介绍的性能调优将在采用x4 Gen5配置的x16 NVMe设备和x4 Gen4设备。

3 NVMe设备规格和容量

3.1 NVMe Device 规格和容量

不同类型的英特尔® NAND闪存具有不同的性能特点。SLC性能优于MLC,MLC性能优于TLC或QLC.另一种介质是英特尔® Optane™ Memory Media技术,它不是通过将电子困在存储单元中来存储数据,而是利用存储材料本身的特性变化来存储数据。

较大容量的NVMe设备一般具有更好的性能,因为其容量的某些部分用于设备内部的NAND或Intel Optane戒指管理和维护,而驻留在内存中的内部表格所占用的存储空间较大,不受交换入和交换出问题的影响,从而影响性能。较大容量的NVMe设备往往配备了更优化的控制器和固件,以提供更高的IOPS吞吐量,满足多个用户的访问请求,并确保一致性的IOPS/GB QoS.

3.2 操作的传输大小

块越大,执行的IOPS越少,较大的块大小读写所需的时间会略长,而较小的块大小可以很快的读写。通常,较大的块大小以连续块的形式访问,块大小可以根据NVMe设备变化从64kb到512kb;而较小的块大小则以更随机的方式访问,大小从512kb到8kb不等。

对于较大的块大小,PCIe接口速度可能最终成为限制因素;对于较小的块,则NVMe控制器架构/固件或NVMe媒介或系统软件堆栈开销可能会产生更大影响。

3.3 读写操作的比例

NAND闪存介质具有读写不对称性。块擦除延迟和页 program时延可能比页读写时间长的多。如果读取操作与同一闪存通道上的擦除或编程操作发生冲突,读取操作会受到擦除或编程操作的影响。这是混合读写操作时直接影响读性能的一个因素。

测试程序通常采用70/30的读写比例来进行随机IOPS基准测试,有效地在NVMe上创建了读写冲突。一些NVMe设备可能实现了编程或擦除暂停,以减少干扰读操作的延迟影响,它们优先考虑读操作以提高读性能,而暂停写操作。Intel 傲腾内存介质技术通常不受这种冲突操作的影响,70/30的读写比例随机IOPS显示出了强大的性能。

3.4 顺序和随机操作的比例

顺序操作通常比随机操作具备更高的吞吐量。然而,一些将数据牌力在不同页面上以并发访问的NVMe设备也可以在随机操作中实现非常高的吞吐量。

3.5 队列和队列深度

与SATA和SAS的英特尔固态硬盘(英特尔SSD)相比,NVMe驱动器提供更长的队列和更多的命令/队列,支持更快和更多的I/O操作/驱动器。这有助于存储控制器将更多命令传输到驱动器并执行更多I/O操作,从而提高整体系统性能和可扩展性。
队列的数量取决于每个NVMe设备的规格(我们测试的NVMe设备的数量可能会从32个到135个不等),并且NVMe设备允许主机软件通过NVMe驱动程序在主机内存中分配队列对(提交+完成队列)。

如果主机系统的逻辑CPU核心数多于NVMe设备的队列对数,每个NVMe队列将分配给一个CPU核心,少数队列将分配给另一个CPU核心(通常是主核心/同胞核心),可能会为这些队列对创建较高但不平衡的性能。如果主机系统的NVMe队列对数多于逻辑CPU核心数,一些NVMe队列对将不会被分配。

支持更多队列的NVMe设备可以减少CPU核心之间的通信和同步,这可能会带来更高的性能,理想情况下,每个CPU核心至少需要一个队列的NVMe设备,这样每个CPU核心都可以独立地提交和接收Intel SSD的命令。

如本节所述,如果负载将设备分配给处理中断负载和工作负载的CPU核心,则可能会影响NVMe I/O性能。NVMe驱动程序利用了Sapphire Rapids更高的核心数和更大的缓存大小,通过尽可能将共享相同NVMe队列和相同缓存的CPU核心分配给设备。例如,可以分配来自本地或远程socket的物理核心和其兄弟核心。这对于I/O深度较低的NVMe设备(如基于Intel Optane Memory的NVMe设备)非常有益。在核心数较低的产品或支持较少NVMe队列的NVMe设备上,CPU核心将不得不处理中断和工作负载,导致该NVMe和可能附加到此根端口的所有设备的IOPS下降。

为了代表更真实的工作负载配置,所呈现的结果将不使用远程socket上的CPU核心,除非必要。

补充:CPU的物理核心数和逻辑核心数基础知识

CPU的物理核数是指CPU芯片上实际存在的独立处理核心的数量。每个物理核心都是独立的处理单元,可以同时执行指令和进行运算。物理核心数通常与CPU处理器的规格和型号有关,可以是单核、双核、四核、六核等。

逻辑核数是指通过超线程(Hype-Threading)技术在每个物理核心上模拟的额外逻辑处理单元的数量。这些逻辑核心可以并行执行多个线程,并在同一时间段内处理多个任务逻辑核心的数量通常是物理核心数的倍数,如一个物理核心可以通过超线程技术模拟出两个逻辑核心。逻辑核心的存在可以提供处理器的多任务处理能力核整体性能。通过超线程技术,CPU可以更好的利用其处理资源,同时处理多个线程和任务,提高系统的并发处理能力。

在计算机系统中,CPU的物理核数和逻辑核数的组合可以决定系统的性能和多任务处理能力,更多的核心数和逻辑核数通常意味着更高的并发处理能力和更好的性能。

开启超线程(Hyper-Threading)技术在某些情况下可以带来性能上的优势,但也可能存在一些潜在的缺点。以下是开启超线程的一些优点和缺点:

优点:
1. 提高多任务处理能力:超线程可以让每个物理核心模拟出多个逻辑核心,从而同时处理多个线程或任务。这可以提高CPU的多任务处理能力,使系统可以更好地同时执行多个任务。

2. 更好的资源利用率:超线程技术可以将空闲的处理能力利用起来,避免物理核心处于空闲状态。通过在物理核心上执行多个线程,可以更高效地利用处理器的资源,并提高整体的吞吐量和效率。

3. 提高单线程性能(特定情况下):在一些特定的工作负载和应用程序中,超线程可以使每个物理核心在同一时间段内执行多个线程,从而提高单线程性能。这主要取决于应用程序的线程级并行性和超线程的实现方式。

缺点:
1. 竞争资源:在一个物理核心上同时运行多个线程时,这些线程会共享一些资源,如缓存和执行单元。如果线程之间有较大的资源竞争,可能会导致性能下降,同时也可能出现延迟增加的情况。

2. 需要更多的电源和散热:超线程会增加CPU的功耗和热量,因为每个物理核心需要同时支持多个线程的执行。这可能需要更高的散热配置和更多的电源供应,以维持温度和功耗的控制。

3. 对某些工作负载效果有限:超线程技术并不对所有类型的工作负载都能带来明显的性能优势。在某些应用程序和场景中,由于资源限制或线程之间的同步等原因,超线程可能无法提供明显的性能提升。

需要注意的是,超线程的效果取决于具体的硬件实现、操作系统和应用程序的特性。在选择是否启用超线程时,需要综合考虑系统的使用情况和需求,以及对性能和功耗的权衡。

如本节所述,如果工作负载分配给设备的CPU核心必须处理中断负载和工作负载,则可能会影响NVMe I/O性能,

NVMe驱动程序通过将共享同一NVMe队列和相同缓存的CPU核心分配(如来自本地或远程套接字的物理核心和其兄弟核心对)来利用Sapphire Rapids更高的核心数和更多的缓存大小。这对于具有较低I/O深度的NVMe设备(如基于Intel Optane Memory的NVMe设备)可能是一个巨大的好处。对于核心数较小的产品或支持较少NVMe队列的NVMe设备,CPU核心将不得不处理中断和工作负载,导致该NVMe上的IOPS较低,可能会影响所有连接到此根端口的设备。所呈现的结果除非必要,否则不会使用远程套接字中的CPU核心,以表示更逼真的工作负载配置。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值