搜索

34.12. 调优中断合并设置

download PDF

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

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

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

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

34.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.