仮想化でプリセールスしてるSEの一日

VMware から Azure まで、インフラや仮想化の最新情報をベンダー色をできるだけ抑えて綴っていきます

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 の視覚効果を管理するのは意外と大変です。

  • ユーザー単位の設定なため、マスタイメージに設定しても意味がない
  • グループポリシーで設定しようにも、標準の GPO に設定項目がない
  • 管理者権限が無くとも変更できてしまう*1


基本的にはユーザーハイブのレジストリを直接制御することになります。






















下線 は筆者のおすすめ

値の名前 初期値 変更例 (※)
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 での性能と見た目のバランスを意識した筆者のお勧めです。

*1:コントロールパネル > パフォーマンスの情報とツール > 視覚効果の調整

*2:Windows 7 の場合

*3:Windows XP までは REG_DWORD