事例紹介

Datadog、ProfilingManager で数百万件の詳細なパフォーマンス分析情報を提供

所要時間: 4 分

パフォーマンスの低下は再現が難しいことで知られており、モバイル デベロッパーにとって大きなボトルネックとなっています。ANR 発生率などのシグナルは、本番環境で発生している問題の内容を示しますが、パフォーマンスの問題の原因となった特定のコード行を特定するには、これまで、徹底的な手動再現や推測に基づく試行錯誤が必要でした。

Datadog は Google と協力して、ProfilingManager API(Android 15 以降のデバイスで利用可能)を Real User Monitoring(RUM)プラットフォームと Continuous Profiling プラットフォームに統合することで、この不満を軽減しました。この統合により、デバッグ ワークフローが変革され、開発者は表面的な症状だけでなく、パフォーマンス ボトルネックの理由を検出できるようになります。

このシステムレベルの API を活用することで、Datadog は現在、世界中で毎週数百万件の本番環境プロファイルを処理しています(2026 年 6 月の Datadog 内部データに基づく)。これにより、エンジニアリング チームは、本番環境規模のパフォーマンス モニタリングのランタイム オーバーヘッドを低く抑えながら、実際のパフォーマンスを新たなレベルで可視化できます。

ProfilingManager の影響

ProfilingManager は、Android 15 で導入されたシステム サービスです。アプリは、コールスタック サンプル、フィールド トレース、メモリ ヒープダンプなどのパフォーマンス データを本番環境から直接プログラムで収集できます。この機能により、エンジニアリングのパラダイムが、事後対応型の手動再現から事前対応型のフィールド分析に移行します。

AANDDM_DataDog_Quote_01.png

たとえば、Google のコミュニケーション アプリでは、フィールド トレースを使用して、より新しく、より強力なハードウェアでコールド スタート時間が遅くなる理由を調査しました。フィールドで収集されたトレースを詳しく調べ、異なるデバイスタイプ間でトレースを比較することで、エンジニアは隠れたスケジューリングの問題を発見しました。それは、アプリの起動時にバックグラウンドのテキスト読み上げサービスが不必要にプリウォーミングされていたことです。トレースにより、このバックグラウンド プロセスがデバイスの最もパフォーマンスの高い big CPU コアを独占し、プリウォームの実行中にアプリのメインスレッドがスリープ状態になっていることが判明しました。

Android のコードレベルの可視性の課題を解決する

ProfilingManager の実装前、Datadog の Real User Monitoring(RUM)は、ユーザー ジャーニーを評価するために、高レベルのアプリケーションの健全性とセッション レベルのテレメトリーに重点を置いていました。エンジニアリング チームは、初期表示までの時間、ANR 発生率、CPU 負荷、フリーズしたフレームなどの Android のパフォーマンス シグナルをモニタリングできます。これらの分析情報は、ネットワーク レイテンシ、タッチイベント、メインスレッドのハングなど、きめ細かいインタラクションにまで及びます。しかし、このデータは、現場で発生しているパフォーマンスのボトルネックを効果的に浮き彫りにしたものの、これらの障害の根本原因を特定するための明確な道筋は示していませんでした。

AANDDM_DataDog_Quote_02.png

この課題に対処するため、Datadog は、パフォーマンスへの影響を最小限に抑えながら、本番環境のデバイスから直接 Android トレースをキャプチャできるプロファイリング エンジンを必要としていました。Android Debug API を使用して独自のトレース プロセッサを作成するなど、代替アプローチを評価した結果、チームは ProfilingManager を選択しました。これは、評価したプロファイリング オプションの中で最もパフォーマンスの高いソリューションであり、サンプリングの決定に関するオーバーヘッドを OS にオフロードできるためです。

ProfilingManager は、CPU トレース、コールスタック サンプリング、Java ヒープダンプとネイティブ ヒープ プロファイルによるメモリ分析など、幅広い収集方法をサポートしています。デベロッパーは、製品版ビルドのプロファイリング、外部ストレージへのトレース ファイルのアップロード、Perfetto トレース アナライザ UI でのトレース ファイルの確認を行うことができます。SaaS プロバイダである Datadog は、SDK を介して収集されたこれらのプロファイルをアップロード、可視化、分析し、アプリケーションの健全性を一元的に把握できるようにします。

