ZTC
作者ZTC2020-07-27 23:36
售前技术支持, 浪潮商用机器企业云创新中心

你的万兆网卡你用对了吗?

字数 1808阅读 14962评论 2赞 5

1.1 服务器网卡

通常我们把计算机中的网络适配器称为网卡,网卡的作用是负责与其他计算的通信。在 OSI 参考模型中,用于接收和发送数据的网卡通常工作在这个七层模型中的最底下物理层和数据链路层。

相较于普通 PC 上的网卡,服务器网卡目前主流都是 10Gb 或 以上的传输速率,并在可靠性,安全性上有更高的要求,特别是 K1 Power 小型机这种可能连续稳定运行十多年不需要停机的服务器,更要求网卡能够长时间稳定运行。

1.1 如何评估网卡的处理能力

提到网卡的处理能力,通常我们首先想到的指标就是传输速率,这其实是代表了网卡的带宽处理能力,像千兆( 1Gbps ),万兆( 10Gbps )等指标展示的都是带宽。但是很少有人会关心网卡的包处理上限,可能是因为很少有应用场景会触及包数转发处理能力的瓶颈,但是在某些业务压力非常大、平均网络包大小非常小的情况,或者是在一些极限压测的情况下可能会遇到这样的问题,那么 K1 Power 小型机上万兆网卡的包数转发处理能力的极限是什么呢?别急,让我们来做个小实验。

1.2 万兆网卡的每秒包数处理能力

测试工具使用的是 netperf ,测试拓扑为简单的 client/server 模式, 5 个 client 对 server 端的 netserver 进行通讯,收发包的大小均为 200Byte ,测试过程中使用 topas 、 nmon 和 netstat 观察每秒包的数量( PPS )。

我们首先选取了目前 K1 Power 9/8两代服务器上用的最多的万兆网卡( FC#EN0S/EN0T )作为测试对象,这是一块 Qlogic 生产的网卡。在初始测试中,这块网卡单口的 PPS 大约为 70 万左右(抱歉截图被电脑吃了)。

1.2.1 优化方法一:调整收发队列

通过 lsattr 命令查看网卡的属性,我们可以发现 queues_rx 和 queue_tx 两个属性,分别代表了这块网卡的收发队列,不同类型的网卡可以调整的范围会有所不同, EN0S/EN0T 这块网卡最大可以调整到 7 :

将 queues_rx 和 queue_tx 调整到 7 后, PPS 有了一倍多的提升,单口的 PPS 可以达到 150 万(抱歉截图又被电脑吃了)。

1.2.2 优化方法二:绑定网卡中断

想法是将网卡的中断和 CPU 的第一个逻辑 CPU 做绑定(除 CPU0 外),由于我们测试环境的 AIX 系统设置的是 SMT4 ,所以我们绑定的是 CPU4, 8, 12 … 。新的问题来了,那网卡的中断怎么查看呢?我们知道老型号的网卡直接用 lsattr 查看就行,但是比较新的网卡型号, lsattr 只能看到一个基础中断号,这个时候我们需用 #entstat –d entX 来查看:

绑定命令很简单,直接 bindintcup –q 中断号,这样就绑定成功了。

我们迫不及待地测试一下,绑定中断之后, PPS 有了进一步的提升,达到了 200 万左右。

1.2.3 优化方法三:优化 affinity

熟悉 Power 的小伙伴们应该都知道 affinity 吧,结合一些工具,如 DPO , resource dump 等功能对测试分区的资源分布进一步的优化,确保所有资源在服务器的一个系统柜内部。在最优的测试环境中, PPS 可以进一步提升到 280 万左右。

总结:

  1. 合适地配置网卡和系统环境可以最大化地提升网卡处理包的性能,通常情况下,通过调整网卡的收发队列( queues_rx 和 queue_tx ),结合优化分区的 affinity ,网卡处理包的能力就可以满足一般的网络小包 + 大压力的场景,如果是在压力测试中,希望测一个极致的摸高值,也可以尝试一下绑定中断。

  2. 友情提示:对于网卡收发队列值的调整,不同网卡可以设置的范围是不一样的,比如 Power 服务器上另一款很常见的万兆网卡 EN15/EN16 ( Emulex 的卡), queues_rx 和 queue_tx 最大只能设置为 5 ,所以在用了上面的所有优化方法后,单个网口的最大 PPS 就只能提升到大约为 200 万左右。

如果您的业务场景符合平均网络包大小非常小、网络压力比较 heavy ,可以尝试用上面的方法优化一下,说不定会有意想不到的效果。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

5

添加新评论2 条评论

#qingdao2008技术支持, 搬砖民工
2020-08-31 17:19
陈老师威武
#tyrande系统工程师, 安富利(中国)科技有限公司
2020-07-28 00:36
学习了,以前一直没注意。
Ctrl+Enter 发表

核心数据库服务器选型优先顺序调查

发表您的选型观点,参与即得50金币。