Welcome to Windows 7

Windows Vistaにおける不満のひとつに、満足な速度で使うには大量のメモリが必要であることが挙げられる。また高速なグラフィックアクセラレータを搭載しているにもかかわらず、なにかウィンドウの操作に引っかかりを覚えているユーザも少なくないだろう。こうした問題はWindows 7で改善される可能性が高い。

Microsoft, Desktop Graphics feature teamのAmeet Chitre氏がEngineering Windows 7ブログにおいてEngineering Windows 7 Graphics Performanceというタイトルのもと、Windows 7において実施されたグラフィック処理回りの分析と改善内容を説明している。Windowsに限らずマルチコア対応のために実施する手法として共有する対処方法だが、実際にユーザがもっとも顕著に体験できる部分だけに説明内容は興味深い。

グラフィック描画性能は3Dゲームなどを使って実施されることが多い。実際のゲームの描画であったり、描画性能をかたっぱしから計測する方法などがある。こうした方法は複数のブラウザを開き、サイズの変更や移動などを実施するという通常の事務処理とはあまり関係がない。実際、Windows VistaのExperience Index (WinEI)にはGraphicsとGaming graphicsという2つの項目にわけて性能評価が記載されている。この2つを明確に分けている。

開発チームは実際にユーザが感じるデスクトップの俊敏さに着目し、テストバージョンのWindows 7を通じてユーザの動きを分析。さまざまなケースがあって判断が難しいものの、GDI(Graphics Device Interface)アプリケーションにおいて頻繁に発生しているコンテンションを発見し、これを改善することでデスクトップ俊敏性の向上が可能であることを突き止めたという。

GDIアプリケーションは他のGDIアプリケーションの処理を待つ。これはGDIグラフィックスタックにおいて保持できる排他的ロックが1つしかないためだ。さらに過度のページングアクティビティが原因で特定のGDIアプリの動作が重くなると、ほかのすべてのGDIアプリが処理待ちに入り、結果的にユーザが感じる俊敏性が落ちることになる。排他的ロックから細粒度ロックへの変更と、ページングアクティビティが発生しないようにメモリ使用量を抑えることで改善できることになる。

Windows 7ではGDIのアーキテクチャをコンカレンシなものへ変更し、マルチコアに合わせてスケールできるように変更したという。排他的ロックから細粒度ロックへ変更することで単一アプリあたりの処理は若干劣化することになるが、全体としては気にならないレベル。マルチコアの分だけアプリに対して性能がリニアに向上することの利点の方が大きい。またウィンドウごとにコピーしていたシステムメモリ部分をなくし必要に応じてビデオメモリからロードする仕組みへ変更。こちらも従来の実装よりも若干劣化することになるが、ウィンドウを開くごとにメモリがガンガン消費されることはなくなり劣化も小さいレベルで、結果的に俊敏性が向上することになる。

結果的にWindows 7ではデスクトップの俊敏性が向上し、さらにマルチコアの数までアプリケーションの数を増やしても俊敏性がスケールすることになる。またVistaのときよりも少ないメモリで快適に動作することになるという。