検索

31.12. 割り込み結合設定のチューニング

download PDF

割り込み結合は、ネットワークカードによって生成される割り込みの数を減らすためのメカニズムです。一般に、割り込みが少なくなると、ネットワークのレイテンシーと全体的なパフォーマンスが向上します。

割り込み結合設定のチューニングには、以下を制御するパラメーターの調整が含まれます。

  • 1 つの割り込みに結合されるパケットの数。
  • 割り込みを生成するまでの遅延。
重要

最適な結合設定は、特定のネットワーク条件と使用しているハードウェアによって異なります。したがって、環境とニーズに最適な設定を見つけるには、何度か試すことが必要な場合があります。

31.12.1. 遅延またはスループットの扱いに注意が必要なサービス向けに RHEL を最適化する

結合チューニングの目標は、特定のワークロードに必要な割り込みの数を最小限に抑えることです。高スループットの状況では、高いデータレートを維持しながら、割り込みをできるだけ少なくすることが目標となります。待ち時間が短い状況では、より多くの割り込みを使用してトラフィックを迅速に処理できます。

ネットワークカードの設定を調整して、1 つの割り込みに結合されるパケットの数を増減できます。その結果、トラフィックのスループットまたは遅延を向上させることができます。

手順

  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

    この出力では、Speed フィールドおよび Duplex フィールドを監視します。これらのフィールドには、ネットワークインターフェイスの操作に関する情報と、それが期待値で実行されているかどうかが表示されます。

  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 が無効になっている間に、RX パケットの割り込みを生成するまでの遅延を 100 マイクロ秒に設定するように ethtool.coalesce-rx-usecs を設定します。

      # nmcli connection modify enp1s0 ethtool.coalesce-rx-usecs 100
    • ethtool.coalesce-rx-usecs がデフォルト値に設定されている間、ethtool.coalesce-adaptive-rx を有効にします。

      # 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_errors、および tx_dropped フィールドの値は 0 またはそれに近い値 (ネットワークトラフィックとシステムリソースに応じて最大数百まで) である必要があります。これらのフィールドの値が高い場合は、ネットワークに問題があることを示します。カウンターには異なる名前を付けることができます。名前に "drop"、"discard"、または "error" を含むパケットカウンターを注意深く監視します。

    rx_packetstx_packetsrx_bytes、および tx_bytes の値は時間の経過とともに増加します。値が増加しない場合は、ネットワークに問題がある可能性があります。パケットカウンターは、NIC ドライバーに応じて異なる名前を持つことができます。

    重要

    ethtool コマンドの出力は、使用している NIC とドライバーによって異なる場合があります。

    極めて低いレイテンシーを重視するユーザーは、監視目的でアプリケーションレベルのメトリクスまたはカーネルパケットタイムスタンプ API を使用できます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.