31.7. 加速 RFS

加速 RFS 通过添加硬件协助提高接收流评估 (RFS) 的速度。与 RFS 一样,数据包会根据占用数据包的应用程序的位置进行转发。

但是,与传统的 RFS 不同,数据包直接发送到消耗数据的线程到本地的 CPU:

  • 执行应用程序的 CPU
  • 或与该 CPU 在缓存层次结构中本地的 CPU

只有在满足以下条件时,加速 RFS 才可用:

  • NIC 必须支持加速 RFS。通过导出 ndo_rx_flow_steer() net_device 函数的卡支持加速 RFS。检查 NIC 的数据表以确保是否支持此功能。
  • 需要启用 ntuple 过滤。有关如何启用这些过滤器的详情,请参考启用过滤器

满足这些条件后,会根据传统 RFS 配置自动减少 CPU 到队列映射。也就是说,基于每个接收队列的驱动程序配置的 IRQ 等级,CPU 到队列映射将减少。有关启用传统 RFS 的更多信息,请参阅启用 Receive Flow Steering

31.7.1. 启用默认过滤器

需要启用 ntuple 过滤。使用 ethtool -k 命令启用 ntuple 过滤。

流程

  1. 显示 ntuple 过滤器的当前状态:

    # ethtool -k enp1s0 | grep ntuple-filters
    
    ntuple-filters: off
  2. 启用 ntuple 过滤:

    # ethtool -k enp1s0 ntuple on
注意

如果输出为 ntuple-filters: off [fixed],则会禁止 ntuple 过滤,您无法配置它:

# ethtool -k enp1s0 | grep ntuple-filters
ntuple-filters: off [fixed]

验证步骤

  • 确定是否启用了 ntuple 过滤器:

    # ethtool -k enp1s0 | grep ntuple-filters
    ntuple-filters: on

其他资源

  • ethtool(8) 手册页