当前位置: 首页 > news >正文

windows网络适配器驱动开发-NetAdapterCx 接收端缩放(下)

第三部分:NetAdapterCx 接收端缩放(RSS)—— 同步机制、异构 CPU 支持与调试

八、SynchronizeSetIndirectionEntries 与同步机制

NET_ADAPTER_RECEIVE_SCALING_CAPABILITIES 结构中的 SynchronizeSetIndirectionEntries 成员允许客户端驱动程序控制间接表条目移动操作的同步行为。

当 SynchronizeSetIndirectionEntries 设置为 TRUE 时,NetAdapterCx 保证在调用 EvtNetAdapterReceiveScalingSetIndirectionEntries 期间,不会并发调用其他 RSS 回调函数。这简化了驱动程序在更新硬件间接表时的同步逻辑,但可能会延长回调的执行时间。

当设置为 FALSE 时,驱动程序需要自行处理可能的并发访问。驱动程序开发者应根据硬件能力选择适当的设置:

  • - 如果硬件支持原子性地更新多个间接表条目,建议将 SynchronizeSetIndirectionEntries 设置为 FALSE 以获得更好的性能。
  • - 如果硬件每次只能处理一个条目的更新,或者更新操作需要较长时间,建议设置为 TRUE 以确保操作的正确性。

九、异构 CPU 支持

重要提示:异构 CPU 支持是预发行功能,可能在商业发布之前进行大幅修改。

异构 CPU 系统使用具有不同时钟速度和功能的多种核心类型。与每个核心彼此相同的同质多处理器系统相比,异构 CPU 系统可以更好地适应动态计算负载并使用更少的能源。

从 WDK 预览版 25197 开始,NetAdapterCx 通过有效利用各种核心类型提供异构 CPU 系统支持。在 RSS 运行时,系统会根据客户端驱动程序接收的流量工作负载决定要使用的处理器。当接收的流量较少时,更小、更高效的核心可以处理流量。当流量增多时,需要更大且性能更高的核心来持续监测收到的数据包。

若要选择加入异构系统支持,系统管理员必须将 *RSSProfile 标准化 INF 关键字设置为 NdisRssProfileBalanced。这是异构系统的默认配置文件。若要允许系统确定要使用的最佳核心,不能设置 RSS 高级关键字。

异构系统也支持其他 RSS 配置文件。如果要控制系统上的 RSS 基处理器编号和 RSS 最大处理器编号等高级设置,则应使用不同的 RSS 配置文件。

还可以在同质 CPU 系统上使用 NdisRssProfileBalanced。在这种情况下,系统决定要用于 RSS 的处理器。

十、RSSv2 支持

在 NDIS 6.80 中,RSS 已升级到 RSS 版本 2(RSSv2)。RSSv2 通过提供按 VPort 分布来改进 RSS。

RSSv2 的主要改进包括:

  • - 支持每个 VPort 独立配置 RSS 参数
  • - 更灵活的间接表管理
  • - 改进的处理器负载均衡能力

对于 NetAdapterCx 客户端驱动程序,RSSv2 的支持通过 NET_ADAPTER_RECEIVE_SCALING_CAPABILITIES 结构中的相应标志进行广告。

十一、驱动验证与调试

NetAdapterCx 提供了内置的驱动程序验证支持,帮助开发者确保 RSS 实现的正确性。

在使用驱动程序验证程序进行测试时,如果客户端驱动程序不遵循 RSS 相关的规则(如修改只读字段、在不正确的时机修改索引等),驱动程序验证程序会报告冲突并在测试设备上触发 bug 检查。

建议的调试和验证方法:

  • 1. 在开发阶段启用驱动程序验证程序的 RSS 相关检查。
  • 2. 测试各种电源状态转换场景,确保 RSS 在 D0 状态正确启用,在非 D0 状态正确禁用。
  • 3. 测试间接表更新场景,验证在系统负载变化时间接表条目的正确移动。
  • 4. 对支持异构 CPU 的系统,验证在不同流量负载下 RSS 是否正确选择不同类型的核心。

十二、常见问题与注意事项

