Windows 7 – システム パフォーマンスへの取り組み

たくさんの皆さんからWindowsのパフォーマンスについてのコメントやemailをいただきました。それらは、かなり幅広いものですが、中でもパフォーマンスの向上について(当然ながら)多くの要求がありました。パフォーマンスと言うと絶対で簡単に計測可能に感じますが、これからここで議論しようと思っている様々なトピックと同様に多くの側面があります。全ての皆様のご期待に応えられるようなパフォーマンスを実現しようとすると、パフォーマンスにも様々な要素が存在し様々なトレードオフが存在していることがわかります。もちろん、仮に期待値を達成できたとしても、皆様はさらなるご期待をWindows PCに対して持たれることでしょう(これもまた当然なことです)。私たちはWindows 7(とIE8)においてはこの分野に改めて注力しています。これは各フィーチャーチームにおいての重要なイニシアチブですし、数あるフィーチャーチームの一つであるFundamentalチームの主要なミッションになっています。この記事では、この議論の枠組みだけをお話しさせていただきパフォーマンスのお話は今後の記事で詳細に書いていきたいと思っております。IE8 performanceのBlogの記事とIE8のベータ2 リリース等がこの件に関連している項目ですので参考にしてください。

パフォーマンスはたくさんの要素によって構成されています。時には、特定のリクエストに対する反応時間について語られている場合があります。また、それは“一般的に”どのぐらいRAMが必要か、どのCPUが必要かという事かもしれません。あるいは、プログラムを起動するまでに必要なクロック数のことかもしれません。CPU使用率、disk I/O 活動の多さ(または少なさ。)等を監視することを意味するかもしれませし、バッテリ寿命のことかもしれません。ひょっとしたら、インストール後のハードディスク上のサイズというようなありふれたことなのかもしれません。これらはすべてパフォーマンス測定する上での要素です。これらはすべて開発時にはシステマチックに管理されています。いくつかの既知のシナリオ(何千とあります。)で私たちはパフォーマンスを計測しており、開発者は特定のシナリオを深く広く実行し検証しています。以下にWindows 7の開発において計測しているいくつかの指標(全体の一部ですが)を紹介します。

  • メモリー使用率‐ 特定のシナリオを実行する上でどれだけのメモリーを振り当てるか。ご存知かとは思いますが、コンピューターサイエンスにおいては時間対空間の古典的なトレードオフが存在しており、私たちは決して例外ではありません。このトレードオフをキャシュ関連で、たとえばさらに多くのメモリ(またはディスク容量)を使う事によってパフォーマンスの向上または再計算を避ける事ができます。
  • CPU 使用率 – 明らかに、モダンなマイクロプロセッサは莫大なプロセッシングパワーを提供しており、また、マルチコアの出現により並列化の機会がますます増えております。もちろん、これらのリソースで実現可能なことは無限ではないので、CPU使用率を図るベンチマークを実行しています。一般的には、ゴールはこれらをできる限り低くすることです、なぜならば、そうすることによりマルチユーザーのシナリオを改善し電力消費量を抑える事が出来るからです。
  • ディスク I/O ハードディスクの性能が格段に進歩したとはいえ、我々はできる限りWindowsそのものが行うディスクへの読み書きを少なくしなければなりません。(もちろん、ページングも含めてです。)この分野はソリッドステートストレージという従来とは違った“特性”を持ったデバイスの出現によりWindows 7では特に注意しています。
  • 起動、シャットダウン、スタンバイ/ レジューム‐ これらはすべてWindows 7で注力している点です。これらのものが“充分、速い”という状況にはならないと考えています。これらのトピックに関しては実験室で得られる結果(または“クリーンインストール”時のパフォーマンス)が新しく買ってきたPCにも反映されることが重要であり、それにはメーカー様やハードウェアメーカ-様とのコラボレーションがきわめて重要な役割を担っております。
  • ベースシステム – 基礎となるシステムでの計測、チューンに我々はかなりの時間をかけています。これは追加のソフトウェアがロードされる前の状態でのリソース利用率を指しています。このシステムがすべてのデベロッパーが期待できるシステムを定義付け、一般的なエクスペリエンスを体験できるシステム要求を定義づける、“土台”となります。良くあるリクエストとしてはベースシステムから除外して、“オンデマンド”で利用するというリクエストです。これのトレードオフは、我々が頻繁に作業する項目です。しかし、注意して避けなければいけないのは、大半のお客様がこの何かしらの“オンデマンド”でのロードに直面し、一般的なシナリオで実感としてのパフォーマンスが低下する事です。
  • 必要ディスク容量 – 直接的には実行時のパフォーマンスには影響はしないのですが、多くの人がOSの容量を実感としてのパフォーマンスを暗示するものと考えています。私たちはこの問題に対しても特定のゴールを設けており、今後詳細について書きたいと思います。また、\Windows\WinSxSについても説明していきたいと思います。なぜなら、これはtechnetやmsdnでしばし議論の対象になっているからです!ここでは実行時のトレードオフではなく、例えば、ハードディスク上のデバイスドライバ、アシスタンス用のコンテンツ、オプショナルなWindowsのコンポーネントや診断ツール、ログ情報があるのですが、これらには便利さとのトレードオフが存在しています。

