SapphireRapids NVMe Aggregate Performance with灵活IO测试--学习笔记(二)

4.主机系统配置

由于NVMe控制器使用队列和数据缓冲区,这些队列和数据缓冲区可以托管在主机系统内存空间的任何位置,因此假设主机系统具有足够的内存容量和内存带宽来同时处理多个NVMe访问,以避免受到内存带宽限制。主机系统是Sapphire-Rapid 2S系统,每个插槽上配置了8个DDR5 64GB,1DPC,运行在每个插槽上的速度为4800MTS(例如,共1TB内存容量)。

4.1 根端口的硬盘数量

Sapphire Rapids 支持链路分叉到 x2s(第四代 PCIe Gen 4)和 x4s(第五代 PCIe Gen 5),以便为 NVMe 设备提供显著的聚合带宽。
每个根端口能有效支持 4 个 NVMe Gen5 x4 或 8 个 NVMe Gen4 x2。

针对大多数客户使用的配置,性能研究和调优指南将覆盖在本地套接字上同时访问的最多 16 个 NVMe Gen5 x4 或 16 个 NVMe Gen4 x4。

4.2 操作系统和IO 引擎

本文档的范围不涵盖Linux Kernel I/O限制,也不突出SPDK(Storage Performance Development Kit)或io_uring提供的I/O性能改进。主要是帮助客户在更多工作负载上实现最佳的总体性能,而无需修改应用程序使其与SPDK兼容,或者强制它们迁移到仅在内核5.1及更高版本中可用的io_uring。在测试过程中,使用CentOS Stream 8.0,并在内核4.18/5.15和libaio中使用作为IO引擎。

SPDK和IO_uring的优势将在下面进行文档记录和介绍。

SPDK(Storage Performance Development Kit)是一个开源的、高性能的存储性能开发工具包。它旨在提供一组用户空间库和驱动程序,用于构建高性能、低延迟的存储应用程序。SPDK主要通过去除传统存储栈中的操作系统内核和网络协议栈,直接在用户空间进行数据传输和处理,从而实现更高的性能和更低的延迟。它提供了多种基于内存的存储技术,包括轻量级块存储、NVMe和RDMA(远程直接内存访问)等。SPDK支持多种存储设备和网络技术,并且提供了丰富的API和工具,使开发者能够更轻松地构建高性能的存储应用程序。

SDPK和IO_uring的优势:

io_uring:每个批次至少有一个,当使用SQ提交线程时为零。批处理减少了每个I/O的开销。

本文档将重点展示上下文切换对总体I/O性能的影响,并探讨如何最小化它以恢复潜在的性能下降。以FIO负载对4个NVMe Intel P5800X进行4K随机读访问为例,我们可以看到大量的中断和上下文切换:

不同IO引擎的硬件中断和上下文切换

Metric

Libaio

io_uring

Comment

HW Interrupts (Thousands per seconds)

4612

21.80

io_uring polling 轮询消除了中断

Context Switch (Thousands per second)

4520

114.2

Reduces context switches by 99%

4.3 FIO和Linux内核版本或配置

如果同时访问多个NVMe设备,内核5.15可能需要进行一些重新配置以提高NVMe性能。禁用以下内核配置项并重新构建内核,可以使性能达到同时访问4个NVMe设备的预期目标。

  • CONFIG_UNINLINE_SPIN_UNLOCK=n
  • CONFIG_DEBUG_SPINLOCK=n
  • CONFIG_IMS_MSI=n
  • CONFIG_IMS_MSI_ARRAY=n
  • CONFIG_DMA_API_DEBUG=n

CONFIG_UNINLINE_SPIN_UNLOCK是指内核配置项,表示是否开启将自旋锁(spinlock)解锁操作的代码内联到调用函数的过程中。

CONFIG_DEBUG_SPINLOCK用于开启或关闭自旋锁(spinlock)的调试功能。当该配置项启用时,内核会提供更多的自旋锁调试信息,帮助开发者定位和解决自旋锁相关的问题。

CONFIG_IMS_MSI用于启动或禁用Intel IMS(Integrated Management System)的MSI(Message Signaled Interrrupt)特性.IMS是一种用于管理和监控Intel服务器的技术,而MSI是一种用于替代传统的中断方式的高效中断处理机制,通过启动该配置项,可以开启对Intel IMS的MSI支持。

CONFIG_IMS_MSI_ARRAY是Linux内核配置选项,用于启动IMS芯片组的MSI阵列支持。IMS(Intel Mobile System)是一种针对移动设备应用的芯片组,其中包含了多种功能模块,如处理器、图形核心、IO控制器、音频处理器等。启动CONFIG_IMS_MSI_ARRAY选项可支持IMS芯片组的MSI阵列,用于优化中断处理性能,并提高系统的稳定性和可靠性。

CONFIG_DMA_API_DEBUG Linux内核配置选项,用于启动DMA(Direct Memory Access,直接内存访问) API的调试功能。

