31.12. 调整中断合并设置


中断合并是一种减少网卡产生的中断数量的机制。通常,较少的中断可能会提高网络的延迟和整体性能。

调整中断合并设置涉及调整控制的参数:

  • 合并成一个中断的数据包的数量。
  • 产生中断前的延迟。
重要

最佳合并设置取决于使用的特定网络条件和硬件。因此,可能需要进行一些尝试,来找到最适合您的环境和需要的设置。

31.12.1. 为延迟或吞吐量敏感服务优化 RHEL

合并调优的目标是最小化给定工作负载所需的中断的数量。在高吞吐量情况下,目标是尽可能有少的中断,同时保持高数据率。在低延迟情况下,可以使用更多的中断来快速处理流量。

您可以调整网卡上的设置,以增加或减少组合成一个中断的数据包数。因此,您可以提高流量的吞吐量或延迟。

流程

  1. 识别遇到瓶颈的网络接口:

    # ethtool -S enp1s0
    NIC statistics:
         rx_packets: 1234
         tx_packets: 5678
         rx_bytes: 12345678
         tx_bytes: 87654321
         rx_errors: 0
         tx_errors: 0
         rx_missed: 0
         tx_dropped: 0
         coalesced_pkts: 0
         coalesced_events: 0
         coalesced_aborts: 0

    识别名称中包含"drop"、"discard"或"error"的数据包数。这些特定统计测量网络接口卡(NIC)数据包缓冲区的实际数据包丢失,这可能是由 NIC 合并造成的。

  2. 监控您在上一步中识别的数据包数的值。

    将它们与网络的预期值进行比较,以确定任何特定接口是否遇到瓶颈。网络瓶颈的一些常见迹象包括:

    • 网络接口上有很多错误
    • 高数据包丢失
    • 网络接口使用率过高

      注意

      在识别网络瓶颈时,其他重要因素是 CPU 使用率、内存使用率和磁盘 I/O。

  3. 查看当前的合并设置:

    # ethtool enp1s0
    Settings for enp1s0:
            Supported ports: [ TP ]
            Supported link modes:   10baseT/Half 10baseT/Full
                                    100baseT/Half 100baseT/Full
                                    1000baseT/Full
            Supported pause frame use: No
            Supports auto-negotiation: Yes
            Advertised link modes:  10baseT/Half 10baseT/Full
                                    100baseT/Half 100baseT/Full
                                    1000baseT/Full
            Advertised pause frame use: No
            Advertised auto-negotiation: Yes
            Speed: 1000Mb/s
            Duplex: Full
            Port: Twisted Pair
            PHYAD: 0
            Transceiver: internal
            Auto-negotiation: on
            MDI-X: Unknown
            Supports Wake-on: g
            Wake-on: g
            Current message level: 0x00000033 (51)
                                   drv probe link
            Link detected: yes

    在此输出中,监控 SpeedDuplex 字段。这些字段显示有关网络接口操作的信息,以及它是否以预期的值运行。

  4. 检查当前的中断合并设置:

    # ethtool -c enp1s0
    Coalesce parameters for enp1s0:
            Adaptive RX: off
            Adaptive TX: off
            RX usecs: 100
            RX frames: 8
            RX usecs irq: 100
            RX frames irq: 8
            TX usecs: 100
            TX frames: 8
            TX usecs irq: 100
            TX frames irq: 8
    • usecs 值指的是接收方或传输方在产生中断前等待的微秒数。
    • frames 值指的是接收方或传输方在产生中断前等待的帧数。
    • irq 值用于在网络接口已经处理中断时配置中断调节。

      注意

      不是所有网络接口卡都支持报告和更改示例输出中的所有值。

    • Adaptive RX/TX 值表示自适应中断合并机制,它动态调整中断合并设置。根据数据包条件,当启用 Adaptive RX/TX 启用时,NIC 驱动程序会自动计算合并值(每个 NIC 驱动程序的算法不同)。
  5. 根据需要修改合并设置。例如:

    • ethtool.coalesce-adaptive-rx 被禁用时,请配置 ethtool.coalesce-rx-usecs ,来将 RX 数据包的产生中断前的延迟配置为 100 微秒:

      # nmcli connection modify enp1s0 ethtool.coalesce-rx-usecs 100
    • 启用 ethtool.coalesce-adaptive-rx,同时 ethtool.coalesce-rx-usecs 设为其默认值:

      # nmcli connection modify enp1s0 ethtool.coalesce-adaptive-rx on

      修改 Adaptive-RX 设置,如下所示:

      • 关注低延迟(低于 50us)的用户不应启用 Adaptive-RX
      • 关注吞吐量的用户可能启用 Adaptive-RX,而没有伤害。如果他们不希望使用自适应中断合并机制,他们可以尝试对 ethtool.coalesce-rx-usecs 设置大值,如 100us 或 250us 。
      • 在出现问题前,不清楚自己需求的用户不应修改此设置。
  6. 重新激活连接:

    # nmcli connection up enp1s0

验证

  • 监控网络性能并检查丢弃的数据包:

    # ethtool -S enp1s0
    NIC statistics:
         rx_packets: 1234
         tx_packets: 5678
         rx_bytes: 12345678
         tx_bytes: 87654321
         rx_errors: 0
         tx_errors: 0
         rx_missed: 0
         tx_dropped: 0
         coalesced_pkts: 12
         coalesced_events: 34
         coalesced_aborts: 56
    ...

    rx_errorsrx_droppedtx_errorstx_dropped 字段的值应该为 0 或接近 0(最多几百,取决于网络流量和系统资源)。这些字段中的高值表示网络问题。您的计数可以有不同的名称。仔细监控其名称中包含"drop"、"discard"或"error"的数据包计数。

    rx_packetstx_packetsrx_bytestx_bytes 的值应该随着时间而增加。如果值没有增加,则可能会有网络问题。数据包计数可以有不同的名称,具体取决于您的 NIC 驱动程序。

    重要

    ethtool 命令输出可能会因使用的 NIC 和驱动程序而异。

    专注于非常低延迟的用户出于监控目的,可以使用应用程序级指标或内核数据包时间戳 API 。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.