このステップでは、ネットワークオフロード機能の検査と変更方法を学びます。これらは、チェックサムの計算やデータのセグメンテーションなど、本来 CPU が処理するタスクをハードウェアに実行させる高度な NIC 機能です。これらのタスクをオフロードすることで、ネットワークパフォーマンスを向上させることができます。
まず、-k (または --show-features) フラグを使用して、インターフェイスの現在のオフロード設定を表示しましょう。
ethtool -k eth0
on と off の両方の機能のリストが表示されます。[fixed] というステータスは、その設定がユーザーによって変更できないことを意味します。
Features for eth0:
rx-checksumming: on [fixed]
tx-checksumming: on
tx-checksum-ipv4: off [fixed]
tx-checksum-ip-generic: on
tx-checksum-ipv6: off [fixed]
tx-checksum-fcoe-crc: off [fixed]
tx-checksum-sctp: off [fixed]
scatter-gather: on
tx-scatter-gather: on
tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: on
tx-tcp-segmentation: on
tx-tcp-ecn-segmentation: on
tx-tcp-mangleid-segmentation: off
tx-tcp6-segmentation: on
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off [fixed]
... (出力は長く、変動する可能性があります)
次に、これらの設定の 1 つを変更する練習をしましょう。TX チェックサムを一時的に無効にします。この操作には管理者権限が必要なため、sudo と -K (または --features) フラグを使用する必要があります。
sudo ethtool -K eth0 tx-checksumming off
コマンドは、行った変更を報告します。tx-checksumming を無効にすると、他の関連機能も自動的に無効になったことに注意してください。これは、一部の機能が他の機能に依存しているためです。
Actual changes:
tx-checksum-ip-generic: off
tx-tcp-segmentation: off [not requested]
tx-tcp-ecn-segmentation: off [not requested]
tx-tcp6-segmentation: off [not requested]
完全なリストで変更を確認するには、再度 ethtool -k eth0 を実行できます。
次に、デフォルトのパフォーマンス向上動作に戻すために、再度有効にしましょう。
sudo ethtool -K eth0 tx-checksumming on
ここでも、出力は実際に行われた変更を示しています。機能が on であることを要求しても、ハードウェアで固定されている場合は off のままになる場合があります。また、関連機能が自動的に再有効化されていることも示しています。
Actual changes:
tx-checksum-ipv4: off [requested on]
tx-checksum-ip-generic: on
tx-checksum-ipv6: off [requested on]
tx-tcp-segmentation: on [not requested]
tx-tcp-ecn-segmentation: on [not requested]
tx-tcp6-segmentation: on [not requested]
tx-checksum-fcoe-crc: off [requested on]
tx-checksum-sctp: off [requested on]
このステップを完了することで、ネットワークカードのハードウェアオフロード機能を検査および変更する方法を学び、機能の依存関係とハードウェアの制限が結果にどのように影響するかを確認しました。