1. 间接表管理:驱动程序不应在启用或禁用 RSS 时清除或重置间接表。框架负责设置初始间接表状态。

2. 回调执行上下文:所有 RSS 回调都在 PASSIVE_LEVEL IRQL 执行,驱动程序可以在回调中执行需要等待的操作。

3. 电源管理:RSS 回调只在驱动程序处于 D0 电源状态时才会被调用。驱动程序不需要在非 D0 状态处理 RSS 事件。

4. 多队列支持:RSS 要求 NIC 支持多个接收队列。间接表中的每个条目映射到一个接收队列,每个接收队列通常对应一个中断向量和一个 CPU 核心。

5. 哈希类型和协议类型:驱动程序在 EvtNetAdapterReceiveScalingEnable 回调中接收 HashType 和 ProtocolType 参数,需要根据这些参数配置硬件哈希引擎。

6. 性能考虑:间接表的大小影响 RSS 的负载均衡粒度。较大的间接表(如 512 个条目)允许更精细的负载分配,但会增加硬件查找的开销。

http://www.jsqmd.com/news/1185410/

相关文章:

  • 终极指南:快速检测微信单向好友的完整解决方案
  • 雅典官方更换表蒙价格查询|网点地址与电话权威信息公告(2026年7月最新) - 亨得利官方服务中心
  • 扩散模型、UNet、时间序列与SAM模块组合实践指南
  • 多设备多档位性能基线怎么建:低端机、中端机、高帧机的风险分级
  • Windows Server 2012 R2上部署IIS 8.5:从零到生产环境的完整指南
  • 从ERROR 1045到安全登录:MySQL 8.0 root密码重置的完整避坑指南
  • Chrome 插件离线安装:3步解决“程序包无效”与 _metadata 报错
  • 模板驱动型文档自动化:从Word手工到流水线生产的底层逻辑
  • Unity敌人自动寻路
  • 基于PIC18F86J55与PAM8904的低功耗智能音频报警系统设计
  • 2026 年新消息:资溪靠谱的随车吊出租厂家有哪些,别急着找吊车,这笔钱你可能白花了 - 企业推荐官【认证官方】
  • 多语言机器翻译与本地化:AI模型在全球化交流中的桥梁作用
  • 高精度ADC系统设计:基于ADS127L11与PIC18F25K50的信号采集方案
  • Actus F8一键神器:鼠标连点与键盘自动化全攻略
  • C++ XML解析利器CMarkup:轻量级单文件库的流式导航实战
  • ct-cockpit开发者指南:如何基于现有框架进行二次开发的完整教程
  • 基于PyTorch与ResNet18的轻量级图像分类实战:从数据采集到模型部署
  • STM32G431KB与MAX11108A高精度ADC信号采集实战
  • 视频后期处理:音频降噪与弹幕去除的完整操作指南
  • 2026最新钦州本地漏水检测公司本地精选权威推荐:正规防水补漏公司优选口碑TOP5:卫生间/厨房/阳台/飘窗/地下室渗漏水维修师傅上门 - 即刻修防水
  • 温深仪供应商推荐 从售后响应和校准支持两个维度做筛选 - 品牌推荐大师
  • Android-EDLA XTS报告和日志分析
  • 2026年 废旧电缆回收厂家推荐排行榜:高价回收/环保拆解/专业资质公司深度解析与口碑之选! - 甄选服务推荐
  • 《刺客信条:黑旗》VBS一键启动虚拟机整合包部署指南
  • EA黄金量化策略:全天候自动交易,小白也能轻松上手
  • 感知空间优化与CFG-Zero*:流匹配模型少步高质量生成技术解析
  • Systemverilog中fork...join等线程的使用
  • 云原生安全爆火!2026企业攻防主战场:容器、K8s成漏洞重灾区
  • 格拉苏蒂官方更换原装表带价格查询|热线电话与门店地址权威信息公告(2026年7月最新) - 亨得利钟表维修中心
  • 亲身到店探访北京泰格豪雅官方售后服务中心|最新地址与24小时售后热线(2026年7月最新) - 亨得利官方服务中心