ProfilingManager は、高忠実度のテレメトリーを統合された Observability API 内に一元化することで、Datadog とそのクライアントが、複雑な Android のパフォーマンス低下をプロアクティブにモニタリング、調査、修正できるようにします。その主な技術的利点は次のとおりです。

  • 詳細なセッション診断: ProfilingManager は、OS レベルのトレースデータを直接提供することで、デバッグのしやすさを向上させます。これにより、システム サービスを使用したカスタム ロギングでよく見られる、可視性と整合性の課題を克服できます。さらに詳しく調査するために、デベロッパーは Datadog からこれらのトレースをダウンロードして、Perfetto UI などの可視化ツールでさらに調査できます。
  • 自動化されたテレメトリー トリガー: Datadog は、ネイティブ システム イベントを活用して、最適化の重要なポイントでトレースの記録を開始するため、カスタムの収集ロジックを構築する必要性が軽減されます。初期のロールアウトでは APP_FULLY_DRAWN シグナルに重点を置いていますが、このオブザーバビリティを拡張して、ANR、OOM、COLD_START トリガーを含める計画がすでにあります。
  • プロアクティブなトレース スナップショット: ProfilingManager は、システムレベルの Perfetto サービス(traced)と直接インターフェースすることで、予測できない問題をキャプチャするように設計されたプロアクティブなバックグラウンド記録モデルを利用します。これにより、デベロッパーはパフォーマンス異常につながるイベントを正確に可視化でき、手動のインストルメンテーションでは不可能なレベルの分析情報を得ることができます。
  • 大規模なボトルネック検出: Datadog は、Datadog のグローバルな顧客ベースからテレメトリーを合成し、独自のハードウェア構成や変動するネットワーク環境でのみ発生する回帰を検出できます。
  • システムによるリソースの安定性の確保: この API は、サンプリング トレース収集を活用して、パフォーマンスとユーザー エクスペリエンスへの影響を最小限に抑えます。
  • デバイス上のデータ コントロール: ProfilingManager は、プロファイルがアプリに配信される前に、デバイス上の他のプロセスから無関係な情報をフィルタします。これにより、ファイルサイズが最小限に抑えられ、アプリのプロセスに関連するデータのみが提供されます。

毎週数百万件のプロファイルを処理して、実際のアプリを最適化

datadog-profiling-blogpost-final.png
ProfilingManager を利用したスタック サンプリングによる Datadog の初期表示までの時間の測定例

システムレベルのプロファイリング API をグローバル モニタリング SDK に統合するには、インフラストラクチャの課題を解決する必要がありました。ProfilingManager は非常に詳細なパフォーマンス トレースを生成するため、Datadog のエンジニアリング チームは、これらのプロファイルをサーバー側で大規模に解析して分析できるパイプラインを構築する必要がありました。Datadog は、プロファイルの収集だけでなく、サンプリング頻度と、アプリケーションに関する有意義な分析情報を生成するのに十分なデータの収集とのバランスを取ることの重要性も強調しています。Datadog は、重要な安定性保護機能として ProfilingManager の組み込みのレート制限に依存しており、過剰なテレメトリー リクエストがユーザーのデバイスに過度の負担をかけるのを防いでいます。

チームは、Datadog 独自のネイティブ Android アプリケーションと、数多くのアーリー アドプターのアプリケーションを数か月にわたってプロファイリングし、数百万のプロファイルを収集して、エラーのない迅速な起動エクスペリエンスを実現し、パフォーマンス検出アルゴリズムを改良してきました。現在、本番環境の統合は、さまざまな Android デバイスにシームレスにスケーリングされています。

まとめ

Datadog は、Android の ProfilingManager API を統合することで、バックエンド システムとモバイル クライアント アプリケーションの間の可視性のギャップを解消することに成功しました。Datadog は、デバイスのオーバーヘッドを無視できるレベルに抑えながら、毎週数百万のプロファイルを処理することで、複雑なパフォーマンス バグを即座に診断するために必要なコードレベルの分析情報を Android デベロッパーに提供します。これにより、デベロッパーはよりスムーズなアプリケーションを構築し、Google Play ストアでのアプリのパフォーマンス シグナルを改善できます。ProfilingManager API をパフォーマンス オブザーバビリティ フレームワークに直接導入するには、ドキュメントをご覧ください。

Datadog は、Android プロファイリング データをコーディング エージェントのファーストクラスの入力として、パフォーマンスのボトルネックを自律的に解決し、検出と修復のフィードバック ループを閉じることを目指しています。Datadog は、Android プロファイリングをデベロッパーが広く利用できるように取り組んでいます。

ProfilingManager を利用した Datadog のリアルユーザー モニタリング機能の使用を開始するには、Datadog Mobile Real User Monitoring をご覧ください。

作成者:
続きを読む