分析 Protected Audience 竞价

您可通过直观的方式或借助 SQL 查询通过 Perfetto 来分析 Protected Audience 竞价。广告技术平台可以将性能分析和 Perfetto 相结合,以衡量 Protected Audience 竞价的效果,包括:

  • 出价和评分脚本 CPU 时间
  • HTTP 请求(例如键值对服务)的延迟时间
  • 冷缓存与热缓存的性能影响
  • 自定义受众群体数量的多少
  • 信号组的大小
  • 以下两种方式的比较:针对所有出价使用同一出价逻辑脚本,或针对每个自定义受众群体使用不同的出价逻辑脚本

设置

  1. 克隆 Perfetto 和 Privacy Sandbox 仓库。

    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 端点。记下托管端点的网址,因为 Protected Audience 演示版应用需要这些端点才能正常运行。
  2. 使用指定的测试端点网址启动演示版应用。将 <test-endpoint-url> 替换为您在上一步中记录的托管端点网址。

    adb shell am start -n com.example.adservices.samples.fledge.sampleapp/.MainActivity \
      -e baseUrl "<test-endpoint-url>"
  3. 切换“Shoes CA”,确保至少有 1 个自定义受众群体处于活跃状态。

    演示版应用的屏幕截图。已切换“Shoes CA”。
    图 1. Protected Audience 演示版应用。
  4. 使用 Privacy Sandbox 开发者工具 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. 在终端中,终止 (CTRL+C) record_android_trace 程序以完成轨迹。Perfetto 界面会在浏览器中打开并加载轨迹数据。

在 Perfetto 中直观地探索轨迹

  1. 在界面顶部的地址栏中搜索“RunOnDeviceAdSelection”。点击 Enter 完成搜索并显示结果:

    Perfetto 界面:查看 Protected Audience 竞价。您可以看到 RunOnDeviceAdSelection 和 RunBidding 之类的轨迹。
    图 2. Perfetto 中的单一买方 Protected Audience 竞价。
  2. 点击某个轨迹即可仔细检查它。此处提供了执行延迟时间等详细信息。

    Perfetto 界面中显示正在检查轨迹片段。您可以看到延迟时间详情。
    图 3. 检查轨迹片段。

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. 运行查询并检查结果。

    SQL 查询结果。平均延迟时间为 17693688 纳秒。
    图 4. 以纳秒为单位的 SQL 查询结果。