befs_anneの日記

雰囲気でネットワークをやっている

RXアクセラレーション(というかNICオフロード)が悪さをすることがあるらしい

概要

NICが持つRXアクセラレーション系の機能が、通信のパフォーマンスに悪影響を与えるケースがあるらしい。

RX アクセレーション (GRO、LRO、TPA など) を持つ NIC が、パフォーマンスが悪い TCP の影響を受ける場合がある - Red Hat Customer Portal

https://kb.vmware.com/selfservice/search.do?cmd=displayKC&docType=kc&docTypeID=DT_KB_1_1&externalId=2090294

RXアクセラレーションとは

トラフィック受信時に発生するソフトウェア(CPU)処理を、ハードウェア(NIC)に肩代わり(オフロード)してもらっちゃおうという機能。「アクセラレーション」という言葉はよく出てくる(SSLアクセラレーションとか)けど、基本的にはハードウェア処理にすることを指すと思っておけばとりあえずよさそう。

LRO(Large Receive Offload)とは

セグメンテーションされたTCPパケットの構築をNICにやらせる。

Large receive offload - Wikipedia

GRO(Generic Receive Offload)とは

Red Hat Enterprise Linux 6 の低レベルネットワーク実装は、Generic Receive Offload (GRO) のサポートをその特徴の1つとして収納しています。 GRO システムは、CPU で実行されるプロセッシングの量を低減することにより来信ネットワーク接続のパフォーマンスを向上します。GRO は Large Receive Offload (LRO) システムと同じ技術を実装しますが、より広範囲のトランスポートレイヤープロトコルに適用できます。

解説だけ見ると、LROの上位互換に見える。

https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Release_Notes/networking.html#idp11696352

TX(送信)もあるでよ

TSO(TCP Segmentation Offload)やGSO(Generic Segmentation Offload)のように、TX(送信)オフロード機能も存在する。

TSO(TCP Segmentation Offload)の無効化 - Knowlege Database

オフロード系機能まとめ

Redhatのナレッジを見るのが話早そう。

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Performance_Tuning_Guide/network-nic-offloads.html

付き合い方

ネット上には送受信どちらにおいてもOFFにせよという記事が多い。

【CentOS7】オフロード機能まとめ – ZacoDesign

そんな中、以下のような情報もある。

uzy-exe.hateblo.jp

速さを追い求めるのでなければ、OFFが吉?