Protected Audience オークションのプロファイリング

Protected Audience オークションは、視覚的に、または Perfetto を使用した SQL クエリによって分析できます。広告テクノロジーは、Perfetto でプロファイリングを使用して、次のような Protected Audience のオークションのパフォーマンスを測定できます。

  • 入札スクリプトとスコアリング スクリプトの CPU 時間
  • Key-Value サービスなどの HTTP リクエストのレイテンシ
  • コールド キャッシュとホット キャッシュのパフォーマンスへの影響
  • カスタム オーディエンスの増加と減少
  • 大規模なシグナルセットと小規模なシグナルセット
  • すべての入札に共通のスクリプトを使用する場合と、カスタム オーディエンスごとに異なる入札ロジック スクリプトを使用する場合の比較

セットアップ

  1. Perfetto とプライバシー サンドボックスのリポジトリのクローンを作成します。

    git clone https://android.googlesource.com/platform/external/perfetto
    git clone https://github.com/android/privacy-sandbox-samples
    
  2. Android Studio で、privacy-sandbox-samples/Fledge/FledgeKotlin ディレクトリから Protected Audience のサンプルアプリを開きます。

  3. テストデバイスまたはエミュレータにサンプルアプリをビルドしてインストールします。

オークションを実行して Perfetto トレースを行う

  1. テスト HTTPS エンドポイントをセットアップしてデプロイします。ホストされているエンドポイントの URL は Protected Audience デモアプリの動作に必要なためメモしておきます。
  2. テスト エンドポイント URL を指定してデモアプリを起動します。<test-endpoint-url> は、前の手順でメモしておいたホストされているエンドポイントの URL に置き換えます。

    adb shell am start -n com.example.adservices.samples.fledge.sampleapp/.MainActivity \
      -e baseUrl "<test-endpoint-url>"
    
  3. [Shoes CA] を切り替えて、少なくとも 1 つのカスタム オーディエンスがアクティブであることを確認します。

    <ph type="x-smartling-placeholder">
    </ph> [Shoes CA] が切り替えられている Protected Audience デモアプリのスクリーンショット。
    Protected Audience デモアプリ
  4. プライバシー サンドボックス DevTools GitHub リポジトリにある trace_config.textproto ファイルを使用してトレースを記録します。

    ./perfetto/tools/record_android_trace \
      -c path/to/trace_config.textproto
    
  5. [Run Ad Selection] ボタンをタップして、オークションの結果を待ちます。オークションが完了すると、出力に [Would display ad from http://example.com/bidding/render_shoes] などのメッセージが表示されます。

  6. ターミナルで record_android_trace プログラムを停止(Ctrl+C)してトレースを終了します。ブラウザで Perfetto UI が開き、トレースデータが読み込まれます。

Perfetto でトレースを視覚的に探索する

  1. UI の上部にあるアドレスバーを使用して「RunOnDeviceAdSelection」を検索します。Enter キーを押して検索を実行し、結果を表示します。

    <ph type="x-smartling-placeholder">
    </ph> Protected Audience オークションを調べている Perfetto UI。RunOnDeviceAdSelection や RunBidding などのトラックが表示される。
    Perfetto での単一購入者の Protected Audience オークション
  2. トレースをクリックして詳細を確認します。実行レイテンシなどの詳細についてはここで確認できます。

    <ph type="x-smartling-placeholder">
    </ph> トレース セグメントの詳細を表示している Perfetto UI。レイテンシの詳細が表示されています。
    トレース セグメントを調べる

Protected Audience 固有のトレース セグメント

Protected Audience オークションは複雑なプロセスであり、Perfetto トレースがキャプチャするセグメントは数多くあります。次の表は各トレース セグメントの内容をまとめたものです。

タイミング セグメント 説明 頻度
オークション前 RunOnDeviceAdSelection オークションのエンドツーエンド オークションごと
入札(バイサイド) FilterContextualAds コンテキスト広告でアプリ インストールとフリークエンシー キャップ フィルタリングを実行する オークションごと
GetBuyersCustomAudience データベースから購入者のカスタム オーディエンスを読み込む 購入者ごと
FilterCustomAudiences カスタム オーディエンスでアプリ インストールとフリークエンシー キャップ フィルタリングを行う オークションごと
GetTrustedBiddingSignals 購入者の入札シグナルを読み込む 購入者ごと
RunBiddingPerCustomAudience 単一のカスタム オーディエンスの広告入札 カスタム オーディエンスごと
GetBuyerDecisionLogic ネットワークまたはデータベースから購入者の JavaScript を読み込む(キャッシュされている場合) カスタム オーディエンスごと
RunBidding 購入者の JavaScript の実行 購入者ごと
GenerateBids カスタム オーディエンスの JavaScript の実行 カスタム オーディエンスごと
スコアリング(セルサイド) GetTrustedScoringSignals 販売者のスコアリング シグナルを読み込む 販売者ごと
RunAdScoring スコアリングの JavaScript の実行 オークションごと
ScoreAd 広告の JavaScript の実行 広告ごと
GetAdSelectionLogic 販売者の広告選択ロジックを読み込む オークションごと
RunAdOutcomeSelection 最後のフィルタリング オークションごと
オークション後 PersistOnDeviceAdSelection オークションの結果をデータベースに書き込む オークションごと

平均実行レイテンシのクエリ

Perfetto では SQL クエリを使用して、特定のトレースで何が起こっているかを正確に測定できます。

このセクションでは、JavaScript の実行における平均実行レイテンシを測定する方法について説明します。

  1. Perfetto で、左側のナビゲーション ペインの [Query (SQL)] に移動します。
  2. 次のクエリを入力します。

    SELECT AVG(dur)
    FROM slice
    WHERE slice.name GLOB 'FetchPayload';
    
  3. クエリを実行して結果を確認します。

    <ph type="x-smartling-placeholder">
    </ph> SQL クエリ結果。平均レイテンシは 17,693,688 ナノ秒です。
    ナノ秒単位の SQL クエリ結果。