10 億人を超える世界のユーザーに快適なパフォーマンスを届けるために
※ 本ブログは、米国時間 5/26 に公開された “Delivering Delightful Performance for More Than One Billion Users Worldwide” の抄訳です。
私たちはこの 1 年をかけて、Windows 全体の基礎的な部分に改善を加えてきました。スピードと信頼性の強化、主要アプリのパフォーマンスの最適化、サステナビリティの向上などに取り組み、これまで以上に信頼性の高い効率的なコンピューティング エクスペリエンスをすばやく提供できるようにすることで、ユーザーの皆様の満足度を高めることを目指しました。
具体的には以下のような改善が行われました。
- タスク バー、通知、クイック設定など、頻繁に行われるシェルのインタラクションを最大 15% 高速化しました。
- 起動時間を 10% 短縮し、スタートアップ アプリの影響を 50% 以上軽減して、よりすばやく業務に着手できるようにしました。
- Windows Updateでは、エネルギー関連の推奨事項と二酸化炭素排出量に配慮し、PC の持続可能性を向上させました。推奨されるエネルギー設定を適用したユーザーの電力消費量は、平均 6% 減少していることが確認されています。
- Windows 11 はこれまでで最も信頼性の高いバージョンであり、最新の更新プログラムを通じて継続的に信頼性を向上させています。
- Microsoft Edge の起動を高速化させました。また、バックグラウンド タブのメモリを最大 83% 節約するスリープ タブなどの機能により、メモリ使用量を削減しています。
- Windows 向けの新しい Teams アプリでは、リソース消費量を半減させながら、速度を 2 倍にスピードアップさせています。
この記事では、私たちがこうしたパフォーマンス向上をどのように実現したか、その舞台裏をご紹介したいと思います。Windows は 10 億人を超えるユーザーを抱えるスケールの大きな製品です。バリエーションに富んだ PC エコシステムを形成しており、利用の仕方、アプリやハードウェアの組み合わせは無数に存在します。また Windows は多くの製品の基盤でもあります。それぞれのケースにおいて、ニーズは異なり、PC の動力源や Azure のホスト OS、Xbox や HoloLens のコアとなっていることもあります。Windows 11 では新機能を高い頻度でリリースしているため、それに伴う不具合の発生を防ぐことがより重要になり、改善のためのサイクルも短くなりました。幸いにも、これまで築き上げてきたインフラやツールがあるため、Windows が持つ巨大なスケールでパフォーマンスの問題を見つけ、理解し、修正することができています。
パフォーマンス向上の取り組みを大規模に実施
10 年前を振り返ってみると、Windows のパフォーマンス分析の業務は大変なものでした。オペレーティング システムを数ヶ月かけて開発し、その後ベータ リリースとして外部ユーザーに提供し、ユーザーやパートナーから指摘されるバグに対応していました。一部のシナリオでパフォーマンスに問題があるとバグ報告を受けても、根本的な原因の調査に必要な情報が常に揃っているとは限りません。問題の再現にも苦労しました。問題を見つけ、詳細がわかっても、どれほど一般的な問題であるかは簡単に分かりません。ご想像のとおり、このプロセスには多くの時間と手間がかかっていました。今となっては思い出すのも難しいほど昔の話です。
現在は洗練された包括的なスキームによって、優れたパフォーマンスを確保できるようになりました。まず設計の段階から確固たるパフォーマンス目標を定め、ユーザーのニーズを満たすことを目指します。ユーザーの期待値について大規模に調査を実施し、その結果に基づいてユーザーの操作感に関する目標を設定しています。私たちはこれを「インタラクション クラス」と呼び、目標設定の参考にしています。スタート メニューを開くといった瞬間的な操作にも、ファイルを削除するといった長めの操作にも、適切な UX アフォーダンスを設けるようにしています。
開発中はパフォーマンスを維持するために、Windows の UX、アプリのエクスペリエンス、スタンバイ/スリープ状態からの復帰、メモリ、ストレージなどについて、幅広く Windows の主要パフォーマンス指標を測定するパフォーマンス ゲートを毎日実施しています。毎日 100 万時間 (機械時) 以上を検証に費やしています。このように日々開発品質を維持しながら、生産的に開発を進めています。セルフホストが完了し、自分のデバイスでパフォーマンス指標を評価したら、Windows Insider コミュニティにビルドを展開します。コミュニティの皆様のデバイス構成やユース ケースは多様であるため、品質に関して幅広いフィードバックをいただくことができます。
数字で見る診断データ: (1) CAB は 1 日あたり 250 万以上、(2) パフォーマンス トレースは年間 1,200 万件以上、(3) シナリオ パフォーマンス データ ポイントは年間 704 億件以上
こうしたフィードバックと完全なパフォーマンス診断データを合わせると、私たちが受け取るフィードバックは膨大なものになります。この数年は、情報分析と問題特定のためのバックエンド サービスに加えて、診断データによるパフォーマンス指標やその他の Windows の品質指標を収集することに注力してきました。重要なシナリオの場合、現在は、ユーザーが実際に体験したパフォーマンスがデバイス エコシステム全体でどのように分布しているのかを把握できるようになっています。パフォーマンス データは 1 つの数値ではなく、広がりを持って分布しています。あるユーザーが体験したパフォーマンスが、別のユーザーとはまったく異なることもあります。これは両者が異なるハードウェアで異なるアプリを実行し、異なる方法でシステムを使用しているためです。また、私たちにとって大きな変革だったのは、トレースを大規模に分析し、任意のシナリオでの応答性にかかわるクリティカル パス上の問題を発見できるようになったことです。これは、シナリオ固有のコードや IO 遅延、カーネル レベルのスケーリング最適化、ドライバーの品質問題など、パフォーマンスの問題を引き起こしている原因をトレースから突き止めることができる有用なツールのおかげです。
快適なエクスペリエンスを実現する技術の導入
優れたインスタント オン エクスペリエンス (Windows Hello によるモダン スタンバイからの再開)
Windows 11 では、Windows Hello とインスタント オンにより、かつてないほどすばやく作業に取り掛かることができます。今では多くのノート PC でモダン スタンバイと Windows Hello が採用され、パスワードレスのログオン エクスペリエンスが提供されています。私たちの目標は、作業者がわずか数秒で元の作業に戻れるようにすることです。それを実現しているのが Surface Laptop 5 や Surface Pro 9 などの最新世代の Surface PC であり、前の世代よりも 10% 高速化しています。ここ数回のリリースで、CPU、カメラ ドライバー、ディスプレイ ドライバー、OS の性能を向上できたことがその要因です。
応答性が高く、スムーズで高速な Windows エクスペリエンスを実現するには、優れた基本性能とそれを一貫して発揮できる能力の両方が必要です。Windows Hello のパフォーマンスへのネガティブなフィードバックはめったにありませんが、稀に寄せられる報告のほとんどは、デバイスのロック解除に時間がかかるというものです。Windows 担当エンジニアは、次のような方法で、基本のパフォーマンスとインスタント オンなどのシナリオでの一貫性の改善に取り組んでいます。
- 測定: パフォーマンス分析ではまず、診断データ用のイベントを発行するコードを追加して、システム リソースの使用状況を把握できるようにしています。主に ETW を使用してコードを追加した影響を測定し、不具合がないことを確認してからセルフホスティングを行います。
- ベースラインの最適化: ETW のトレース結果を分析します。これには DataLayer を使用した自動トレース分析技術を活用し、場合によっては手動で Windows Performance Analyzer (WPA) を使用します。WPA では、リソースの使用状況を確認する技術 (CPU 分析など) やクリティカル パス分析など、さまざまな分析手法によって、ソフトウェアやハードウェアに最適化できそうな問題があるかどうかを調べます。
- 大規模な配信の最適化:
- エンジニアリング チームが機能に追加した光学センサーを使用して、多様なすべての Windows ハードウェアを対象に軽量のパフォーマンス データ (Windows Hello 顔認証にかかる合計所要時間など) を監視します。このデータからは、90/95/99 パーセンタイルと、10 パーセンタイルや 50 パーセンタイルといった一般的なケースとの差を確認できます。
-
- 次に、ハードウェアと Windows OS の構成を網羅するように、Windows ユーザーの少数のサンプルから詳細なパフォーマンス診断データを大規模に収集します。
- リソース使用状況分析やクリティカル パス分析を使用した自動トレース分析技術を活用し、配信範囲全体で見られるパフォーマンスの問題とその相対的影響を表す積み上げ縦棒グラフを作成します。この規模で分析することにより、幅広いデバイスのパフォーマンスのボトルネックを深く理解することができ、それに基づいて効果的な改善ポイントの優先順位を付けています。下のグラフは、この手法で Windows Hello 顔認証について分析した例です。
- 最後に、大規模なアプローチで収集された大量のデータのうち最も重要なパフォーマンス トレースをダブルチェックし、分析から得られたインサイトを確認しながらエンジニアリング チームと解決策を検討します。
- フィードバックへの傾聴: フィードバック Hub などのチャネルを通じて提供されるユーザーからのフィードバックは、その時点でフローの範囲外となっている領域に新しいセンサーや調査の必要があるかどうかを判断する助けになります。インスタント オンについては、フィードバック Hub のいくつかのカテゴリとコンテキストについて監視を行っています (「電源とバッテリー >> スリープ」「セキュリティとプライバシー >> Windows Hello 顔認証」など)。問題を再現し、フィードバック Hub の [問題を記録する] でより詳しい情報を追記していただくと、その豊富なデータを基に効果的に問題を診断することができます。
最新の Windows 11 更新プログラムでは、次のような最適化を行いました。
- Enhanced Secure Sign-On (ESS) のパフォーマンス向上でセキュリティを強化: ESS は、システムの他の部分から隠すことができるメモリ エンクレーブを作成することで、セキュリティ レベルを引き上げるものです。このセキュア エンクレーブの大きなメモリ スラブの処理を効率化することによって、システムがメモリ圧迫を受けている場合のパフォーマンスが最大 10% 向上しました。また、より広範なサイズの RAM に対応できるようになりました。
- アプリ オーケストレーションにより Windows Hello の一貫したパフォーマンスを実現: ユーザーがマシンを再開して Windows Hello を実行する際、アプリもバックグラウンドで再開してシステム リソースを消費し、それが Windows Hello のパフォーマンスを低下させるケースがありました。そこで、Windows Hello のカメラが起動し、顔認証が完了するまで、アプリの再開を遅らせるようにしました。
現在、これらの機能はお客様に提供されています。ロック画面のリモート プロシージャ コール (RPC) の数を減らすことで、多数のアプリを再開する場合のメモリ消費を最大 8% 抑制し、インスタント オン エクスペリエンスの高速化を実現しています。
新機能
私たちは Windows のコア シナリオの優れた基本理念を維持するために継続的に取り組んでいます。この 1 年をかけて、Windows エクスペリエンスを構築している各機能チームに担当する機能の詳細な確認を求め、さらに最適化できる OS エクスペリエンスがないかどうかを調べました。その結果、製品全体で幅広く最適化を実施することができました。考えていた以上の成果が上がり、驚いたのと同時に今後のモチベーションにもなりました。これらの改善をすべてのお客様にお届けできることをたいへん嬉しく思います。
この取り組みは、ベスト プラクティスや手法に関するトレーニングを全社的に実施することから始まりました。パフォーマンス分析のための最新のツールや技術について、組織で知識を活用できるようにしました。それがきっかけとなってどのチームにも勢いが生まれ、それぞれが選んだオペレーティング システムの問題点の改善に取り組むことができました。そうした努力の結果、Windows 全体で 300 を超えるさまざまなパフォーマンス改善を達成しました。その一部を以下にご紹介します。どれも Windows 11 のすべてのデバイスでご利用いただけます。
高速で応答性の高い起動後エクスペリエンス
今日の PC は、起動するとその裏側でさまざまな処理が行われています。スタートアップに登録されたアプリの数が多いと、起動のために一斉にリソース要求が行われます。このため、起動時のパフォーマンスの問題を調査しながら、アプリの起動を適度に抑える実験をしました。
その結果、ユーザーが操作しようとしているアプリの応答性を優先的に高めることができ、また、競合が減って多くのケースでバックグラウンド アプリの起動が速やかに終了するようになりました。すべてのスタートアップ アプリを一度に起動するのではなく、加減して立ち上げることがポイントです。これにより、起動時の著しい競合を回避し、ユーザーが操作するフォアグラウンド アプリのパフォーマンスと応答性が確保されます。
このような改善はリソースの少ないデバイスに最も効果があり、複数のスタートアップ アプリを用意して検証したところ、ログオン後のタイミングでのアプリの起動時間が 25 ~ 50% 短縮されました。下の図をご覧いただくとわかりやすいと思いますが、スタートアップ アプリの起動を調整することで、ユーザー起点の操作があまり競合せずに実行されるようになっています。この例では、ユーザーが操作するアプリの起動が速く完了し、バックグラウンドのスタートアップ アプリもリソースを取り合わないため、同様のタイムフレームで完了することがわかります。
ファイル エクスプローラーの改良
ファイル エクスプローラーにもいくつか改良を加えました。たとえば、クラウドにファイルを保存している場合、それらのファイルを列挙するための I/O を回避することで、ファイル エクスプローラーの起動時間を短縮しました。また、ファイルの削除についても見直しを行い、以下のように、ファイルを一括削除したときの時間を約 40% 以上短縮しました。
デバイスから一度に大量のファイルを削除することはあまりないかもしれませんが、このように幅広く改良を加えて Windows 11 の操作性を高めています。
高レポート レート マウスでのゲーム中のスタッターの低減
スタッターを嫌うゲーマーの皆様に向けて、不意のフレーム フリーズが没入感を妨げることがないよう Windows 全体で問題を修正しました。ゲーマーの皆様は最高のゲーム体験をするために、自分のマシンの性能を限界まで引き出したいと考えていらっしゃいます。また多くの方は、高感度、高 DPI、高レポート レートのマウスを使用して、応答時間をミリ秒刻みで設定し、精度を高めています。しかも、ゲームの世界ではプレイヤー同士がつながることが自然になり、ボイス チャットやストリーミング用アプリ、キーボードやマウス、グラフィック カードの設定用アプリなど、プレイ中にバックグラウンドで実行するアプリがますます増えています。Windows の入力スタックは、高レポート レート マウスによって、またその入力がゲームだけでなく複数のバックグラウンド プロセスにも送信されるため、限界まで追い込まれていました。ゲーム エクスペリエンスのレンダリングにできるだけ多くのサイクルを提供するのではなく、入力を処理することにかなりの時間を取られていたのです。
そこで、Raw Input のバックグラウンド マウス リスナーを調整、統合し、そのメッセージ レートに上限を設けることで、入力要求の処理時間を短縮することにしました。これに着手する前、1,000 Hz のマウス、バックグラウンド リスナーのテスト ベッド、人気のゲームを組み合わせた Surface Laptop Studio で著しいスタッターが発生することが確認されていました。改善後は、同じ構成でバックグラウンド リスナーの入力を効率的に処理しながら、ゲーム内で低レイテンシおよび高精度の入力エクスペリエンスを確保できるようになり、途切れのないスムーズなゲーム エクスペリエンスを実現できました。
その他の改善点
ここまでご紹介したのは、2 月と 5 月の更新プログラムでの改善点の一部ですが、他にも以下のように多数のエクスペリエンスが改善されました。
- ログイン後すぐにタスク バーを利用できるように改善
- 高い負荷がかかっているデバイスでのタスク ビューのパフォーマンスを改善
- Windows 通知サービスのパフォーマンスを改善
- クイック設定と通知センターの起動時間を短縮
- エクスプローラーのスレッド数、DLL 数、グラフィック デバイス数を削減
- エクスプローラーの CPU 使用率を低減
- 通知センターのメモリ使用量を削減
- タッチ キーボードのパフォーマンスを改善
- マルチユーザー シナリオでのリソース使用量を低減
- サイズの大きなドキュメントでの音声アクセスとナレーターの待機時間を短縮
- 音声入力の起動時間を短縮
- テーマの変更速度を改善
- Store 経由のオンデマンド機能を活用してディスク サイズを削減
5 月のリリースでは開発者向けのパフォーマンスも多く改善されます。基礎部分にかかわるものをいくつかご紹介します。
- よりスムーズなデバッグ作業のためにカーネルのミニダンプ フォーマットを強化
- タスク マネージャーから直接ライブ カーネル ダンプを収集可能に
- パートナー センターにより情報豊富で実用的なサード パーティ信頼性データ ビューを追加
- Windows Performance Analyzer (WPA) が Arm デバイスでサポートされ利用可能に
Windows で動作するアプリも改善
Windows で動作する主なアプリについてもさまざまな改善がなされました。各関係チームと緊密に連携を取りながら、パフォーマンスや基礎部分への改善に向けたアプローチを共有し、一丸となって取り組んでいます。
Microsoft Edge のパフォーマンスを改善
Web ブラウジングは、ユーザーが最も多く行う行動の 1 つです。Edge ではユーザーのブラウジング エクスペリエンスを向上させながら、パフォーマンスの改善とリソース使用量の最小化に取り組んでいます。スリープ タブは 1 年以上前に Edge に導入されました。以降、メモリ使用量と電力消費をさらに抑えるために、継続的に改善に取り組んでいます。ユーザーの多くは最大 7 つのタブを同時に開いていながらよく表示するのは 1 つだけということが多く、その場合、非表示のタブがメモリとバッテリーの両方に大きな影響を与えることになります。
スリープ タブの導入により、ユーザーがタブを切り替えるとバックグラウンド タブのメモリと CPU の使用量を抑えられるようになりました。また、もう 1 つの重要な点として、タブを完全に閉じるよりもバックグラウンド タブからの復帰が高速になりました。診断データによると、75 パーセンタイルでは 1 つのタブのプライベート ワーキング セットが 400 MB になっていることがありました。この場合、バックグラウンドに 6 つのタブがあると、合計約 2.4 GB ものメモリが消費されることになります。スリープ タブによって、タブのプライベート ワーキング セットを 75 MB まで削減することができました。メモリを 2 GB 近く節約し (83% 削減)、その分、他のアプリやサービスのために使用できるようになりました。さらに、Edge ブラウザーの起動時間も 15% 以上改善されました。
移動中にはバッテリーを最大限に活用できることが重要になります。再び電源につなげるまで、バッテリーが長持ちすることが求められます。Microsoft Edge の効率モードを利用すると、バッテリーを最大限に活用できるようになります。効率モードを有効にすると、Microsoft Edge の CPU 使用量が効率的に抑制され、バッテリー駆動時間が平均 25 分延長されます。
Windows 用の新しい Microsoft Teams アプリ
Microsoft Teams はここ数年で爆発的に普及が進み、担当チームは急速な拡大と成長への対応に精力的に取り組んできました。私たちもそこに加わり、一般的なユース ケースやシナリオの把握にかなりの時間を費やしてきました。チームが特に力を入れたのは、新しいアーキテクチャとバックエンド サービスへの移行で、それによってリソースの消費を半分に抑えながら 2 倍のパフォーマンス向上を実現しました。大胆な基本目標を設定したため、チームはまずソフトウェアの重要な部分を再構築して、グローバルなつながりとコラボレーションを実現できるようにする必要がありました。新しい Teams クライアントに行った改良の詳細については、Teams ブログを参照してください。
ご協力いただいた皆さまに感謝を申し上げるとともに次のステップへ
更新の際には、私たちは常にパフォーマンス、効率性、信頼性を向上させることに注力しており、その成果を皆様に直接お届けできることを嬉しく思います。世界中には 10 億人を超える Windows ユーザーがいらっしゃいます。その Windows の改善にご協力いただいている Windows Insider コミュニティの皆様に、心より感謝申し上げます。引き続きフィードバックへのご協力をお願いいたします。今年も多くの改善を予定しています。皆様の Windows エクスペリエンスが更新のたびに優れたものになるように、これからも尽力していきます。
Join the conversation
Please sign in to comment