2016年6月28日 9:51 AM

電源効率のよい Web ブラウジングに向けて

※本ブログは、Windows Blog “Building a more power efficient browser” の抄訳です。

Jason Weber が執筆した、Windows 10 における Microsoft Edge とその他主要ブラウザーの電力効率の比較に関するブログ記事 “Get more out of your battery with Microsoft Edge” (英語) が Windows Experience ブログで公開されています。マイクロソフトは、Windows 10 Anniversary Update でこの性能をさらに高め、一般的なワークロードを Microsoft Edge で実行した場合のバッテリ持続時間を延ばそうと精力的に取り組んでいます。

今回の記事では、バッテリ持続時間と消費電力に関する複雑な問題へのアプローチについて解説し、Windows 10 Anniversary Update の Microsoft Edge の電力効率を改善するための取り組みを具体的にご紹介します。

電力効率の測定方法

電力効率の改善は、管理されたラボ環境で繰り返しテストを実施することから始まります。マイクロソフトには “lab specifically designed for measuring power consumption” (英語) があり、最新ビルドの Windows 10 と Microsoft Edge を検証しています。このような環境で、さまざまなワークロードをさまざまな PC で実行した場合のパフォーマンスを測定しています。

マイクロソフトの消費電力測定用ラボ環境

マイクロソフトの消費電力測定用ラボ環境

マイクロソフトでは、デスクトップ、ノート PC、タブレット、スマートフォンなど、幅広い種類の Windows ハードウェアについて消費電力を測定しています。消費電力に大きな影響を与えるのはプロセス アーキテクチャや画面サイズですが、ヒート シンクや機械式ファンなどの物理特性も無視できません。そういう意味では、広範に電力効率を向上させることがすべてのユーザーにとって重要となります。

ラボ環境では、下図の Surface Pro 3 のようにデバイスを特殊な電力モニターに接続し、リアルタイムの消費電力をミリワット単位で測定します。さまざまなデバイスでさまざまなワークロードを実行し、それぞれの消費電力を正確に測定しています。

Surface Pro 3 を測定機器に接続してリアルタイムの消費電力を測定。Surface Pro 3、Surface Pro 4、Surface Book など、さまざまなデバイスで消費電力をテストしています。

Surface Pro 3 を測定機器に接続して、消費電力をリアルタイムで測定。Surface Pro 3、Surface Pro 4、Surface Book など、さまざまなデバイスでの消費電力をテストしています。

また、Windows Event Tracing (英語) を通じて、詳細な診断情報を記録しています。これにより、ソフトウェア内部で何が実行されているかを把握し、その内容とデバイスごとの消費電力との相関を調べることができます。この作業では特に Microsoft Edge やWeb サイトの HTML、CSS、JavaScript に注目しています。

ラボ環境では、管理された環境下で再現性のある結果を得て即座に対応することができます。このため、改良結果の検証や不具合の特定を行い、コードの修正によって Windows と Microsoft Edge の改良が進んでいるかどうかをその都度確認できます。

ユーザーのテレメトリによる電力効率の把握

私たちの目標はユーザーのために電力効率を改善することであり、デバイスで実際に起こっていることを把握することはとても重要です。そのため、バッテリ駆動の Windows 10 デバイスでは、ハードウェア、アプリ、サービスの消費電力を追跡する Windows Energy Estimation Engine (E3) (英語) が実行されています。この Energy Estimation Engine によりバッテリの節約に関する推奨事項がユーザーに提示され、バッテリ持続時間を細かく制御できるようになっています。また、追跡結果は集約されて Windows テレメトリ システムからマイクロソフトに送信され、Windows エコシステムの改良 (英語) に活用されます。

Surface ファミリなどの多数の最新 Windows マシンには、消費電力計測用の特殊なハードウェア (英語) が搭載されています。このハードウェアによる消費電力の測定精度は 98% です。精度 85% のシステム ソフトウェアによる測定や、実際の消費電力とはほとんど相関性のないアプリケーション ソフトウェアによる測定 (英語) と比べると、非常に高い精度で測定できます。

