Protected Audience オークションは、視覚的に、または Perfetto を使用した SQL クエリによって分析できます。広告テクノロジーは、Perfetto でプロファイリングを使用して、次のような Protected Audience のオークションのパフォーマンスを測定できます。
- 入札スクリプトとスコアリング スクリプトの CPU 時間
- Key-Value サービスなどの HTTP リクエストのレイテンシ
- コールド キャッシュとホット キャッシュのパフォーマンスへの影響
- カスタム オーディエンスの増加と減少
- 大規模なシグナルセットと小規模なシグナルセット
- すべての入札に共通のスクリプトを使用する場合と、カスタム オーディエンスごとに異なる入札ロジック スクリプトを使用する場合の比較
セットアップ
Perfetto とプライバシー サンドボックスのリポジトリのクローンを作成します。
git clone https://android.googlesource.com/platform/external/perfetto
git clone https://github.com/android/privacy-sandbox-samples
Android Studio で、
privacy-sandbox-samples/Fledge/FledgeKotlin
ディレクトリから Protected Audience のサンプルアプリを開きます。テストデバイスまたはエミュレータにサンプルアプリをビルドしてインストールします。
オークションを実行して Perfetto トレースを行う
- テスト HTTPS エンドポイントをセットアップしてデプロイします。ホストされているエンドポイントの URL は Protected Audience デモアプリの動作に必要なためメモしておきます。
テスト エンドポイント URL を指定してデモアプリを起動します。
<test-endpoint-url>
は、前の手順でメモしておいたホストされているエンドポイントの URL に置き換えます。adb shell am start -n com.example.adservices.samples.fledge.sampleapp/.MainActivity \ -e baseUrl "<test-endpoint-url>"
[Shoes CA] を切り替えて、少なくとも 1 つのカスタム オーディエンスがアクティブであることを確認します。
<ph type="x-smartling-placeholder">プライバシー サンドボックス DevTools GitHub リポジトリにある trace_config.textproto ファイルを使用してトレースを記録します。
./perfetto/tools/record_android_trace \ -c path/to/trace_config.textproto
[Run Ad Selection] ボタンをタップして、オークションの結果を待ちます。オークションが完了すると、出力に [Would display ad from
http://example.com/bidding/render_shoes
] などのメッセージが表示されます。ターミナルで
record_android_trace
プログラムを停止(Ctrl+C)してトレースを終了します。ブラウザで Perfetto UI が開き、トレースデータが読み込まれます。
Perfetto でトレースを視覚的に探索する
UI の上部にあるアドレスバーを使用して「RunOnDeviceAdSelection」を検索します。Enter キーを押して検索を実行し、結果を表示します。
<ph type="x-smartling-placeholder">トレースをクリックして詳細を確認します。実行レイテンシなどの詳細についてはここで確認できます。
<ph type="x-smartling-placeholder">
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 の実行における平均実行レイテンシを測定する方法について説明します。
- Perfetto で、左側のナビゲーション ペインの [Query (SQL)] に移動します。
次のクエリを入力します。
SELECT AVG(dur) FROM slice WHERE slice.name GLOB 'FetchPayload';
クエリを実行して結果を確認します。
<ph type="x-smartling-placeholder">