Protected Audience 입찰은 시각적인 방법 또는 Perfetto를 사용한 SQL 쿼리 중 하나로 분석할 수 있습니다. 광고 기술은 Perfetto를 통한 프로파일링 방식을 사용하여 다음과 같은 Protected Audience 입찰의 실적을 측정할 수 있습니다.
- 입찰 및 점수 스크립트 CPU 시간
- HTTP 요청의 지연 시간(예: 키/값 서비스)
- 콜드 캐시와 핫 캐시의 성능 영향 비교
- 더 많은 맞춤 잠재고객과 더 적은 맞춤 잠재고객
- 더 큰 신호 집합과 더 작은 신호 집합
- 모든 입찰에 동일한 스크립트를 사용하는 것과 맞춤 잠재고객별로 다른 입찰 로직 스크립트를 사용하는 것 비교
설정
Perfetto와 개인 정보 보호 샌드박스 저장소를 클론합니다.
git clone https://android.googlesource.com/platform/external/perfetto
git clone https://github.com/android/privacy-sandbox-samples
Android 스튜디오의
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개 이상 있는지 확인합니다.
Protected Audience 데모 앱 개인 정보 보호 샌드박스 DevTools GitHub 저장소의 trace_config.textproto 파일을 이용해 트레이스를 기록합니다.
./perfetto/tools/record_android_trace \ -c path/to/trace_config.textproto
'광고 선택 실행' 버튼을 탭하고 입찰 결과를 기다립니다. 입찰이 완료되면 '
http://example.com/bidding/render_shoes
의 광고를 표시하시겠습니까?'와 같은 메시지가 출력에 표시됩니다.터미널에서
record_android_trace
프로그램을 종료(CTRL+C)하여 트레이스를 완료합니다. 트레이스 데이터가 로드된 상태로 Perfetto UI가 브라우저에서 열립니다.
Perfetto에서 시각적으로 트레이스 살펴보기
UI 상단에 있는 주소 표시줄을 사용하여 'RunOnDeviceAdSelection'을 검색합니다. Enter를 클릭하여 검색을 완료하면 결과가 표시됩니다.
Perfetto에서의 단일 구매자 Protected Audience 입찰 트레이스를 클릭하여 입찰을 검사합니다. 실행 지연 시간과 같은 세부정보는 여기에서 확인할 수 있습니다.
트레이스 세그먼트 검사
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';
쿼리를 실행하고 결과를 검사합니다.
나노초 단위의 SQL 쿼리 결과