VDI のレスポンスを上げる Windows チューニング (2)
(1) (2)
前回に引き続き、
VDI 向けの Windows OS 最適化の話です。
今回は、ユーザーの体感を大きく左右する「Windows の視覚効果」と、その一元管理の方法について触れたいと思います。
Windows の視覚効果
Windows の視覚効果とは、おなじみの次の画面のことです。
「こんなの当たり前...」と思うかもしれませんが、逆を返せばよく知られているくらい Windows の操作レスポンスに大きなインパクトがあります。
分かりやすいのが「ドラッグ中にウィンドウの内容を表示する」という設定です。次の2つのスクリーンショットをご覧ください。
この設定が On の場合はウィンドウを動かす際に中身も追随して動きますが、Off にすると動くのは枠だけになります。枠だけであれば、中身は追随しないのでユーザーはマウスの動きが軽く滑らかに感じますし、描画更新もほぼゼロなのでネットワーク消費量も大幅に削減します。
同様の理由でアニメーション関連も VDI では影響があります。
XenDesktop だと、一部の視覚効果は自動で Off になる
Citrix XenDesktop の場合、Agent のインストール際に下記にチェックを入れると視覚効果の一部を無効にしてくれます。XenDesktop がデフォルトから何も変えないでも(画質は別として)比較的動作が軽いのは、こういったところが大きいですね。
但し、XenDesktop のインストーラで変えてくれるのは一部のみです。
レスポンスやネットワーク消費に大きく影響があるので、VMware View はもちろん XenDesktop であっても管理者がきちんと把握して統制すべきだと思います。
Windows 7 視覚効果のレジストリ・エントリ一覧
実は、Windows の視覚効果を管理するのは意外と大変です。
基本的にはユーザーハイブのレジストリを直接制御することになります。
値の名前 | 初期値 | 変更例 (※) | ||
---|---|---|---|---|
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects | ||||
設定プロファイル | VisualFXSetting | 0 (DWORD) | 0, 1, 2, 3 | |
HKCU\Control Panel\Desktop | ||||
Windows内のアニメーションコントロールと要素 ウィンドウの下に影を表示する コンボボックスをスライドして開く ヒントをフェードまたはスライドで表示する マウスポインターの下に影を表示する メニューをフェードまたはスライドして表示する メニュー項目をクリック後にフェードアウトする リストボックスを滑らかにスクロールする |
UserPreferencesMask | 9e3e078012 (QWORD) |
9012018010 9032038010 など |
|
スクリーンフォントの縁を滑らかにする | FontSmoothing | 2 (SZ) | 0, 1, 2 | |
ドラッグ中にウィンドウの内容を表示する | DragFullWindows | 1 (SZ) | 0, 1 | |
HKCU\Control Panel\Desktop\WindowMetrics | ||||
ウィンドウを最大化や最小化するときにアニメーションで表示する | MinAnimate | 1 (SZ) | 0, 1 | |
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced | ||||
アイコンの代わりに縮小版を表示する | IconsOnly | 0 (DWORD) | 0, 1 | |
タスクバーとスタートメニューでアニメーションを表示する | TaskbarAnimations | 1 (DWORD) | 0, 1 | |
デスクトップのアイコン名に影を付ける | ListviewShadow | 1 (DWORD) | 0, 1 | |
半透明の[選択]ツールを表示する | ListviewAlphaSelect | 1 (DWORD) | 0, 1 | |
HKCU\Software\Microsoft\Windows\CurrentVersion\ThemeManager | ||||
ウィンドウとボタンに視覚スタイルを使用する | ThemeActive | 1 (SZ) | 0, 1 | |
HKCU\Software\Microsoft\Windows\DWM | ||||
Aeroプレビューを有効にする | EnableAeroPeek | 1 (DWORD) | 0, 1 | |
タスクバーの縮小版のプレビューを保存する | AlwaysHibernateThumbnails | 0 (DWORD) | 0, 1 | |
デスクトップコンポジションを有効にする | CompositionPolicy | 2 (DWORD) | 0, 2 | |
透明感を有効にする | ColorizationOpaqueBlend | 1 (DWORD) | 0, 1 |
面倒なのが「UserPreferencesMask」というエントリです。
このエントリは他のように 0/1 ではなく、「9e3e078012」という感じで
次のような 24 の項目*2 が10桁以上の16進数で表現されています。
- Windows内のアニメーションコントロールと要素
- ウィンドウの下に影を表示する
- コンボボックスをスライドして開く
- スライドして表示する
- メニュー項目をクリック後にフェードアウトする
- リストボックスを滑らかにスクロールする
どのビットがどれに相当するかも非常に難しく、分かったとしても16進数で正確に入力するのは相当困難なので、素直に計算ツールを使いましょう。
UserPreferencesMask calculator (UPMCalc) - Softpedia
http://www.softpedia.com/get/Tweak/Registry-Tweak/UPMCalc.shtml
UserPreferencesMask の既定は REG_BINARY 型で入力されていますが、
修正する場合は REG_QWORD*3 で入力してください。
上記6項目を全部 Off にしたい場合は「9012018010」です。
しかし、それだと見た目が寂しすぎるので私は「9032038010」をお勧めします。
Windows の視覚効果を一元管理する
前述のとおり、視覚効果はユーザー単位の設定 (HKEY_CURRENT_USER) なので、展開前のマスタイメージに設定しても意味がありません。
次のような方法でレジストリ設定を配布する必要があります。
次のスクリーンショットとタブ区切りテキストは実際に前者で設定したものです。
アクションには “置換” を指定しましょう。
reg_visualeffects.tsv
reg コマンドを利用した後者の方法は こちら で解説されています。
レジストリに反映後、有効にするには一度ログオフする必要があります。
下記が VDI での性能と見た目のバランスを意識した筆者のお勧めです。