私たちは開発の節目ごとに次のステップに進むかどうかの判断基準を設けており、その基準が満たされることなしに出荷をすることはありません。ある時には、これらの基準はマイクロベンチマーク(ページフォールト、CPU使用率、ワーキングセット、画面のフレームレートなど)のことを意味し、またある時は、ユーザーシナリオに即したものでありひとつのタスクを完了するための時間(時計時間、マウスクリック数)を意味します。私たちは、いろいろなハードウェアプラットホームでこれらの測定をします(32ビット/64ビット; 1, 2, 4GBのRAM; 5400~7200の回転数を持つハードディスクまたはソリッドステートディスク、いろいろなプロセッサー、その他)。設計上の都合により以前からあるものとトレードオフ関係がある場合は、Windows が動作しているハードウェアのタイプによって条件分けをするプログラミングを加えることもあります。

一方、パフォーマンスに関する議論はシンプルでなければなりません。機能が少なくなればパフォーマンスは向上するはずです。極端な場合では、それは顕著に表れます。しかし、いただいた多くのコメントには、一人の人にとっては必要なある機能が、別の人にとってはまったく必要ない機能ということもあります。これは“見た目に派手な機能”について特によく聞くことです – ユーザーインターフェースをアニメーションやグラフィックスなどを使い(“私たちの競合相手の製品のような”)もっと楽しいものにしてほしいというたくさんのリクエストをいただく一方で、 “グラフィックスなど使わずにWindows 2000に戻してくれ”、というご意見もあります。Windowsは非常に柔軟で、ユーザーの使い方に合わせるための多くの方法を提供しています。様々なお客様のために違った種類のWindows をリリースすることについてのご意見をいただきました。その一方で、 Windowsのバージョンの数を減らすべきだというかなりの数のご意見も頂戴しました。しかし、私たちが提供できることには限度があり、また、お客様や開発者から信頼していただくに足りうる、多くのお客様にとって頑丈で管理しやすい“プラットフォーム”を提供することにも限度があります。しかし、もちろん既知の前後関係(すでにあるソフトウェアが稼働している、ご家庭の中、または企業の中で)の範囲内で、Windowsが持っている様々なカスタマイズや管理方法を利用することは常に可能です。カスタマイズの選択の余地があることそしていったい何がお使いのPCで発生しているのかをコントロールすることは、私たちにとって最も重要であり、私たちはWindows 7でもこれらの側面に引き続き注力します。

お客様に今後もPCを使い続けていただき、PCでさらにたくさんのことを正しく行い、たくさんのソフトウェアがPC 上で期待通りに動くこと。これはパフォーマンスと関連してよりよいPCの使い勝手を実現するための私たちの最も大きい挑戦です。今後もWindowsの機能は増えていくことになると思いますが、私たちはより多くのお客様に対する利便性が高まると考えられる機能を厳選していきます。同時に、Windows 7のかなりの部分は、ソフトウェアとしてWindowsに起こることやデフォルトハンドラーがファイルタイプやプロトコルに対してどのように作用するかということなどに対し、選択とコントロールを提供し続けることになるでしょう。また、エンドユーザーに対してコンピューターの使い勝手をよくするためのプラットフォームとしての機能をサポートし続けます。

現実と理想のバランスについては、深く考慮する必要があります。Windowsを開発するにあたり、私たちは追加したコードがどのようなインパクトがあるかどうか確認するために実験室の中でベンチマークテストを行います。私たちもPCが出荷された後、PCメーカーと緊密にコラボレーションを行い、彼らのシステムをベンチマークでテストすることをお手伝いします。そして、Microsoft Customer Experience Improvement Programは、私たちにPCがどのように稼働しているかという(匿名で個人的かつ選択的な)データを、現実の世の中でのパフォーマンスデータとして提供します。逸話や信頼できない形の情報を使用するよりは、現実はどうなっているのかを議論するベースになるものとして、私たちはこれから数カ月にわたりそのデータを利用していきます。

次のポストでは起動時のパフォーマンスを取り上げます。多くの皆様の関心をいただき、私たちはパフォーマンスの話題についてたくさんのことをお話しなければなりません。

--Steven