【Linux】配置网卡中断亲和性

news/2025/1/8 10:37:43/文章来源:https://www.cnblogs.com/o-O-oO/p/18642158

中断亲和性是指处理器在接收到网卡的中断后,由哪些CPU来优先处理。为了提升网络应用的扩展性和降低时延,建议将中断请求IRQs(Interrupt Request)分散在可用的CPU核上。

Linux系统自带负载均衡服务irqbalance,该服务能根据当前CPU使用情况自动将IRQs分散到各个CPU核上执行,由于系统运行的复杂性,这种自动选择方案在CPU资源不足时往往不能够做到最优,有时候会出现IRQ和应用程序争抢同一个CPU核的情况,这时就需要进行人工手动设置,即设置中断绑核。

中断绑核的步骤如图示:

1、关闭irqbalance服务。

systemctl stop irqbalance
systemctl disable irqbalance

2、获取设备IRQ号。

cat /proc/interrupts | grep <device name>

其中<device_name>表示待配置的网卡接口名称。

3、检查IRQ号亲和性。

cat /proc/irq/$int/smp_affinity_list

其中$int表示设备IRQ号。

4、调整IRQ号亲和性。

echo <cpuNo> /proc/irq/<irq vector>/smp_affinity_list

配置示例

以设备enp129s0f0为例,配置IRQ中断亲和性。

1、确保irqbalance服务已关闭。

对于通用服务器,按前面的方法关闭irqbalance服务,并执行以下命令检查服务状态。

ps afx |grep irqbalance

如图所示表示irqbalance服务已开启。

对于华为系列服务器,由于系统后台有脚本会持续监控和开启irqbalance服务,因此上述方法无法关闭irqbalance服务。需要通过把irqbalance执行文件改名并用kill命令杀死当前运行的irqbalance程序才能生效。

mv /usr/sbin/irqbalance /usr/sbin/irqbalance.bak
kill -9 <pid>

示例中的“1393”为pid。

2、查询设备中断号。

以enp129s0f0设备为例,执行以下命令查询设备中断号。

cat /proc/interrupts |grep enp129s0f0

回显信息中起始行如368、369、370和371为设备enp129s0f0对应的IRQ号,行尾的描述一般表示该中断的含义,例如i40e-enp129s0f0-TxRx-0表示enp129s0f0设备0号收发队列中断。

3、查询设备IRQ号亲和性。

以368号中断为例,执行以下命令查询设备IRQ亲和性。

cat /proc/irq/368/smp_affinity_list

回显信息表示368号中断当前绑核情况为:CPU 12-23,CPU 36-47。

4、配置中断绑核。

选择哪个CPU非常关键,配置不合适可能导致性能会更差,适得其反。所以在绑核前需要确认当前网卡设备插在哪个PCIe槽位上,并以此确定该设备挂在哪个物理CPU下。最直接的方法是去现场直接查看。还有一个方法则是通过系统提供的命令查询得到。

以Intel网卡为例:首先通过lspci –tv命令获取设备信息,然后根据设备信息获取该卡所处的NUMA信息。如下图所示:

从上面的例子可以看到,这张Intel网卡挂在NUMA1下。

5、通过lscpu命令获取NUMA1包含哪些CPU,下图表示NUMA1包含第14-27以及第42-55 CPU。

6、执行以下命令把368中断绑到14-27以及第42-55中的某一个空闲的CPU。

素材来源官方媒体/网络新闻

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/861509.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UHP Modem Add

UHP Modem Add========== End

[转] Android源码对应分支、buildID

一、源码对应分支、Build IDbuild ID 标记版本支持的设备安全补丁级别TQ2A.230505.002.A1 android-13.0.0_r44 Android13 Pixel 4a (5G)、Pixel 5、Pixel 5a (5G) 2023-05-05TQ2A.230505.002 android-13.0.0_r43 Android13 Pixel 4a、Pixel 4a (5G)、Pixel 5、Pixel 5a (5G)、P…

WPF 记录鼠标、触摸多设备混合输入场景问题

本文记录在WPF应用中鼠标、触摸混合输入,鼠标事件抬起时不会有MouseUp事件触发的问题。 事件输入我们都知道有3类:鼠标、触摸、触笔,鼠标是windows系统出来就有的事件,后面加了触笔、触摸。 1.鼠标输入,只会触发Mouse冒泡隧道事件; 2.触笔输入,会触发除了Stylus事件外,…

基于Redis有序集合实现滑动窗口限流

滑动窗口算法是一种基于时间窗口的限流算法,它将时间划分为若干个固定大小的窗口,每个窗口内记录了该时间段内的请求次数。通过动态地滑动窗口,可以动态调整限流的速率,以应对不同的流量变化。 整个限流可以概括为两个主要步骤:统计窗口内的请求数量 应用限流规则Redis有序…

3、RabbitMQ队列之工作队列【RabbitMQ官方教程】

工作队列 使用 php-amqplib 在第一个教程中,我们编写了从命名队列发送和接收消息的程序。在本例中,我们将创建一个工作队列,用于在多个工作人员之间分配耗时的任务。 工作队列(又名:任务队列)背后的主要思想是避免立即执行资源密集型任务,并必须等待其完成。相反,我们把…

静力学FEM12.30

1.静力学方程 考虑图所示变截面弹性杆的静态响应。这是线性应力分析或线弹性问题的一个例子,我们需要求杆内的应力分布σ(x)。 应力由物体的变形产生,而变形由物体内各点的位移u(x)表征。位移导致用ε(x)表示的应变;应变是一个无量纲变量。杆受到分布力b(x)或集中力作用。这…

软件工程个人总结作业

项目 详细信息这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 作业要求这个作业的目标 软工实践个人总结学号 102201233一、学期回顾 1.1 回顾你对于软件工程课程的想象 1.1.1 达到期待和目标的部分算法编写能力的提升目标:提高解决复杂算…

一袋米要抗几楼——软工学期回顾

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13315这个作业的目标 对整个学期的学习进行总结学号 102201130🎓 一、学期回顾 1.1 回顾你对于软件工程课程的想象在上这门课之前,…

java.sql.SQLException: ORA-00600: 内部错误代码, 参数: [kcbnew_3]的其中一个解决方法

ORA-00600 解决方案java.sql.SQLException: ORA-00600: 内部错误代码, 参数: [kcbnew_3]的其中一个解决方法 重启 重启 重启 oracle服务。 今天反馈添加数据库报错 。试了一下就几各别的表不能插入。别的表好好的 GPT一下并检查了表空间都没什么问题。 执行 INSERT INTO DEVIC…

库卡机器人KR240电源模块维修思路讲解

一、库卡机器人KR240电源模块故障诊断 故障诊断是维修过程中的关键步骤。使用库卡提供的诊断工具或软件,对库卡机器人KR240电源模块进行故障诊断。重点关注电源供应、输出电压、电流等关键参数。通过诊断结果,确定故障的具体位置和性质,为后续的维修工作提供明确方向。 二、…