Windows ファイルサーバー関連のチューニングポイント一覧
先日、VDI を導入する際に最低限実施しておきたい SMB/CIFS 周りの最適化設定 をまとめました。
"最低限" と書いた通り、Windows の SMB/CIFS にはたくさんのチューニング項目があります。
「こういったチューニングパラメーターはどこに載っているの?」とご質問をいただくのですが、誰もが入手でき、Windows エンジニア内で最も著名なのは「Performance Tuning Guidelines for Windows Server」です。
Microsoft Windows Dev Center - Hardware
Performance Tuning Guidelines for Windows Server 2012
http://msdn.microsoft.com/en-us/library/windows/hardware/jj248719.aspx
今回は、4月にリリースされた本ガイドの WS2012 版をベースに、
SMB/CIFS のチューニングポイントについて簡単にご紹介します。
Windows 7 クライアント用の SMB/CIFS チューニングポイント
資料には Windows 8 専用の設定もありますが、ここでは Windows 7 で利用できるものに絞ってみます。すべて REG_DWORD 型です。
HKLM\system\CurrentControlSet\Services\LanmanWorkstation\Parameters
DisableLargeMtu |
SMB のフレーム長を 64 KB から 1 MB まで増やすかどうか? (Default=1) |
---|---|
DisableBandwidthThrottling |
ネットワークのレイテンシが長い場合に、 スループットを自動的に抑制するかどうか? (Default=0) |
RequireSecuritySignature |
未署名の SMB 通信をドロップするかどうか? ※サーバー側にも設定が必要 (Default=0) |
DirectoryCacheEntriesMax DirectoryCacheEntrySizeMax DirectoryCacheLifetime |
クライアント側でキャッシュする ディレクトリ情報: ・数量(qty: Default=16, 1-4096) ・サイズ(KB: Default=64) ・保持期間(sec: Default=10) |
FileInfoCacheEntriesMax FileInfoCacheLifetime |
クライアント側でキャッシュする ファイル情報: ・数量(qty: Default=64, 1-65536) ・保持期間(sec: Default=10) |
FileNotFoundCacheEntriesMax FileNotFoundCacheLifetime |
クライアント側でキャッシュする File Not Found 情報: ・数量(qty: Default=128, 1-65536) ・保持期間(sec: Default=5) |
DormantFileLimit CacheFileTimeout |
クライアント側でキャッシュする クローズ済みファイル: ・数量(qty: Default=1023) ・保持期間(sec: Default=10) |
HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\
EnableWsd |
利用機器が TCP スケーリングに未対応の場合に、TCP 受信ウィンドウを自動調整するかどうか? (Default=1) |
---|
残念ながら Windows 7 では見れないのですが、Windows 8 からは Get-SmbClientConfiguration コマンドで現在設定されている値を一覧にできます。
Windows Server 2012 ファイルサーバーの SMB/CIFS チューニングポイント
サーバー側に関しては、Windows Server 2012 で利用できるものに絞ります。すべて REG_DWORD 型です。
HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\
TreatHostAsStableStorage |
クライアントからの書き込みフラッシュ要求を無視するかどうか? (Default=0) |
---|---|
AsynchronousCredits |
単一セッション内での非同期要求の上限 (Default=512) |
Smb2CreditsMin Smb2CreditsMax |
クライアントからの同時実行数 ・最小値 (Default=64) ・最大値 (Default=1024) |
AdditionalCriticalWorkerThreads |
重要なカーネル命令用に、別途スレッドを用意するかどうか? (Default=0) |
MaximumTunnelEntries |
NTFS トンネリングキャッシュのサイズ (Default=1024) |
MaxThreadsPerQueue |
同時要求を処理するために使用できるスレッド数 (Default=20) |
RequireSecuritySignature |
未署名の SMB 通信をドロップするかどうか? ※クライアント側にも設定が必要 (Default=0) |
HKLM\System\CurrentControlSet\Control\FileSystem\
NtfsDisable8dot3NameCreation |
8+3 ファイル名の自動生成を中止するかどうか? ※WS2012 ではシステムボリュームのみ自動生成 (Default=0) |
---|
サーバー側も、WS2012 であれば現在設定されている値を
Get-SmbServerConfiguration コマンドで一覧出力可能です。
このほかのパラメーターは?
翻訳元のドキュメントで「General Tuning Parameters」と表現されているとおり、今回ご紹介したチューニングポイントは 一般的なもの で、これが全てではありません。スクリーンショットのとおり、他にもたくさんの設定項目があります。
しかし、これ以外のパラメーターについては Developer's Guide レベルの内容であり、KB などで指示されない限りはそのままで良いのではと思います。
なお、対向の CIFS ファイルサーバーが Windows OS ではなく「CIFS 互換 NAS」の場合、効果を発揮しなかったり、逆効果もあり得ますのでご注意ください。
VDI の場合はどうしていけば良い?
VDI は、HDD を占有する FATPC に比べて、ストレージを共有します。
更に、ユーザーデータへの I/O はネットワーク越しになるケースも多く、サーバーとクライアント間の CIFS 通信が最適でないと、ハードウェア性能が余分に消費され、ユーザーの体感に影響を生じます。
カリカリにチューニングするのもありですが、最低限ユーザーが「マイドキュメントが遅い」と感じない程度にチューニングできれば合格点かなと思っています。
最適化によって無駄な処理(力技)が減りますので、
1ランク下のハードウェアで済んだり、管理者としても大きなメリットです。
環境依存*1 もあるなか、どのようにして「最適値」に見つけていくかですが、Windows にある程度詳しい SIer 様であれば、自社で検証・ベンチマークしていますので、最低限の設定で大きく改善できる設定項目をノウハウとしているものです。
VDI の設計構築を SI ベンダーに依頼する際、このような部分まで支援いただけるかを確認しましょう。ゲスト OS を VDI 向けに最適化する際に、環境に応じた推奨値を提示・指南してくれます。
*1:ネットワーク帯域、中継スイッチの機能・種類、ファイルサーバーの CPU パワー など