Protected Audience 입찰 프로파일링

Protected Audience 입찰은 시각적인 방법 또는 Perfetto를 사용한 SQL 쿼리 중 하나로 분석할 수 있습니다. 광고 기술은 Perfetto를 통한 프로파일링 방식을 사용하여 다음과 같은 Protected Audience 입찰의 실적을 측정할 수 있습니다.

  • 입찰 및 점수 스크립트 CPU 시간
  • HTTP 요청의 지연 시간(예: 키/값 서비스)
  • 콜드 캐시와 핫 캐시의 성능 영향 비교
  • 더 많은 맞춤 잠재고객과 더 적은 맞춤 잠재고객
  • 더 큰 신호 집합과 작은 신호 집합
  • 모든 입찰에 동일한 스크립트를 사용하는 것과 맞춤 잠재고객별로 다른 입찰 로직 스크립트를 사용하는 것 비교

설정

  1. Perfetto와 개인 정보 보호 샌드박스 저장소를 클론합니다.

    git clone https://android.googlesource.com/platform/external/perfetto
    git clone https://github.com/android/privacy-sandbox-samples
    
  2. Android 스튜디오의 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개 이상 있는지 확인합니다.

    데모 앱 스크린샷. Shoes CA가 전환되어 있습니다.
    Protected Audience 데모 앱
  4. 개인 정보 보호 샌드박스 DevTools GitHub 저장소의 trace_config.textproto 파일을 이용해 트레이스를 기록합니다.

    ./perfetto/tools/record_android_trace \
      -c path/to/trace_config.textproto
    
  5. '광고 선택 실행' 버튼을 탭하고 입찰 결과를 기다립니다. 입찰이 완료되면 'http://example.com/bidding/render_shoes의 광고를 표시하시겠습니까?'와 같은 메시지가 출력에 표시됩니다.

  6. 터미널에서 record_android_trace 프로그램을 종료(CTRL+C)하여 트레이스를 완료합니다. 트레이스 데이터가 로드된 상태로 Perfetto UI가 브라우저에서 열립니다.

Perfetto에서 시각적으로 트레이스 살펴보기

  1. UI 상단에 있는 주소 표시줄을 사용하여 'RunOnDeviceAdSelection'을 검색합니다. Enter를 클릭하여 검색을 완료하면 결과가 표시됩니다.

    Protected Audience 입찰을 살펴보는 Perfetto UI RunOnDeviceAdSelection 및 RunBidding과 같은 트랙이 표시됩니다.
    Perfetto에서의 단일 구매자 Protected Audience 입찰
  2. 트레이스를 클릭하여 입찰을 검사합니다. 실행 지연 시간과 같은 세부정보는 여기에서 확인할 수 있습니다.

    트레이스 세그먼트를 검사하는 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. 쿼리를 실행하고 결과를 검사합니다.

    SQL 쿼리 결과. 평균 지연 시간은 17,693,688나노초입니다.
    나노초 단위의 SQL 쿼리 결과