Windows 7 でのオーディオの不具合に対する回復力の向上

PC 上で優れたオーディオの再生をもたらすことは、「みかけよりもはるかに難しい」技術的な課題のひとつです。専用のオーディオ機器やビデオ機器と異なり、 PC ではオーディオの再生中にもさまざまなことが起きており、とてつもないハードウェアとソフトウェアの組み合わせの環境下で再生は行われています。みなさんの多くは、時々生じる「グリッチ ( 音飛びや画像飛びの不具合 ) 」についてご存じでしょう。この投稿では、 Device and Media チームのプログラムマネージャーである Kristin Carr が、 Windows 7 でのこの分野で向上した点について、チームのメンバーを代表して説明します。プロダクトサイクルの初期に私が学んだことは、「不具合ゼロ」よりも「不具合からいかに早く回復するか」が大事だということですが、みなさんもこれを読んでお分かりいただけると幸いです。 --Steven

みなさんは MP3 や DVD を再生するために PC を使用したことはありますか? はいと答えた人は、映画を見る、ゲームをする、YouTube のクリップを見るなどさまざまなオーディオおよびビデオ アプリケーション用にコンピューターを使用している PC ユーザーの圧倒的大多数のひとりです。しかし、オーディオやビデオがちゃんと再生されない- おそらく、ビデオが少しガクガクしたり、オーディオが途切れたりといった経験もお持ちだと思います。この再生エクスペリエンスを中断させるような、オーディオやビデオにおける認識できる途切れを、「グリッチ (glitch)」と呼んでいます。グリッチの原因となるエコシステムの課題を分析し、Windows 7 のエクスペリエンスを向上させるために私たちが取り組んできたことについてお話していきます。

何がグリッチを引き起こすか ?

これまでの投稿で、Windows 7 に対して私たちが取り組んできたさまざまなエコシステムのイニシアチブや課題について、とりわけ アプリケーションの互換性アクセシビリティ、および システムのパフォーマンス について述べてきました。オーディオのグリッチの根本的な原因を調査しても、同じような場所に行き着きます。なぜなら、Windows は多様なハードウェア構成および 10個以上のアプリケーションによるマルチタスクの上で動いており、コンピューター上で動作しているすべてのプログラムやドライバーがきっちり期待通りに機能しているかどうかを確かめるのは至難の業です。

オーディオは特に繊細です。スピーカーから音楽を聴くには、データがオーディオ ハードウェアへ約 10 ミリ秒ごとに送られなければなりません。これは、まばたきの 30倍の回数です! 難題は、音楽を聴いている間にも、PC は TouTube のビデオを流したり、新曲をダウンロードしたりとたくさんのことを行っており、しかもその多くは複雑なタイミングを要求するということです。ご想像のとおり、遅いネットワーク ドライバーや長大な CPU 時間を必要とするグラフィックス ドライバーなどが、連続してオーディオが耳に届くのを妨げるのはわけないことです。

では、この難題へ対処するために私たちが行ったことは何でしょう? 答えは「たくさん!」です。そして、このブログの残りは、それらの説明に充てます。

  1. 問題を特徴づけるためのデータを収集する
  2. グリッチを検出して解析するための系統的な方法を開発する
  3. テストやツールを Microsoft と Windows パートナーの双方で広く展開する
  4. グリッチの問題を検出、診断、修正するためにパートナーと協働する

誰がグリッチを経験しているか ?

Windows 7 の開発サイクル中にこの研究をするにあたり、まず手をつけなければならない仕事はデータの収集でした。オーディオ グリッチに関する報告は聞いていましたが、問題の正確な範囲はわかりませんでした。ユーザーはどのくらいの頻度でオーディオ グリッチを聞いているのか? 他と比較してパフォーマンスの悪い特定マシンはあるのか? これらの質問を念頭に、問題をより理解するために着手しました。

私たちは、Windows に組み込まれている テレメトリー (遠隔測定) のインフラ を使用して、データを集めました。テレメトリーは、ユーザーが、OSの改良に役立つパフォーマンス データやその他統計情報を Microsoft へ折り返し報告できるようにするものです。Microsoft へデータを提供すると選択したマシンで、オーディオ ハードウェアがデータを待ち望んでいる時 (すなわち、ユーザーがグリッチを聞いたであろう時) の回数を測定しました。このデータは「セッション (ひとつのマシンで 1日の間に集められたデータ、またはマシンがリブートする間に集められたデータの、いずれか短い方)」にまとめられました。

