Chapter 36. Configuring ethtool coalesce settings

Using interrupt coalescing, the system collects network packets and generates a single interrupt for multiple packets. This increases the amount of data sent to the kernel with one hardware interrupt, which reduces the interrupt load, and maximizes the throughput.

36.1. Coalesce settings supported by NetworkManager

You can set the following ethtool coalesce settings using NetworkManager:

  • 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

36.2. Configuring an ethtool coalesce settings by using nmcli

You can use NetworkManager to set ethtool coalesce settings in connection profiles.

Procedure

  1. For example, to set the maximum number of received packets to delay to 128 in the enp1s0 connection profile, enter:

    # nmcli connection modify enp1s0 ethtool.coalesce-rx-frames 128
  2. To remove a coalesce setting, set it to a null value. For example, to remove the ethtool.coalesce-rx-frames setting, enter:

    # nmcli connection modify enp1s0 ethtool.coalesce-rx-frames ""
  3. To reactivate the network profile:

    # nmcli connection up enp1s0

Verification

  1. Use the ethtool -c command to display the current offload features of a network device:

    # ethtool -c network_device

36.3. Configuring an ethtool coalesce settings by using the network RHEL System Role

You can use the network RHEL System Role to configure ethtool coalesce settings of a NetworkManager connection.

Important

When you run a play that uses the network RHEL System Role, the system role overrides an existing connection profile with the same name if the value of settings does not match the ones specified in the play. Therefore, always specify the whole configuration of the network connection profile in the play, even if, for example the IP configuration, already exists. Otherwise the role resets these values to their defaults.

Perform this procedure on the Ansible control node.

Prerequisites

  • You have prepared the control node and the managed nodes
  • You are logged in to the control node as a user who can run playbooks on the managed nodes.
  • The account you use to connect to the managed nodes has sudo permissions on them.
  • The managed nodes or groups of managed nodes on which you want to run this playbook are listed in the Ansible inventory file.

Procedure

  1. Create a playbook file, for example ~/configure-ethernet-device-with-ethtoolcoalesce-settings.yml, with the following content:

    ---
    - name: Configure the network
      hosts: managed-node-01.example.com
      tasks:
      - name: Configure an Ethernet connection with ethtool coalesce settings
        include_role:
          name: rhel-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

    Depending on whether it already exists, this playbook creates or updates the enp1s0 connection profile with the following settings:

    • A static IPv4 address - 198.51.100.20 with a /24 subnet mask
    • A static IPv6 address - 2001:db8:1::1 with a /64 subnet mask
    • An IPv4 default gateway - 198.51.100.254
    • An IPv6 default gateway - 2001:db8:1::fffe
    • An IPv4 DNS server - 198.51.100.200
    • An IPv6 DNS server - 2001:db8:1::ffbb
    • A DNS search domain - example.com
    • ethtool coalesce settings:

      • RX frames: 128
      • TX frames: 128
  2. Run the playbook:

    # ansible-playbook ~/configure-ethernet-device-with-ethtoolcoalesce-settings.yml

Additional resources

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md file