网络-网卡多队列

文章目录

  • 前言
  • 一、网卡多队列
  • 二、查看网卡多队列
    • 1.查看网卡是否支持多队列
    • 2.通过lspci方式查看
  • 二、设置网卡多队列
  • 三、网卡中断均衡设置
    • 查看网卡中断号
    • 查询其中断亲缘性配置
    • 设置中断均衡


前言

没有开启网卡多队列,导致在某些单线程多TCP链接的应用场景下,出现某个CPU软中断高的情况。
网卡在同一时刻只能产生一个中断,CPU在同一时刻只能响应一个中断,由于配置的原因,只有一颗cpu去响应中断(这个是可调的),所以所有的流量都压在了一个CPU上 ,把CPU跑满了。


一、网卡多队列

通常情况下,一张网卡会有一个队列用来接发收网络数据包,我们所说的一个队列你也可以理解成一个处理数据包的进程。

二、查看网卡多队列

1.查看网卡是否支持多队列

[root@mydesk logs]# ethtool -l ens3
Channel parameters for ens3:
Pre-set maximums:
RX:		0
TX:		0
Other:		0
Combined:	1
Current hardware settings:
RX:		0
TX:		0
Other:		0
Combined:	1

# Pre-set maximums  Combined 标识最多支持队列数
# Current hardware settings  Combined 标识当前设置的数,大于1表示已开启。

2.通过lspci方式查看

通过lspci方式查看网卡信息,如果有MSI-X, Enable+ 并且Count > 1,则该网卡是多队列网卡,多队列网卡内部会有多个 Ring Buffer。

[root@localhost ~]# lspci -vvv | grep -A50 "Ethernet controller" | grep -E "Capabilities|Ethernet controller"
01:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
	Capabilities: [40] Power Management version 3
	Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
	Capabilities: [70] MSI-X: Enable+ Count=10 Masked-
	Capabilities: [a0] Express (v2) Endpoint, MSI 00
	Capabilities: [e0] Vital Product Data

二、设置网卡多队列

ethtool -L eth0 combined 8

设置后可以在/sys/class/net/eth0/queues/目录下看到对应的队列

[root@localhost ~]# cd /sys/class/net/eth0/queues/
[root@localhost queues]# ls
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

三、网卡中断均衡设置

查看网卡中断号

例如查询eth0的网卡中断号

[root@localhost ~]# cat /proc/interrupts | grep eth0 |awk -F ":" '{print $1}' | awk '{print $1}'
46
47
48
49
50
51
52
53
.....

查询其中断亲缘性配置

shell> cat /proc/irq/45/smp_affinity
02

这里的 02 实际上是十六进制,表示 1 号CPU,计算方法如下(参考资料):
Binary Hex
CPU 0 0001 1
CPU 1 0010 2
CPU 2 0100 4

设置中断均衡

基本思路就是把各个中断号绑定到单独的CPU上,但是有可能出现中断号多于CPU个数的情况,毕竟现在的网卡都很高级,那么这个时候就要会出现同个CPU绑定多个中断号了。

设置中断号绑核需要将绑定CPU的信息设置到对应中断号上,如下

echo 00000001 > /proc/irq/46/smp_affinity

这表示将网卡中断号46绑定到CPU0上。
其中,smp_affinity变量用位方式表示CPU序号,即

00000001 -----> 对应CPU0
00000002 -----> 对应CPU1
00000004 -----> 对应CPU2
00000008 -----> 对应CPU3
00000010 -----> 对应CPU4
....

说明:如果希望多个CPU参与中断处理的话,可以使用类似下面的语法:
echo 3,5 > /proc/irq/45/smp_affinity_list
echo 0-7 > /proc/irq/45/smp_affinity_list
坏消息是对单队列网卡而言,「smp_affinity」和「smp_affinity_list」配置多CPU无效。


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【操作系统】进程管理——进程控制和进程通信(个人笔记)

学习日期:2024.6.30 内容摘要:进程控制的概念,进程控制相关的“原语”,进程通信 进程控制 原语 进程控制用“原语”实现。原语是一种特殊的程序,它的执行具有原子性,也就是说,这段程序的执行…

计算机网络原理及应用

第一章 计算机网络概述 【1】局域网 局域网是指在某一区域内由多台计算机互联而成的计算机通信网络。 【1】互通 两个网络之间可以交换数据。 第二章 计算机网络的体系结构 【1】语义 何时发出何种控制信息,完成何种动作以及做出何种响应。 【2】简述网络协…

【Linux】性能分析器 perf 详解(一):简介、安装、stat命令演示

1、简介 perf 是由 Linux 官方提供的系统性能分析工具 。它包含两部分: perf_events ,Linux 内核中的一个子系统perf 命令,用户空间的应用程序内核子系统 perf_events 提供了性能计数器(hardware performance counters)和性能事件的支持,它以事件驱动型的方式工作,通过…

DarkGPT:基于GPT-4-200k设计的人工智能OSINT助手

关于DarkGPT DarkGPT是一款功能强大的人工智能安全助手,该工具基于GPT-4-200k设计并实现其功能,可以帮助广大研究人员针对泄露数据库进行安全分析和数据查询相关的OSINT操作。 工具要求 openai1.13.3 requests python-dotenv pydantic1.10.12 工具安装 …

