弹性RDMA网卡(Elastic RDMA Interface,简称ERI)是一种可以绑定到ECS实例的虚拟网卡,它是实现eRDMA功能的关键组件。ERI依附于弹性网卡(ENI),在弹性网卡的基础上开启RDMA的功能。
功能介绍
在ECS实例上配置eRDMA,需要为实例绑定弹性RDMA网卡。eRDMA是阿里云提供的低延迟、大吞吐、高弹性的高性能RDMA网络服务。通过ERI,eRDMA能够在ECS实例上实现超低延迟和高吞吐量的网络通信。详细信息,请参见eRDMA概述。
目前只有部分实例规格支持绑定弹性RDMA网卡,详细信息,请参见实例规格族。
您可以通过DescribeInstanceTypes返回参数中的EriQuantity的值,查询实例规格支持绑定ERI的最大数量(0表示不支持弹性RDMA接口)。
实例绑定多个弹性RDMA接口时,需要考虑网卡的队列对数量限制。详细信息,请参见队列对(QP)数。
创建弹性RDMA网卡
随实例创建ERI
对于支持eRDMA的实例规格,您可以在购买实例的时候选择开启网卡的弹性RDMA接口。不同类型的实例的具体配置可能不同:
企业级实例:具体操作,请参见购买企业级实例时配置eRDMA。
单独创建ERI
在创建辅助弹性网卡时,启动增加弹性RDMA接口。ERI会共用该辅助弹性网卡的设置,包括弹性网卡的IP、应用于弹性网卡的安全组规则等。具体操作,请参见创建辅助弹性网卡。
通过OpenAPI创建ERI
您可以通过CreateNetworkInterface 创建一个弹性网卡,并设置NetworkInterfaceTrafficMode参数的值为HighPerformance,即创建一个开启了ERI的弹性网卡。
弹性RDMA网卡的管理,如绑定和解绑、修改属性等操作,请参见管理弹性网卡。
查看弹性RDMA网卡
在控制台查看
您可以在控制台查看弹性网卡是否开启RDMA接口。
登录ECS管理控制台。
在左侧导航栏,选择 。
找到目标ECS实例,点击实例ID进入实例详情页。
选择弹性网卡页签,可以看到目标ECS实例绑定的弹性网卡的详细信息。
在网卡类型列,可以看到弹性RDMA接口标志,这表示网卡开启了弹性RDMA接口。
通过OpenAPI查看
您可以通过DescribeNetworkInterfaceAttribute查询网卡属性,返回参数中的NetworkInterfaceTrafficMode的值表示网卡是否开启ERI:
Standard:使用 TCP 通讯模式。
HighPerformance:开启 ERI(Elastic RDMA Interface)接口,使用 RDMA 通讯模式。
在实例内部查看
当实例绑定的弹性网卡开启弹性RDMA接口后,您可以在实例内部查看RDMA网卡。
远程登录实例。
具体操作,请参见使用Workbench工具以SSH协议登录Linux实例。
执行以下命令,查看RDMA网卡设备。
ibv_devices
通过返回的设备名称,可以看到是eRDMA网卡设备。
如果您的实例绑定了多个开启弹性RDMA接口的网卡设备,输出如下所示:
您可以通过ibv_devinfo
查看弹性RDMA网卡更多配置参数,如端口状态、支持的最大队列数等。
修改已创建弹性网卡的RDMA接口
开启弹性网卡的RDMA接口
您可以通过ModifyNetworkInterfaceAttribute,将NetworkInterfaceTrafficMode参数的值设置为HighPerformance,将NetworkInterfaceId参数的值设置为弹性网卡ID(主网卡或辅助弹性网卡),从而为指定的弹性网卡开启ERI。
您无法在控制台上为已创建的弹性网卡开启弹性RDMA接口。
关闭弹性网卡的RDMA接口
目前已开启弹性RDMA接口的网卡无法关闭弹性RDMA接口,但您可以通过为实例绑定、解绑辅助弹性网卡的方式,实现ECS实例弹性RDMA接口的启用和关闭,详细信息,请参见绑定辅助弹性网卡、解绑辅助弹性网卡。
队列对(QP)数
QP(Queue Pair)是RDMA中的基本通信实体,由一个发送队列(Send Queue,SQ)和一个接收队列(Receive Queue,RQ)组成。QP负责管理发送和接收的数据。
队列对(QP)数是指一个RDMA设备或网络接口上可以创建的最大队列对QP数量,它决定了RDMA网络可以支持的最大并发连接数,影响网络的扩展性和并发处理能力。
实例的QP数
实例的QP数量和规格有关,当您为ECS实例绑定多张弹性RDMA网卡时,根据实例规格不同,所允许的所有网卡的QP数量的上限不同,您可以通过DescribeInstanceTypes查询对应实例规格所允许的所有网卡的QP数量上限:
企业级CPU实例:返回参数中的QueuePairNumber的值,即实例规格允许的所有弹性RDMA网卡的QP数量上限。
弹性RDMA网卡的QP数
弹性RDMA网卡在未设置QueuePairNumber绑定到实例上时,实际生效的默认值即实例规格所允许的所有网卡的QP数上限。对于支持多弹性RDMA网卡的实例规格,如果您已经附加了一个未设置QueuePairNumber的弹性RDMA网卡,那么将不能再继续附加更多的弹性RDMA网卡。您需要调整弹性网卡的QP数在上限范围内,然后再附加到实例上。
设置弹性网卡的QP数
您可以通过ModifyNetworkInterfaceAttribute,设置QueuePairNumber参数的值为指定的网卡QP数。
查看弹性网卡的QP数
您可以通过DescribeNetworkInterfaceAttribute查询网卡属性,返回参数中的QueuePairNumber即该弹性网卡的QP数。
当辅助弹性网卡创建完尚未绑定到实例时,不返回此参数。
合理设置QP数
设置合适的QP数量对于优化应用性能非常重要,因为过多或过少的QP都可能导致资源浪费或者成为性能瓶颈。
理解应用需求:建议您根据应用场景,结合目标实例规格和规划的网卡数量等,确定QP的需求量。如果您的应用程序是高并发、低延迟类型,则可能需要较多的QP来支持更多的并行连接;如果是大数据传输场景,那么单个QP的带宽利用率可能是更重要的考量因素。
参考硬件限制:
不同实例规格所允许的弹性RDMA网卡的最大QP数量不同,具体查询方法,请参见实例规格的QP数。
需要考虑服务器内存大小等因素,每个QP都会占用一定的系统资源。
测试与优化:完成初步配置后,您需要进行实际环境下的性能测试。根据测试结果进一步调整QP数量及其他相关参数。注意观察是否有任何异常情况发生,比如错误信息、丢包率增高等。
持续监控:即便找到了一个看起来不错的配置方案,也应该定期检查系统的运行状态,确保随着业务增长或其他变化,当前设置仍然适合。
正确设置QP数量是一项需要综合考虑多个因素的工作。建议结合自身业务特点、现有基础设施条件及目标性能要求来进行细致规划与调整。