今回はネットワーク編としてやっておいた方がいい設定を記載します。
■SNPの無効化
■DNS動的更新のチェックOFF(複数セグメント)
SNPの無効化に関して
これは以前から話題になっていましたが、改めて復習します。
SNPとは「Scalable Networking Pack」のことで、TCP に関するネットワーク処理を、NIC およびドライバを利用して最適化するためのテクノロジー及びその実装の総称になります。当然のことながらSNPに対応したNICおよびドライバが必要となります。
またPackという単語からもわかるとおり、ネットワークの様々な機能を包括しています。具体的には次に紹介する3つの機能を指します。
1. Receive Side Scaling (RSS)
マルチCPUおよびマルチコアCPUを利用している場合、TCP の受信処理を複数のコアに分散するテクノロジーになります。そもそも、RSSが機能していない状態(通常のネットワーク通信)では、たとえマルチCPUであっても、TCPの受信処理は単一のコアで行われるので、特定のコアのみに処理が集中されるという課題がありました。
A. 対応NIC例
Realtek製NIC
2. TCP Chimney Offload
TCPに関するネットワーク処理をNICで行うことにより、コンピューターのCPUの負荷を軽減するテクノロジーになります。TCPチェックサムの確認と送信データのセグメンテーションについては、以前からTCP の連続的な状態を管理しない簡易的な機能として「TCP Task Offload」や「Large Send Offload」がありました。
3. Network Direct Memory Access (NetDMA)
ネットワークの受信データをネットワーク アダプターの受信バッファーからアプリケーションのバッファーへコピーする作業をCPU によって行うのではなく、チップセットを含むシステム全体が連携し、Direct Memory Access機能により行うためのテクノロジーになります。
- BIOSで有効であること。
- Intel I/O Acceleration Technology (I/OAT)をサポートしていること。具体的にはIntel 5000 シリーズチップセットなど(サーバー用)が該当するようです。
- NetDMAと一緒にTCP Chimney Offloadを使用することはできない。ハードウェアサポートおよび設定が両方とも有効になっていた場合はTCP Chimney Offloadが優先される。
そもそも論として、これらの技術が対象としているのは10Gbitネットワークで、1Gbitネットワークなどではあまり(ほとんど?)恩恵を受けられません。更に、これらがWindows Server 2008 R2ではデフォルトで有効になっていますが、不意なリセットの送出や、パケットレベルでの動作に起因して、パフォーマンスが逆に低下するなどの現象が発生しているようです。要するにまだ成熟されていない状態です。よって、明確に使用する意図がないのであれば、SNPは無効化する方が良いということになります。
確認方法
コマンドプロンプトにて次のコマンドを実行
netsh int tcp show global
アクティブ状態を照会しています... TCP グローバル パラメーター ---------------------------------------------- Receive-Side Scaling 状態 : enabled Chimney オフロード状態 : automatic NetDMA 状態 : enabled Direct Cache Acess (DCA) : disabled 受信ウィンドウ自動チューニング レベル : normal アドオン輻輳制御プロバイダー : none ECN 機能 : disabled RFC 1323 タイムスタンプ : disabled ** 上の autotuninglevel 設定は、少なくとも 1 つのプロファイルのローカルポリシー構成を 上書きするウィンドウ スケーリング ヒューリスティックの結果です
TCP Chimney Offload の automatic mode が有効になる要件は次の通り
- 10 GbE
- Round trip time (RTT) が 20 ミリ秒以下
- 該当の接続にて 130 KB 以上の通信が発生
TCP Chimney Offload がサポートされているかを確認するコマンド
netsh int tcp show chimneystats
Idx Supp Atmpt TMax PMax Olc FailureReason --- ---- ----- ---- ---- --- ------------ 10 いいえ -n/a- 0 0 0 -n/a- Idx - システムで使用されるインターフェイス (NIC) インデックス Supp - インターフェイス (NIC) は TCP Chimney オフロードをサポート Atmpt - システムが TCP 接続オフロードを試行 TMax - NIC によってアドバタイズされたオフロード容量 PMax - システムで観察されたオフロード容量 Olc - 現在オフロードされている接続の数 FailureReason - 前回接続のオフロードの試行に失敗した原因 詳細については、'netsh int tcp show chimneystats (Idx) ' を使用してください。
NetDMA機能のTCP/IP統計情報を確認するコマンド
netsh int tcp show netdmastats
TCP DMA 統計 --------------------------------------------------------- NetDMA を使用してコピーした合計バイト数 : 0 CPU を使用してコピーした合計バイト数 : 68206265 NetDMA コピーの合計エラー数 : 0</pre>
SNP無効化方法
Receive-Side Scaling(RSS)の無効化
netsh int tcp set global rss=disabled
TCP Chimney Offload の無効化
netsh int tcp set global chimney=disabled
Network Direct Memory Access(NetDMA)の無効化
netsh int tcp set global netdma=disabled
実はWindows7も同じ設定なので、同様にSNP無効化をした方がいいかもしれません。
DNS動的更新のチェックOFFに関して
デフォルトでネットワークのTCP/IP設定は
「この接続のアドレスをDNSに登録する」
にチェックが入っています。これは全てのNICに割り当てられたアドレスがDNSに登録されることになります。例えば、マルチセグメントのコンピューターの場合複数NICが存在しますが、DNSに登録してほしくないアドレスまで登録されることになります。よって、DNSに登録してほしくないアドレスが割り当てられているNICに対しては、明示的にこのチェックをはずす必要があります。