【机器学习】在【Pycharm】中的应用:【线性回归模型】进行【房价预测】

专栏:机器学习笔记 pycharm专业版免费激活教程见资源,私信我给你发 python相关库的安装:pandas,numpy,matplotlib,statsmodels 1. 引言 线性回归(Linear Regression)是一种常见的统计方法和机器学习算法&a…

miniconda 弹出黑窗

etc\conda\activate.d 和 envs 中不同环境中的 etc\conda\activated.d,只保留下图中的三个文件即可。

Facebook的投流技巧有哪些?

相信大家都知道Facebook拥有着巨大的用户群体和高转化率,在国外社交推广中的影响不言而喻。但随着Facebook广告的竞争越来越激烈,在Facebook广告上获得高投资回报率也变得越来越困难。IPIDEA代理IP今天就教大家如何在Facebook上投放广告的技巧&#xff0…

p2p、分布式,区块链笔记:试用ZeroTier组网

ZeroTier 是一种用于创建和管理虚拟局域网(Virtual Local Area Network,VLAN)的软件定义网络(SDN)解决方案。它可以通过互联网将多个设备安全地连接在一起,就像它们在同一个本地网络上一样。主要开发语言为…

zfile文件共享系统使用

1.简介 zfile是一款基于java开源的文件共享软件,有两种部署(jar包和war包),非常适合广大的Java开发人员使用(当然其他人员也可使用),或者你也可以称它为网盘,可以在Windows、MacOS、Linux上部署…

【操作系统期末速成】 EP01 | 学习笔记(基于五道口一只鸭)

文章目录 一、前言🚀🚀🚀二、正文:☀️☀️☀️1.1 考点一:操作系统的概率及特征 三、总结:🍓🍓🍓 一、前言🚀🚀🚀 ☀️ 回报不在行动…

javaSE知识点整理总结(下)、MySQL数据库

目录 一、异常 1.常见异常类型 2.异常体系结构 3.异常处理 (1)finally (2)throws 二、JDBC 1.JDBC搭建 2.执行SQL语句两种方法 三、MySQL数据库 1.ddl 2.dml 3.dql (1)字符函数 (…

Unidbg调用-补环境V3-Hook

结合IDA和unidbg,可以在so的执行过程进行Hook,这样可以让我们了解并分析具体的执行步骤。 应用场景:基于unidbg调试执行步骤 或 还原算法(以Hookzz为例)。 1.大姨妈 1.1 0x1DA0 public void hook1() {

Unity之自定义Text组件默认属性值

内容将会持续更新,有错误的地方欢迎指正,谢谢! Unity之自定义Text组件默认属性值 TechX 坚持将创新的科技带给世界! 拥有更好的学习体验 —— 不断努力,不断进步,不断探索 TechX —— 心探索、心进取!…

48 - 按日期分组销售产品(高频 SQL 50 题基础版)

48 - 按日期分组销售产品 -- group_concat 分组拼接selectsell_date,count(distinct product) num_sold,group_concat(distinct product order by product separator ,) products fromActivities group bysell_date;

统计是一门艺术(参数假设检验)

1.参数假设检验 在总体分布已知的情况下,对分布中未知参数的检验。 (1)相关基本概念 零假设/原假设与对立假设/备择假设: 任务:根据样本作出是否接受H0 复合假设与简单假设: 否定域/拒绝域与接受域&…

中霖教育:中级会计师备考误区你中招了吗?

【中霖教育好吗】【中霖教育口碑】 中级会计师考试难度并没有大家想象的那么大,只要掌握正确的备考方法就可以。在准备过程中,部分考生往往会陷入一些备考误区,进而影响复习效率。以下误区看你中招了吗: 一、过度追求数量而非质…

rocketmq简易版搭建

今天真是搭了本人六七个钟,太难了 首先是魔法大战镜像,这波大败而归,连上了,可惜没氪金,永远是没拉完就超时,魔法质量不行,等上班赚点米再改良一下魔法类别,那还得继续linux搭建 1…

ComfyUI高清放大的四种方式(工作流附件在最后)

方式一:Latent放大工作流 1.工作流截图 方式二:ESRGAN(传统模型)放大工作流 方式三:算法放大(后期处理)工作流 方式四:Ultimate SD Upscale工作流 这个方式的优势是对于显存底的用…

49 - 列出指定时间段内所有的下单产品(高频 SQL 50 题基础版)

49 - 列出指定时间段内所有的下单产品 -- 指定2020年2月的方法 -- (1) order_date between 2020-02-01 and 2020-02-29 -- (2) order_date like 2020-02% -- (3) DATE_FORMAT(order_date, "%Y-%m") "2020-02" -- (4) LEFT(order_date, 7) 或 subst…

从零开始三天学会微信小程序开发(三)

看到不少入门的小程序开发者不断的问重复性的问题,我们从实战角度开发了这个课程,希望能够帮助大家了解小程序开发。 课程分三天: 第一天:微信小程序开发入门第二天:给小程序接入云端数据第三天:完善我的…