文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

物理服务器网络性能优化

2024-11-30 12:31

关注

SMP IRQ affinity允许系统限制或者重新分配服务器的工作负载, 从而让服务器更有效的工作。以网卡中断为例,在没有设置SMP IRQ affinity时, 所有网卡中断都关联到CPU0, 这导致了CPU0负载过高,而无法有效快速地处理网络数据包,容易产生性能瓶颈。通过SMP IRQ affinity,把网卡多个中断分配到多个CPU上,可以分散CPU压力,提高数据处理速度。

图1 SMP对称多处理器结构

同时,Linux的irqbalance用于优化中断分配,自动收集系统数据以分析使用模式,并依据系统负载状况将工作状态置于Performance Mode或Power-Save Mode。处于Performance Mode时irqbalance会将中断尽可能均匀地分发给各个CPU以充分利用CPU多核,提升性能;处于Power-Save Mode时,irqbalance会将中断集中分配给第一个CPU,以保证其它空闲CPU的睡眠时间,降低能耗。

正常情况下,一张网卡只有一个队列用来接收网络数据包时,同一时间数据包的处理只能由某个单核处理,不仅无法发挥多CPU多核优势,而且大流量带宽下必然造成数据包阻塞。因此,随着技术的发展,引入了网卡多队列机制,一张网卡支持多个队列来接发收数据包,这样同一时间多个队列的数据包可以分散到不同的CPU进行处理。RSS(Receive Side Scaling)是网卡的硬件特性,实现多队列,每个队列对应一个中断号,通过中断绑定实现网卡中断在多CPU多核上的分配。

但是在网络压力较大时,多队列网卡I/O产生的中断访问非常多,此时队列数量会对网卡数据包的处理效率产生较大影响。根据实践经验,当单个PCIe槽位上网卡的队列总数等于该PCIe槽位所连接的CPU物理核数时,网卡I/O中断的处理效率将会最高。例如,单颗CPU的物理核心数为32,每张网卡的端口为2,所以网卡的多队列数应设置为16=32/2。

由于操作系统默认通过irqbalance服务来分派网卡队列中的网络数据包交由哪个CPU core处理,当irqbalance服务分配的处理网卡中断的CPU core不是网卡PCIe槽位所连接的CPU die或CPU时,会触发跨CPU die或CPU的core访问,中断处理效率会比较低。因此,在网卡队列数设置完成后,我们还需要关闭irqbalance服务,将网卡队列中断号绑定到处理网卡中断的CPU core上,从而减少跨CPU die或CPU访问所带来的额外开销,进一步提升网络处理性能。

#02、动手实践

判断当前系统环境是否支持多队列网卡。

# lspci -vvv

如果在Ethernet项中含有MSI-X: Enable+ Count=9 Masked-语句,则说明当前系统环境是支持多队列网卡的,否则不支持。

查看网卡是否支持多队列,以及最多支持多少、当前开启多少。

# ethtool -l eth0  

## 查看 eth0 多队列情况

设置网卡当前使用多队列。

# ethtool -L eth0 combined    

##  针对 eth0 网卡设置多队列,N为要设置的队列数

确保多队列设置确实已生效,可以查看文件。

# ls /sys/class/net/eth0/queues/    

## 确认rx数量等于设定值

rx-0 rx-2 rx-4 rx-6 tx-0 tx-2 tx-4 tx-6
rx-1 rx-3 rx-5 rx-7 tx-1 tx-3 tx-5 tx-7

查看系统给网卡端口分配的中断号。

# cat /proc/interrupts | grep –i eth0

主动关闭irqbalance进程。

# service irqbalance stop

更新文件,设置中断绑定。

通过修改或可以设置中断绑定,其中{IRQ_ID}是相应的中断号。smp_affinity内容是16进制,smp_affinity_list内容是10进制,两个文件相通,修改一个之后另一个相应改变。

#03、经验总结

可以通过手动改变smp_affinity文件中的值来将IRQ绑定到指定的CPU核心上,或者启用irqbalance服务来自动绑定IRQ到CPU核心上。针对多CPU多核的SMP体系,一般默认启用irqbalance简化配置并保障性能。

对于文件服务器、高流量Web服务器这样的应用来说,把不同的网卡IRQ均衡绑定到不同的CPU上将会减轻某个CPU的负担,提高多个CPU整体处理中断的能力。

对于数据库服务器这样的应用来说,把磁盘控制器绑到一个CPU、把网卡绑定到另一个CPU将会提高数据库的响应时间实现优化性能。

综上所述,性能优化是一个过程而不是结果,需要大量的测试、观察、验证和改进。因此,应用系统需要合理地根据生产环境配置和应用特点来平衡IRQ中断,从而不断提高系统的整体吞吐能力和性能。

来源:匠心独运维妙维效内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