位置: 编程技术 - 正文

Linux多队列网卡的硬件的实现详解(linux 多网卡配置)

编辑:rootadmin

推荐整理分享Linux多队列网卡的硬件的实现详解(linux 多网卡配置),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:linux多网卡网络配置ip地址,linux多网卡网络配置ip地址,linux 网卡队列,linux 多网卡配置,linux 多网卡配置,linux 多网卡配置,linux 多网卡配置,linux多网卡网络配置ip地址,内容如对您有帮助,希望把文章链接给更多的朋友!

多队列网卡是一种技术,最初是用来解决网络IO QoS (quality of service)问题的,后来随着网络IO的带宽的不断提升,单核CPU不能完全处满足网卡的需求,通过多队列网卡驱动的支持,将各个队列通过中断绑定到不同的核上,以满足网卡的需求。

常见的有Intel的、,Boardcom的等,下面以公司的服务器使用较多的Intel 网卡为例,分析一下多队列网卡的硬件的实现以及linux内核软件的支持。

1.多队列网卡硬件实现

图1.1是Intel 硬件逻辑图,有四个硬件队列。当收到报文时,通过hash包头的SIP、Sport、DIP、Dport四元组,将一条流总是收到相同的队列。同时触发与该队列绑定的中断。

图1.1 硬件逻辑图

2. 2.6.以前网卡驱动实现

kernel从2.6.之前不支持多队列特性,一个网卡只能申请一个中断号,因此同一个时刻只有一个核在处理网卡收到的包。如图2.1,协议栈通过NAPI轮询收取各个硬件queue中的报文到图2.2的net_device数据结构中,通过QDisc队列将报文发送到网卡。

图2.1 2.6.之前内核协议栈

图2.2 2.6.之前net_device

3. 2.6.后网卡驱动实现

2.6.开始支持多队列特性,当网卡驱动加载时,通过获取的网卡型号,得到网卡的硬件queue的数量,并结合CPU核的数量,最终通过Sum=Min(网卡queue,CPU core)得出所要激活的网卡queue数量(Sum),并申请Sum个中断号,分配给激活的各个queue。

如图3.1,当某个queue收到报文时,触发相应的中断,收到中断的核,将该任务加入到协议栈负责收包的该核的NET_RX_SOFTIRQ队列中(NET_RX_SOFTIRQ在每个核上都有一个实例),在NET_RX_SOFTIRQ中,调用NAPI的收包接口,将报文收到CPU中如图3.2的有多个netdev_queue的net_device数据结构中。

这样,CPU的各个核可以并发的收包,就不会应为一个核不能满足需求,导致网络IO性能下降。

图3.1 2.6.之后内核协议栈

Linux多队列网卡的硬件的实现详解(linux 多网卡配置)

图3.2 2.6.之后net_device

4.中断绑定

当CPU可以平行收包时,就会出现不同的核收取了同一个queue的报文,这就会产生报文乱序的问题,解决方法是将一个queue的中断绑定到唯一的一个核上去,从而避免了乱序问题。同时如果网络流量大的时候,可以将软中断均匀的分散到各个核上,避免CPU成为瓶颈。

图4.1 /proc/interrupts

5.中断亲合纠正

一些多队列网卡驱动实现的不是太好,在初始化后会出现图4.1中同一个队列的tx、rx中断绑定到不同核上的问题,这样数据在core0与core1之间流动,导致核间数据交互加大,cache命中率降低,降低了效率。

图5.1 不合理中断绑定

linux network子系统的负责人David Miller提供了一个脚本,首先检索/proc/interrupts文件中的信息,按照图4.1中eth0-rx-0($VEC)中的VEC得出中断MASK,并将MASK

写入中断号对应的smp_affinity中。由于eth-rx-0与eth-tx-0的VEC相同,实现同一个queue的tx与rx中断绑定到一个核上,如图4.3所示。

图4.2 set_irq_affinity

图4.3 合理的中断绑定

set_irq_affinity脚本位于

lxde桌面美化怎么样?选择LXDE作为Linux桌面的八大理由 去年年底,升级到Fedora带来的新版本KDEPlasma,想必让很多人都不习惯吧,这也直接导致我很难完成预定的工作计划。我决定尝试其他Linux桌面环境有两