Microsoft Edge の電力効率に関するデータは、数多くの Windows デバイスが生成する膨大なデータ ポイントのレポートから集約され、毎月マイクロソフトに送信されています。この中にはきわめて重要な情報が含まれており、マイクロソフトは特に、測定用の特殊なハードウェアによって計測されたテレメトリ データに注目しています。98% の精度というのはなかなか得られるものではないからです。

毎日 JavaScript のガベージ コレクションで何ジュールの電力量が消費されているか、考えてみたことはあるでしょうか。マイクロソフトはパフォーマンス、消費電力、メモリ使用量などについて、このように多面的に考慮しながら Microsoft Edge を最適化しています。精度の高いデータを使用することで、消費電力に関するトレードオフが明確になり、明確に対処できるようになります。

テレメトリデータ

マイクロソフトでは、Windows Insider の各ビルドについて、過去のビルドと Windows のリリース後のバージョンの消費電力を比較しています。このテレメトリ データを使用して、新機能やコード変更によって消費電力が増加していないかどうかや、電力効率の改善を狙った新機能の成果が表れているかどうかを確認します。Windows Insider Program を通じて技術的な検証を行う中で、Microsoft Edge はリリースごとに着実に改良されていることが明らかになっています。

Windows 10 Anniversary Update での電力効率の改善

ユーザーのテレメトリ データの分析や管理されたラボ環境での実験に基づいて、Windows 10 Anniversary Update には電力効率に関して多数の機能強化が行われています。これらの機能強化は Microsoft Edge に組み込まれているため、ユーザーは設定を変更したり省電力モードをオンにしたりする必要なく、面倒な手間をかけることなく、電力効率が改善された Microsoft Edge を使用できます。

以降のセクションでは、消費電力の最適化の効果が表れている 4 つのポイントをご紹介します。

1. バックグラウンド タブの電力効率を改善

Web サイトの読み込みは完了しているもののブラウザーには表示されずに、バックグラウンドで JavaScript が実行されていることがよくあります。Web には多様な機能があり、このようなサイトでは新着メールの確認、広告メトリックスの分析、アニメーションの表示などのさまざまな処理が実行されています。このため、多数のバックグラウンド タブを同時に開くと CPU 使用率が必要以上に増大し、コンピューターの速度低下やバッテリ使用量の増加を招きます。Insider Program 参加者の方からは Microsoft Edge の CPU 使用率が予想以上に高くなるという報告が寄せられることがありますが、バックグラウンド タブがその原因となっているケースが少なくありません。

Anniversary Update では、Microsoft Edge のバックグラウンド タブでの JavaScript タイマーの実行が 1 秒に 1 回のみに制限されます。さらに重要なこととして、これらのタイマーが Windows で実行されている他のタスクと統合されます。Microsoft Edge のタスクは、実行時にハードウェアが起動されることはなく、システム全体で実行されている他のタスクと合わせてタグ付けされることで、迅速に CPU を解放して、ハードウェアを低電力状態に移行させます。

電力節減の効果は閲覧中の Web サイトによって変わりますが、一部のシナリオでは消費電力が 90% 以上削減されることが確認されています。

このようにしてバランスを取ることで、サーバーへの接続を維持し、新着メールの確認や音楽の再生、分析の実行など必要なタスクを行いながら、システムの速度向上とバッテリの節約を実現します。

節減の効果は閲覧中の Web サイトによって変わりますが、一部のシナリオでは消費電力が 90% 以上削減されることが確認されています。下図を見ると、8 つの主要な Web サイトをバックグラウンド タブで開いたときの CPU 使用率が改善されたことがわかります。

バックグラウンドで 8 つの主要 Web サイトを開いたときの CPU 使用率

バックグラウンドで 8 つの主要 なWeb サイトを開いたときの CPU 使用率

2. Flash の効率を改善

