Red Hat Training

A Red Hat training course is available for RHEL 8

第 34 章 配置 ethtool coalesce 设置

使用中断的并发,系统会收集网络数据包并为多个数据包生成一个中断。这会增加向内核发送的一个硬件中断的数据量,这可减少中断的负载,并最大程度提高吞吐量。

本节提供不同的选项来设置 ethtool coalesce 设置。

34.1. NetworkManager 支持的 coalesce 设置

您可以使用 NetworkManager 设置以下 ethtool coalesce 设置:

  • coalesce-adaptive-rx
  • coalesce-adaptive-tx
  • coalesce-pkt-rate-high
  • coalesce-pkt-rate-low
  • coalesce-rx-frames
  • coalesce-rx-frames-high
  • coalesce-rx-frames-irq
  • coalesce-rx-frames-low
  • coalesce-rx-usecs
  • coalesce-rx-usecs-high
  • coalesce-rx-usecs-irq
  • coalesce-rx-usecs-low
  • coalesce-sample-interval
  • coalesce-stats-block-usecs
  • coalesce-tx-frames
  • coalesce-tx-frames-high
  • coalesce-tx-frames-irq
  • coalesce-tx-frames-low
  • coalesce-tx-usecs
  • coalesce-tx-usecs-high
  • coalesce-tx-usecs-irq
  • coalesce-tx-usecs-low

34.2. 使用 NetworkManager 配置 ethtool coalesce 设置

本节论述了如何使用 NetworkManager 设置 ethtool 组合设置,以及如何从 NetworkManager 连接配置集中删除设置。

流程

  1. 例如:要设置最大接收的数据包数量来延迟到 enp1s0 连接配置集中的 128,请输入:

    # nmcli connection modify enp1s0 ethtool.coalesce-rx-frames 128
  2. 要删除 coalesce 设置,将设置设为 ignore。例如,要删除 ethtool.coalesce-rx-frames 设置,请输入:

    # nmcli connection modify enp1s0 ethtool.coalesce-rx-frames ignore
  3. 重新激活网络配置集:

    # nmcli connection up enp1s0

验证步骤

  1. 使用 ethtool -c 命令显示网络设备的当前卸载功能:

    # ethtool -c network_device

其它资源

34.3. 使用系统角色配置 ethtool coalesce 设置

您可以使用 networking RHEL 系统角色配置网络管理器连接的 ethtool 并发设置。

重要

当您运行使用 networking RHEL 系统角色的 play 时,如果设置与 play 中指定的设置不匹配,则系统角色会覆盖具有相同名称的现有连接配置集。因此,在 play 中总是指定网络连接配置集的完整配置,即使已经存在(如 IP 配置)。否则,角色会将这些值重置为默认值。

具体来说,该流程会使用以下设置创建或更新 enp1s0 连接配置集:

  • 静态 IPv4 地址 - 198.51.100.20,子网掩码为 /24
  • 静态 IPv6 地址 - 2001:db8:1::1,子网掩码为 /64
  • IPv4 默认网关 - 198.51.100.254
  • IPv6 默认网关 - 2001:db8:1::fffe
  • IPv4 DNS 服务器 - 198.51.100.200
  • IPv6 DNS 服务器 - 2001:db8:1::ffbb
  • DNS 搜索域 - example.com
  • ethtool coalesce 设置:

    • RX 帧: 128
    • TX 帧: 128

先决条件

  • 在控制节点上安装 ansiblerhel-system-roles 软件包。
  • 如果您运行 playbook 时使用了与 root 用户不同的远程用户,则此用户在受管节点上具有适当的 sudo 权限。

流程

  1. 如果 playbook 要针对其执行的主机还没有在清单中,请将此主机的 IP 或名称添加到 /etc/ansible/hosts Ansible 清单文件中:

    node.example.com
  2. 使用以下内容创建 ~/configure-ethernet-device-with-ethtoolcoalesce-settings.yml playbook:

    ---
    - name: Configure an Ethernet connection with ethtool coalesce settings
      hosts: node.example.com
      become: true
      tasks:
      - include_role:
          name: linux-system-roles.network
    
        vars:
          network_connections:
            - name: enp1s0
              type: ethernet
              autoconnect: yes
              ip:
                address:
                  - 198.51.100.20/24
                  - 2001:db8:1::1/64
                gateway4: 198.51.100.254
                gateway6: 2001:db8:1::fffe
                dns:
                  - 198.51.100.200
                  - 2001:db8:1::ffbb
                dns_search:
                  - example.com
              ethtool:
                coalesce:
                  rx_frames: 128
                  tx_frames: 128
              state: up
  3. 运行 playbook:

    • root 用户身份连接到受管主机,输入:

      # ansible-playbook -u root ~/configure-ethernet-device-with-ethtoolcoalesce-settings.yml
    • 以用户身份连接到受管主机,请输入:

      # ansible-playbook -u user_name --ask-become-pass ~/configure-ethernet-device-with-ethtoolcoalesce-settings.yml

      --ask-become-pass 选项确定 ansible-playbook 命令提示输入 -u user_name 选项中定义的用户 sudo 密码。

    如果没有指定 -u user_name 选项,请以当前登录到控制节点的用户 ansible-playbook 连接到受管主机。

其它资源

  • 如需 ethtool 功能的完整列表,以及 network_connections 中使用的参数详情,以及 network 系统角色的附加信息,请参阅 /usr/share/ansible/roles/rhel-system-roles.network/README.md 文件。
  • 有关 ansible-playbook 命令的详情,请参考 ansible-playbook(1) man page。