DMA时一种数据传输方式,允许外部设备直接访问系统内存,而不需要经过中央处理器的干预。这种方式可提高数据传输的效率和性能,减轻处理器的负载。在Linux内核中DMA API提供了一组函数和接口,用于管理和控制DMA的操作。

启用CONFIG_DMA_API_DEBUG选项可以启动DMA API的调试功能,在运行是收集相关的调试信息,这些调试信息可以帮助开发者诊断和解决与DMA相关的问题,如数据传输错误、性能瓶颈等。开启可能会增加系统的开销和运行时的开销,故一般在调试和开发阶段使用,生产环境中建议关闭此选项。

补充:

MSI是一种冲断处理机制,用于取代传统的电平触发中断方式,在传统的电平触发中断中,设备通过将一个电平信号发送给处理器来请求中断。在MSI中设置通过发送一个消息给处理器来请求中断。这个消息可以通过总线上的某个特定的信号线(如PCIe中的消息地址线)或通过内存写入的方式传递给处理器。MSI的优点是可以减少总线的占用并提高系统的性能,在传统的电平触发中断中,设备之间可能会争夺同一个中断线,导致冲突和延迟。而MSI使用不同的消息地址,每个设备可以有独立的中断,从而避免了冲突和延迟,MSI还可以提供更多的中断向量,支持更多的设备。也属于硬中断

需要注意的是,MSI的使用需要硬件和驱动程序的支持,处理器和设备必须支持MSI,且驱动程序也不相应地配置和处理MSI中断。

4.4 NVMe*设备和主机的功耗和温度限制

当访问NVMe设备时,存储介质(NAND闪存或3D交叉点存储器)可能会以满速运行,产生显著的热功耗,系统可能会变得异常。为解决这个问题,NAND设备会根据其ASIC、媒体和电路板的温度传感器报告综合温度,当温度达到70摄氏度(根据SMART报告)时,可能会发生热限制,NVMe设备会减慢性能,热限制通过在N个线性步骤中移动电源上限/预算来工作,一些NVMe厂商可能会实现4个步骤,从70摄氏度开始限制,最高可达74摄氏度,如下图所示:

在进行NVMe测试时,测试人员应确保环境温度保持恒定,并确保待测NVMe设备具有适当的散热。

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

FIO是一个广为认可的行业基准测试工具,用于测试NVMe设备,因为它能将存储设备推向极限,以提供最高的输入/输出每秒,并且其通过生成多个线程或进程执行特定类型的I/O操作而具有灵活性。用户可通过配置文件和与I/O负载相匹配的作业文件来指定所需的操作。另需要确保主机系统能够承受压力测试水平,同时访问多达16块NVMe设备将导致NVMe设备、CPU、互连、缓存和内存的系统活动增加,并可能导致系统的功耗调整,以保持TDP在限定范围内,从而潜在降低CPU核心或非核心频率。

假设系统具有适当的冷却、足够的系统内存带宽(通过填充所有内存通道),并且将用于压力测试设备的线程在可能的情况下分配到本地CPU核心上,以提供最大的总IOPS。同时假设FIO作业文件将分配足够的位于与NVMe设备相同插槽或NUMA节点的CPU核心资源,可以最小化系统性能的变化,可以确保多个NVMe设备之间分配负载时,每个设备都能获得相似的性能,且可以避免一些设备过度使用而导致性能崩溃的问题。

测试配置将使用Intel Archer City参考2插槽平台,搭配Sapphire Rapids 2 * CPU Q0SC(56C 112T,P1=2.0GHz,P0n=3.0GHz;非核心频率=2.5GHz),64GG *16 DDDR5 4800MTS内存,CentOS8操作系统,Linux Kernel 4.18,以及16个装在1个插槽上的Intel Optane P5800x Gen4x4或16个Samsung PM1743 Gen5x4 / 16 PM9A3 Gen4x4 NVMe设备。

为了在系统上获得更高的性能,BIOS中禁用VT-DTM。FIO测试的持续时间300秒,预热60s,如果需要,将NVMe设备进行预处理设置,以满足NVMe设备供应商的要求。

补充:

VT-DTM:Virualization Technology for Directed I/O Mapping,是Intel的虚拟化技术之一,它的作用是通过提供硬件支持,将直接I/O(I/O设备与主机之间的直接交互)映射到虚拟机实例,从而改善虚拟化性能和安全性

VT-DTM在虚拟化环境中的主要作用包括:

1,I/O设备直接分配:允许将物理I/O设备直接分配给虚拟机实例,避免了虚拟机监视器的介入,提高了I/O效率和性能。

2.安全隔离:通过建立I/O设备和虚拟机实例之间的硬件隔离,防止恶意虚拟机实例访问其他虚拟机实例或主机的I/O资源。

3.DMA保护:提供了对DMA直接内存访问进行安全保护的能力,确保I/O设备只能访问被授权的内存区域,防止未经授权的内存访问。

4.快速迁移:支持虚拟机和I/O设备的快速迁移,使虚拟机实例无需重新配置和重启即可在不同的物理主机之间迁移。

禁用VT-DTM可以提供更高的性能,特别是对于不需要虚拟化和安全隔离功能的应用场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值