- 会員限定
- 2007/03/01 掲載
【連載】Windows VistaとはどのようなOSなのか?第3回/全5回:Vistaの新機能(中)
C MAGAZINE MOOK「最新 Windows Vistaプログラミング徹底理解」2月17日発売!!
パフォーマンスの向上
Windows Vista は、クライアントOS のためパフォーマンスの向上は主にユーザ操作におけるレスポンス向上を中心に考えられている。新しいメモリ管理のWindows SuperFetch、ハードディスクへのI/O ボトルネックに対する解決策のWindows ReadyDrive とWindows ReadyBoost、ファイルI/O の優先度をアプリケーションごとに設定するロープライオリティI/O(Low Priority I/O)が代表格だ。Windows ReadyDrive はフラッシュメモリとHDD が統合された「ハイブリッドHDD」というハードウェアの対応を待つ必要があるため、本解説では割愛させていただく。
頻繁に使用するアプリケーションのレスポンスを向上させるため、Windows SuperFetch(スーパーフェッチ)と呼ぶ新しいメモリ管理の仕組みを導入した。これは、ユーザ操作における応答性の大幅な改善を目的とし、ユーザの操作パターンにもとづいたシステムの最適化を行うことで、アプリケーションに対する一貫した応答性を実現するものである。
従来までは、発生順にアプリケーションをメモリ上にロードしており、頻繁に使うものやバックグラウンドで利用するものともに平等に扱われていた。SuperFetch では、事前にメモリ上にロード(プリロード)し、その他のタスクは発生順に残っているメモリ領域へロードさせる。また、タスクが多くなったときは、プリロード先のアプリケーションが起動していないとき、いったんメモリ上を空けそこで実行させる。その処理が終わったら、またプリロードする。その結果、ユーザのレスポンスがよい状況を作り出すことができる。
また、そのユーザのアプリケーション使用時間などの利用状況がシステムに記録され、その使用頻度が自動的に診断されメモリ上に優先的にロードする。こういった仕組みにより、使えば使うほどユーザに対するアプリケーションのパフォーマンスが向上する。
※クリックで拡大 |
図1 ReadyBoostの概念図
|
ところが、メインメモリとHDD との速度差は非常に大きいため、スワップが頻繁に発生すると、処理速度が低下しレスポンスがよくないと感じる。もちろん、物理メモリを増やすことでスワップの発生を少なくできるが、ハードウェアの制約上物理メモリを増やすことが困難な場合もある。
スワップ先のHDD よりも高速I/O のデバイスをキャッシュとしてメインメモリとHDD との間に置き、スワップによるパフォーマンス低下を最小限にすることでレスポンスの改善を行う機能がWindows ReadyBoost である(図1)。高速I/O のデバイスとしては、USB メモリなどのリムーバブルメディアの記憶領域が使用される。ReadyBoost が有効になると、指定したサイズでキャッシュ領域が作成され、スワップファイルのようにふるまう。
実際の動作だが、スワップ発生時にメインメモリからUSB メモリのキャッシュ領域とHDD のスワップファイル上へ退避される。メインメモリに書き戻すときは、HDD のスワップファイルとの一貫性を保持しつつUSB メモリのキャッシュ領域を読み込む。ユーザがアプリケーションを利用する際、高速なUSBメモリから読み込みを行っているため、レスポンスが改善する。
また、ReadyBoost のキャッシュ領域は、HDD上のスワップファイルの読み込みキャッシュとして利用されるため、何らかの理由でUSB フラッシュメモリがPC から切断された場合も、システムがクラッシュすることなくアプリケーションは継続して利用可能である。つまり、ログオフやリブートなしでスワップファイルの高速化を行ったり元の状態に戻すことが可能ということだ。
Windows Vista 以前は、すべてのアプリケーションやサービスに対して、すべて同じ優先度でリソースへのアクセスを実行していた。そのため、バックグラウンドプロセスによるファイルI/O により、ユーザが現在操作しているフロントエンドのアプリケーションのパフォーマンスが悪化することが少なくない。
パフォーマンスについて考察すると、バックグラウンドタスクはスループット重視であるが、フロントエンドタスクはユーザへのレスポンス重視である。そこで、バックエンドのI/O 処理の優先度を下げてフロントエンドとバックエンドのI/O の優先度を変え、レスポンスの向上を図った。この優先度をアプリケーションによって変える機能がロープライオリティI/O(Low Priority I/O)である。
なお、低優先度のI/O の対象となるものは、Windows SuperFetch、検索インデックス作成、Windows Defender、デフラグ、スタートアップに登録されたアプリケーションである。
関連コンテンツ
PR
PR
PR