作者简介
万群,Intel存储软件工程师 主要从事SPDK软件测试工作
目录
一.概述
二.ADQ特性简介以及在SPDK中的应用
三.软硬件系统先决条件
四.系统安装(包括target端和host端)
五.参考文献
一
概述
英特尔®最新推出的E810系列网络适配器,通过创新通用功能提高应用程序效率和网络性能,这些功能可优化高性能服务器工作负载,例如NFV,存储,HPC-AI和混合云。本文通过介绍如何利用英特尔®E810网卡的ADQ特性来加速其在存储上的应用。
二
ADQ特性简介以及在SPDK中的应用
E810网卡简介
E810[1]系列网卡具有以下重要特性,这里我们讲重点介绍ADQ[2]在应用程序的使用:
单端口和双端口QSFP28
应用程序队列(ADQ)
PCI Express(PCIe)4.0 * 16
动态设备个性化(DDP)
以太网端口配置工具(EPCT)
同时支持RDMA iWARP和RoCEv2
ADQ概览
随着现代数据中心的扩展,关键的挑战是提供可扩展,可预测的应用程序级性能。ADQ技术通过将队列专用于关键工作负载来提高性能可伸缩性和可预测性,并通过显著降低抖动来提供可预测的高性能。通过降低抖动来提高应用程序响应时间的可预测性,可以为任务分配更多的计算服务器,并可以允许更多的用户访问系统,从而提供更好的终端用户体验。甚至非大型应用程序也可以从更高的一致性中受益,从而使它们更容易满足服务级别协议(SLA)。图1部分给出了使用ADQ以及不使用ADQ特性的例子。不同颜色的汽车类似不同的应用,不同的车道类似不同的网卡队列。使用ADQ之后,某些网卡队列可以直接分配给某些专有应用,从而这些应用的网络包可以在特定的队列上处理,和其他应用隔离开来。
图1 ADQ特性的开启以及关闭
ADQ其工作机制主要包含以下三个方面:1.将应用程序流量过滤到一组专用队列;2. 执行的应用程序线程连接到ADQ队列集中的特定队列;3.速率限制应用出口(Tx)网络流量。以上机制可以多方面提高系统的性能,主要体现在三个方面:1.提高应用的可预测性;2.减少应用程序延迟;3.提高应用程序吞吐量。ADQ特性的优势体现在图2
图2 ADQ特性的优势
ADQ在SPDK中的应用简介[4,5]
SPDK[2]使用ADQ[3]的以下功能:
1. 根据硬件队列对套接字进行分组
每个硬件队列都与唯一的NAPI_ID相关联。使用SO_INCOMING_NAPI_ID套接字选项将与给定的HW队列关联的所有套接字分组。
从SPDK版本20.10开始,NVMe-oF target全部改为Transport的调度算法。如果要使用ADQ, 需要通过RPC打开 enable_placement_id的选项,用于开启基于placement_id (即NAPI_ID)的调度算法。
2. 交通导向
硬件队列分为流量类别,并被分配来处理应用程序流量。这是使用tc命令完成的。过滤器是根据NVMF目标地址和端口号配置的。它配置硬件文件管理器,并将数据包引导到适当的硬件队列。
Tx数据包根据套接字优先级进行控制。
3. 对称排队
连接的Rx和Tx数据包都流经相同的HW队列
4. 增强了对硬件队列的繁忙轮询
硬件队列的繁忙轮询避免了中断,从而提高了吞吐量。
CVL驱动程序由状态机组成,该状态机使驱动程序尽可能保持处于繁忙的轮询模式。
涉及对SPDK的更改以帮助驱动程序处于繁忙的轮询模式。
涉及内核设置以启用内核TCP堆栈中的繁忙轮询。
ADQ配置相关工具
1. 了解tc命令
通过以下命令来介绍tc命令的配置
# tc qdisc add dev eth4 root mqprio num_tc 3 map 2 2 1 0 2 2 2 2 2 2 2 2 2 2 2 2 queues 4@0 6@4 2@10 hw 1
上面的命令配置3种流量类别。HW队列根据命令末尾的配置映射到每个流量类。
a) tc0从队列0(q0-q3)开始有4个队列
b) tc1有6个从队列4(q4-q9)开始的队列
c) tc2有2个从队列10开始的队列(q10,q11)
关键字“ ma