• 多队列网卡介绍


    1)   简介

    多队列网卡是指一个网卡上有多个队列,内核会给每个队列注册一个中断号,具体可以在/proc/interrupts | grep {网卡} 查看,其中第一列是中断号,最后一列是网卡队列信息。CPU和中断号有亲和性,一般网卡中断和一个CPU绑定,绑定关系可以在/proc/irq/{中断号}/smp_affinity_list查看。网卡收到消息后会根据源IP+PORT和目标IP+PORT进行hash,然后分配指定队列(有些网卡有自己的hash规则)。这里补充一点,之前想到个问题,网卡为什么知道端口号。问了大佬才知道现在网卡是可以解析到传输层协议的。

    2)   疑惑

    网卡与内存数据传输有两种方式,一种是DMA,一种是IRQ。DMA是指有个DMAC(DMA控制器)负责将网卡数据放到指定buffer上,然后CPU在空闲时去处理这部分信息。IRQ是指网卡通过中断提醒CPU可操作,然后CPU进行读写。

    这里我有疑问,网上有人说网卡上的队列就是所谓的DMA的缓冲区,那么就是说IRQ和DMA是同时应用在网卡上的。但我又看到一种说法是, DMA是不需要中断的,一般是CPU有空就去处理。具体是哪种我也不清楚。

    在测试时,通过查询CPU处理中断的次数,可以发现中断次数和发包数不一致,所以应该是一次中断处理了多个包。

  • 相关阅读:
    Kettle使用1
    mac电脑配置windows AD 苹果电脑 加入 域控
    WINDOWS2016故障转移群集
    眼见未必为实如何避免VMware平台ESXi主机CPU使用率的“坑”?
    基于EXT构建GIS页面
    集合论杂记——关系的性质
    gcc各等级优化的性质
    命题逻辑趣味拾遗
    一些Markdown扩展语法
    C++ 字面值常量的类型
  • 原文地址:https://www.cnblogs.com/scaugsh/p/10256360.html
Copyright © 2020-2023  润新知