• このエントリーをはてなブックマークに追加

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

  • このエントリーをはてなブックマークに追加

NIC

zaco muraです

CentOS7がリリースされてからずいぶん経ちますが、若干トラブルになったことがありましたので今回はCentOS7のオフロード機能について書きたいと思います。

オフロード機能とは

オフロード機能とは、ざっくり言うとCPUに負荷をかける処理をハードウェアでやってしまおうという機能です。CentOS7に限らずいろんなOSにはオフロード機能というものがありますが、今回はネットワーク部分について書きます。

背景

自分が運用しているシステムでトラブルがありました。原因はCentOS7のオフロード機能。TCPのパケットを勝手に結合して大きなパケットとして処理するという機能が働いていました。その結果、アプリケーションでは処理できないサイズとなってしまいエラー。。。という感じです。
結局そのオフロード機能をオフにすることでトラブルは解決したんですが、そもそもオフロード機能って何があるんだろうって思ったので調べました。

調べ方

ネットワーク周りのオフロード機能はNICの設定を見るethtoolで確認できます。

# ethtool -k eno0
Features for eno0:
rx-checksumming: on [fixed]
tx-checksumming: on
	tx-checksum-ipv4: off [fixed]
	tx-checksum-unneeded: off [fixed]
~~~~~~~~~~ 以下略

こんな感じ。

調査結果

調べ始めると、これに関する情報が全然出てこないことに気が付きました。。とりあえず自分で必要なところだけを調べようと思い、以下のような内容をまとめました。
(内容が正しい保証は無いので、商用システムなどに適用する場合は自己責任でお願いします)

ethtoolの表示 内容 CentOS5でのデフォルト値 CentOS7でのデフォルト値
rx-checksumming: 受信パケットのチェックサム計算 on on
tx-checksumming: 送信パケットのチェックサム計算 on on
tx-checksumming: 送信パケットのチェックサム計算 on on
tx-checksum-ipv4: ipv4ヘッダのチェックサム計算 なし(tx-checksummingによりONになっていると思われる) on
tx-checksum-ipv6: ipv6ヘッダのチェックサム計算 なし(tx-checksummingによりONになっていると思われる) on
tcp-segmentation-offload: TCPのデータをMTUサイズに分割する処理 on on
generic-segmentation-offload: パケット送信全般で大きなサイズのデータをMTUサイズに分割する処理
(tcp-segmentation-offloadと同じ働き?)
off on
generic-receive-offload: パケット受信全般(TCPも含む)でパケットを結合する処理 off on

ということで、今回のトラブルの原因はgeneric-receive-offload(GRO)がONになっていたことでした。

オフロード機能の設定方針

自分が調べたところだと、オフロード機能はシステム運用者の意図しない動作をすることが多い為あまり設定は推奨されていない感じがしました。
ただそもそもの目的である性能向上にはある程度効果があるようなので、基本的には使わない、使う場合には十分に検証をした上でという方針が無難なのかなー。と思いました。

CentOS7はやっぱり難しいですねー。

スポンサーリンク
Sponsords Link
  • このエントリーをはてなブックマークに追加

ZacoDesign

スポンサーリンク
Sponsords Link