では、その結果を見ていきましょう。まずは、オーディオ グリッチの全体的な割合です。

Figure 1: Distribution of Glitch Counts per Session

図 1: セッションごとのグリッチ数の分布

上のグラフは、外部 (Microsoft 以外の) RC ユーザーからのデータを示しています。 約 80% のセッションは全くグリッチがありません。しかし 4.3 % は 10 回以上のグリッチがあり、これはかなりの数のユーザーがオーディオ グリッチの影響を受けていることを示しています。

グリッチの発生頻度を把握したら、今度は「なぜ」それが発生するのかを調べ始めました。まず、ノート PC とデスクトップ PC のフォーム ファクター別にデータを分類しました。

Figure 2: Glitching Likelihood by Form Factor

図 2: フォーム ファクター別グリッチの発生しやすさ

このデータから、ノート PC はオーディオ グリッチの経験しやすさが 2 倍近いことがわかりました。その結果、私たちのグリッチ テストや診断ツールでのカバレッジをよくするため、モバイル PC とモバイルのシナリオ (たとえば、バッテリー駆動中に音楽を再生する、など) をターゲットとして取り組むことにしました。

次に、PC メーカー別に、グリッチの発生しやすさを調べました。

Figure 3: Glitching Likelihood by PC Manufacturer (Mfr)

図 3: PC メーカー (Mfr) 別グリッチの発生しやすさ

このデータから、特定のメーカーは他のメーカーよりもオーディオ グリッチの疑いが高いことがわかりました。その結果、私たちのテスト活動が広範なマシンやメーカーにわたるようにしました。さらに、このデータを使用して、グリッチ発生率が高いコンポーネントや原因を特定できないか、メーカーと協力して作業しました。

最後に、さまざまな PC モデルでのグリッチを見ていきました。

Figure 4: Breakdown of All Glitch Sessions by PC Model

図 4: PC モデルごとのグリッチ セッションの分析結果

上のグラフにあるように、最低 1 回のグリッチがあったすべてのセッションを分析し、また上の表で示したように (実際のマシン名は伏せています)、PC メーカーや PC モデルと相関関係があるか見ていきました。最初に気づいたことは、Machine A はリストのほかのマシンに比べて 3 倍以上のオーディオ グリッチに関与しているということです。このデータは、先にあったこの特定マシンでのオーディオ グリッチの報告を裏付け、私たちは誤った構成で出荷されたグラフィック カードをつきとめました。その結果、メーカーと協力して構成を改善することができました。

このグラフはまた、問題がいかに広範囲に及んでいるか理解するのにも役立ちます。グリッチの形跡がある PC モデルは数百あります。実際、まったくオーディオ グリッチが発生していない PC モデルを探すほうが難しいくらいです。一方、個々のマシンのほとんどは、まったく問題が発生していません。私たちが導き出した結論は、オーディオ グリッチは何か 1 つのハードウェア構成が原因となっているのではなく、ユーザーが自分のマシン上で遭遇しうるさまざまなハードウェアとドライバー置換に依存する、ということです。いかなるマシンも無縁ではいられないことは明らかで、エクスペリエンスを向上するには、この問題に対する広範囲に及ぶシステム全体のソリューションが必要でした。

グリッチを診断するためのツールを開発する

いつ、なぜグリッチが発生するかのデータが集まったら、次に Windows Devices & Media Performance チームは、メディア再生シナリオに集中し、そのシナリオで PC がどの程度機能したか評価するような包括的なテスト一式を開発しました。メディアの再生中、このテストは、CPU 負荷、システム上のすべてのコンポーネントの動作状況とそれに対応する相互作用を含む、何千ものシステムのパフォーマンスに関する統計情報を記録します。私たちは意図的に広範なシナリオと構成、たとえばバッテリー電源で動いているノート PC、ストレス テスト中のハードウェア、何百ものメディア コンテンツの種類などをカバーしました。この目的は、各 PC を幅広いユーザーシナリオで試して、オーディオ グリッチを発見して分離することでした。

さらに、Devices & Media Performance チームは、グリッチと、グリッチが発生する前と発生している間の CPU の動作状況をハイライトするツールを作りました。これにより、発見したグリッチの問題を素早く診断できるようになりました。たとえば、下記の図が示すように、疑わしい動作を簡単に突き止めるため、グリッチが発生したときの視覚表示と、そのときに発生した関係する測定値を表示できます。

