首页 > 系统相关 >【Linux】配置网卡中断亲和性

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

时间:2024-12-30 18:40:57浏览次数:6  
标签:中断 IRQ 亲和性 网卡 Linux irqbalance CPU

中断亲和性是指处理器在接收到网卡的中断后,由哪些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。

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

标签:中断,IRQ,亲和性,网卡,Linux,irqbalance,CPU
From: https://www.cnblogs.com/o-O-oO/p/18642158

相关文章

  • 腾讯通RTX升级迁移攻略,兼容Linux内核国产系统及移动端
    一、腾讯通RTX继续使用的主要难题腾讯通RTX停更后,用户不仅无法继续获得更新、技术支持和资源下载,还面临着以下无法解决的使用问题:●不兼容国产系统与移动端:腾讯通RTX仅支持Windows和Mac操作系统,无法在基于Linux内核的国产操作系统(如统信UOS、银河麒麟)及移动设备(如Android、iOS)......
  • Linux(Debian)下部署.NET Core网站(守护进程)
    守护进程(可选)sudonano/etc/systemd/system/opac.service键入文本[Unit]Description=opacOPAC[Service]WorkingDirectory=/usr/share/opacExecStart=/usr/bin/dotnet/usr/share/opac/OPAC.dll--urls=http://192.168.0.121:8001&Restart=always#Restartservi......
  • Redis7在linux的下载与安装
    源码地址:https://github.com/redis/redis下载地址:https://redis.io/docs/latest/operate/rs/release-notes/配置安装环境:1、查询gcc环境是否配备gcc-v2、gcc安装命令yum-yinstallgcc-c++3、解压tar-zxvfredis-7.0.0.tar.gz4、安装(默认安装目录是:/usr/local/bin......
  • 【linux-faq问题合集】clickhouse服务启动之后修改数据目录
    安装clickhouse之修改数据目录记录忘了重启服务就修改配置导致数据目录过大且不在指定位置1、现状:由于之前安装版本的问题导致有些配置文件没有同步修改/要不就是忘了重启。导致服务正常启动,但是配置文件中修改的参数未生效默认/目录磁盘一直告警,原数据目录---/var/lib/clickh......
  • linux软链接和硬链接区别
    在Linux中,软链接(SymbolicLink)和硬链接(HardLink)是两种文件链接方式,主要区别在于它们的实现方式和行为。以下是详细的比较:1.定义软链接(符号链接):类似于Windows的快捷方式。是一个指向目标文件路径的特殊文件。删除目标文件后,软链接会变成无效链接(“断链”)。硬......
  • linux内核编译+QEMU编译+根文件系统制作
    一、安装相关依赖项(Linux内核和QEMU都包括)sudoaptinstalllibssl-devflexbisonpython3-devpipncurses-devellibglib2.0-devlibfdt-devninja-buildzlib1g-devlibpixman-1-devlibelf-devsudopipinstallsphinx编译qemu。官网:https://www.qemu.org/......
  • linux挂载samba客户端
    一、安装必要的软件包首先,需要确保系统上安装了Samba客户端软件包和cifs-utils工具。可以使用以下命令进行安装:sudoyuminstallsamba-clientcifs-utils-y二、创建挂载点目录挂载点是一个本地目录,用于挂载远程的Samba共享。可以使用mkdir命令创建一个挂载点目录,例如:sudo......
  • linux切换nologin用户运行服务时环境变量的设置
    遇到问题:需要切换nologin用户运行服务,同时使得go程序崩溃时可以生成core。使用sudo-H-u$USER/bin/bash-c"nohup./server>/dev/null2>&1&"。发现设置的环境变量不生效。问题原因:shell没有继承当前用户的环境变量,sudo-E-H-u$USER/bin/bash-c,加入-E会尝试继承当......
  • linux 操作系统下last命令介绍和使用案例
    linux操作系统下last命令介绍和使用案例last命令是Linux系统中用于显示用户最近登录信息的工具。它通过读取/var/log/wtmp文件,提供有关用户登录和注销的详细记录,包括系统启动和关闭的信息。命令简介基本功能查看用户登录历史:显示当前和过去的用户登录记录。显示系统......
  • linux-软硬链接
    我们今天再来聊一下这个"软硬链接"的问题.目录1.软硬链接长什么样?2.软连接和硬链接的特征和应用2.1软连接特征及其应用?①软连接是什么?②软连接的应用1:快捷方式③软连接的应用2:方便维护库文件2.2硬连接特征及其应用?①硬链接是什么?②引用计数?③硬链......