Flash 広告はインターネット上では一般的なものですが、アニメーションが常に動作しているため、継続的に CPU や GPU、ディスプレイ リソースを消費することなどによりバッテリ使用量が多くなります。Anniversary Update では既定で Flash が独立したプロセス内で実行され、ページ内で重要度の低いコントロールは一時停止されます。Flash を操作したい場合は、コントロールをクリックするだけで操作できます。

また、Flash が独立したプロセスで実行されるため、Flash のリソースに対する影響を監視し制御することができます。Flash のリソース消費量が多すぎる場合や、プロセスがクラッシュする場合は、Web サイトに影響を与えることなく Flash 処理を停止させることができます。

3. Microsoft Edge のユーザー インターフェイスの効率を改善

Microsoft Edge のユーザー インターフェイスは、電力効率改善のために最適化されています。Windows 10 と Microsoft Edge のデザイン思想の中でアニメーションは重要な位置を占めていますが、アニメーションは必要以上に使用されるとかなりの量の電力を消費します。

電力効率改善のための最適化の 1 つとして、閲覧モード ボタンのアニメーションが刷新されます。

読み取りビューのアニメーションの微調整

これまで、閲覧モード ボタンは 120 フレームのアニメーションで構成され、フレームを更新するたびに、負荷が大きい XAML レイアウトと表示の更新が実行されていました。下図は、このアニメーションによる GPU 使用率の一例です。

読み取りビューのアニメーションの微調整

読み取りビューボタンのアニメーションの GPU 使用率

このアニメーションに関して、弊社では複数の改良を実施しました。

  • アニメーションの各ループの最初と最後のフレームが同一であったため、フレームを更新しても表示が変わっていませんでした。これを最適化し、40% のフレームを削除しました。
  • 従来の XAML アニメーションをタイマー制御の GPU transform に切り替え、viewport を使用してアニメーションを処理するようにしました。これにより処理が完全に GPU で実行されます。
  • 上記の改良とその他の最適化を組み合わせることで、GPU 使用率を約 75%、CPU 使用率を 100% 削減し、消費電力への影響をほぼゼロにしました。

Anniversary Update では、このアニメーションの GPU 使用率は下図のようになっています。

Windows 10 Anniversary Update での読み取りビューボタンのアニメーションの GPU 使用率

Windows 10 Anniversary Update での読み取りビューボタンのアニメーションの GPU 使用率

大幅に改善されていることがお分かり頂けるかと思います。ミリワット単位で隅々まで最適化されているため、ユーザー インターフェイス全体でこれだけの改善が実現されています。

4. Windows のネットワーク機能の効率を改善

Microsoft Edge は Windows プラットフォーム上に構築されているので、Windows 全体の消費電力が最適化されれば、その恩恵を受けることができます。Windows 10 Anniversary Update ではさまざまなネットワーク機能が改良されており、パフォーマンスや効率が向上すると共に消費電力も削減されています。

新機能の TCP Fast Open (TFO) により、デバイスとサーバー間の接続の確立に必要なメッセージ数が減り、セットアップが高速になります。また、TCP スタックの初期輻輳ウィンドウ (ICW) が最適化されたことで、最大メッセージ サイズが拡張され、サーバーとの通信のメッセージ数が減ります。メッセージ数が減ると Wi-Fi アンテナの使用時間が短くなり、消費電力が削減されます。

さらに、Tail Loss Probe (TLP) という機能と Recent Acknowledgement (RACK) という機能が追加され、損失パケットの修正に必要な時間が短縮されます。メッセージがタイムアウトしそうな場合に、通常のタイムアウトよりも早くデータの再送要求が送信されます。これにより、接続状況が悪いときに Wi-Fi アンテナのスイッチが切られるまでの時間が短くなります。

次のステップ

この取り組みはまだまだ続きます。電力効率の改善に終わりはありません。今後のリリースでも引き続き、同様の投資を行ってまいります。今回ご紹介した改良は、現在 Windows Insider Program でプレビューとして提供されており、この夏の Windows 10 Anniversary Update ですべての皆様に向けてリリースされます。

Brandon Heenan
Microsoft Edge 担当プログラム マネージャー