Figure 5: Example Graphical View of Audio Glitch Troubleshooting

図 5: オーディオ グリッチのトラブルシューティング用の図式的表示の例

このケースでは、4 つのオーディオ グリッチが見えます (一番上のパネルの赤い線の部分)。2 つ下のパネルでは、3ms より長くかかった CPU 呼び出し (長い ISR/DPC と呼ばれています) を表示しています。この例では、オーディオ グリッチと長い ISR/DPC との間に直接的な相関関係があることがわかります。ISR/DPC はオペレーティング システムによって実行されたプロシージャ コールで、CPU を独占してオーディオ グリッチを引き起こす恐れがあります。ここから、グリッチを削減または除去するために、このコールを行ったコンポーネントを突き止めます。この図には、先に述べた特定の問題を診断するために使用した情報以外にも、他の情報が含まれています。しかし、他のグリッチやメディアのパフォーマンス問題を幅広い情報源で診断するために、この情報および他の測定値が利用できる状態にあります。

ツールで作業にとりかかる

テストとツールの用意ができたら、次の手順として、できるだけ多くのシステム上でそれらを展開します。この取り組みの一環として、私たちは、OEM が PC を出荷時期の前にテストできるようにするという Windows 全体のイニシアチブに参加しています。何百もの OEM のマシンが Microsoft に送られ、Windows ラボにて、最高のユーザー エクスペリエンスであることを確認するための何千ものテストに使用されます。これが意味するのは、もし特定のマシンや構成でグリッチが起こりやすいことが分かったら、消費者がその新しい PC を目にする前に、OEM と協力して問題を修正できる、ということです。

これらのテストを実施して新しいツールでその結果を分析することにより、オーディオ グリッチの原因となりうる数百の問題を見つけることができました。あるケースでは、この分析により Windows のコードを変更することになりました。また別のケースでは、パートナーが開発したオーディオ グリッチを引き起こす可能性のあるコンポーネントを特定することができました。

Windows パートナーと協働する

ツールによって見つかった問題は、さまざまなパートナーのコンポーネントが関わっているケースが多いので、この作業の重要な局面はパートナーと協働することです。現在まで、メーカーが、自分たちのコンポーネントがどうシステム全体に影響するか知ることは、ほぼ無理でした。そこで、テストやツールを提供することにより、自分たちのコンポーネントがどう相互作用するか、ユーザーに対する最終的な影響はどのようなものかをパートナーが理解できるようにしました。

この取り組みの一環として、パートナーが新しいツールやテストを十分に活用できるようにしました。私たちは、OEM、ODM (= Original Design manufacturers、伝統的に OEM のために PC を組み立てるメーカーのこと)、ハードウェア メーカー、およびソフトウェア メーカーとお話ししてきました。プレゼンテーションや個別指導、ホワイト ペーパーを提供し、ビデオ会議も開催してきました。私たちの目標は、グリッチからの回復力があるソフトウェアやハードウェアをできるだけ簡単に作っていただけるようにすることでした。

まとめると、この取り組みでは以下のことを実行しました。

  1. オーディオグリッチの遠隔測定データを共有する。 パートナーはオーディオ グリッチの現象に対して、明確なデータを限られた範囲でしかお持ちではありません。私たちが収集したデータにより、問題を診断し、彼らの製品を向上するのに役立ちます。
  2. オーディオおよびビデオパフォーマンスのテスト一式を実行する。 OEM から送られてきた何百ものマシン上でテストをし、その結果をパートナーに知らせます。できるだけ多くのシステムを評価し、結果を提供することにより、オーディオ グリッチの原因に取り組み始めています。
  3. ツールとサポートを提供する。 パートナーが、自分たちのコンポーネントが PC 上で他のすべてとどう相互作用しているか理解し、オーディオ グリッチの原因となりうるわずかな問題に対し、より簡単に対処できるようにします。

今後について

最後に、私たちおよびすべての Windows パートナーは、同じお客様 (つまり、これを読んでいただいているみなさんです!) を共有しています。パートナーと協働し、これらの問題への注意を促し、オーディオ グリッチの根本的な原因を明らかにすることにより、すべての人のオーディオ エクスペリエンスを向上し続けていきます。