linux管道及重定向详解 在linux系统中,大多数命令很简单,很少出现复杂功能的命令,每个命令往往实现一个或者几个功能十分简单的功能,我们可以通过将多个简单的命令组

Linux chroot命令用法详解 chroot命令chroot命令用来在指定的根目录下运行指令。chroot,即changerootdirectory(更改root目录)。在linux系统中,系统默认的目录结构都是以/,即是以根(ro

标签: linux 多网卡配置

本文链接地址:https://www.jiuchutong.com/biancheng/361979.html 转载请保留说明!

上一篇:进程的内核栈是什么?浅谈Linux的进程内核栈(进程 内核栈)

下一篇:lxde桌面美化怎么样?选择LXDE作为Linux桌面的八大理由(桌面美化助手)

  • 纳税人期末存货怎么结转
  • 企业所得税汇算清缴退税怎么做账
  • 增值税发票丢失最新处理办法
  • 增值税申报表如何打印
  • 如何进行个人所得税认定
  • 资产减值损失包括应收账款减值损失吗
  • 个体户可以不开公户吗?打款到法人卡
  • 话费充值发票可以入账吗
  • 定额征收需要建账吗
  • 建筑行业一般纳税人增值税税率是多少
  • 个人独资企业的优缺点
  • 土地政策补贴
  • 建筑业工人工资保障
  • 可供出售金融资产会计处理
  • 预付装修费的会计分录
  • 企业所得税税前扣除和不扣除的区别
  • 银行变更印鉴多久生效
  • 工程预收账款的会计分录
  • 代扣代缴附加税怎么做账
  • 本月进项大于销项怎么做会计分录
  • 小型微利企业预缴所得税税率
  • 个人企业属于什么部门管理
  • 增值税缴纳地方怎么填
  • 进项发票和销项发票金额相同还需要交税金吗
  • 个税申报表在哪下载打印
  • 金税三期理解
  • 电子发票真伪查询
  • 个人社保部分工资计入哪个科目
  • 同业清算互联前置 骗局
  • 货物损失怎么处理
  • 产生个人所得税之后是不是不能公益性岗位
  • 初级备考计划表
  • 美团扣点怎么做凭证
  • 税金当月计提当月缴纳
  • 厂房租赁记账凭证
  • 跨年的工会经费怎么做分录
  • window11调节屏幕亮度
  • 电子发票上的电子税章如何才能自动生成
  • php curl_multi_init
  • 营改增后不动产发票
  • 编写守护进程
  • PHP:diskfreespace()的用法_Filesystem函数
  • 进出口企业税务怎可以查出问题
  • 企业支付宝要交税吗 要交多少钱
  • python怎么导出数据到excel
  • 上市公司股票转让收入
  • 织梦cms要钱吗
  • 公司购买绿植入什么科目
  • SQL Server 2016 CTP2.2安装配置方法图文教程
  • 应纳税所得额是净利润吗
  • 固定资产增加
  • 汇算清缴里的账户是什么
  • 以公司名义买500万的车省多少税
  • 残疾人就业保障金怎么计算
  • 加油票和过桥过路费怎么做账
  • 企业汇算清缴需要提供什么资料
  • 上期留抵税额怎么在账上提现
  • 网上打印的银行流水有公章吗
  • 主营业务收入和营业外收入的区别
  • 首次计提坏账准备应计入
  • 减免税怎么做会计分录
  • 生育津贴案件
  • 商业企业资产负债表
  • 触发器中instead of
  • ubuntu20.04怎么用
  • win8系统版本
  • xp系统设置局域网
  • centos7如何安装telnet
  • win7怎样安装adb工具
  • parseint函数功能
  • jquery的点击事件怎么写
  • 编写程序实现将两个文本文件的内容合并
  • unity射击游戏毕业设计
  • js设置点击效果
  • jquery的validate前端表单验证
  • 国家辽宁税务总局
  • 南京国民政府统治和开辟革命新道路
  • 获得感幸福感还有什么
  • 回迁房有没有装电梯的
  • 内蒙民生认证系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设