การประมูล Protected Audience วิเคราะห์ได้ (ทั้งภาพหรือการค้นหา SQL ด้วย Perfetto เทคโนโลยีโฆษณาสามารถใช้การทำโปรไฟล์ด้วย Perfetto เพื่อวัดประสิทธิภาพของการประมูลสำหรับ Protected Audienceการประมูล ซึ่งรวมถึงสิ่งต่อไปนี้
- เวลา CPU ของสคริปต์การเสนอราคาและการให้คะแนน
- เวลาในการตอบสนองของคำขอ HTTP เช่น บริการคีย์/ค่า
- ผลกระทบด้านประสิทธิภาพของ Cold Cache เทียบกับ Hot Cache
- มากขึ้นเทียบกับกลุ่มเป้าหมายที่กำหนดเองน้อยลง
- ชุดสัญญาณขนาดใหญ่กว่าเทียบกับชุดสัญญาณขนาดเล็ก
- สคริปต์ตรรกะการเสนอราคาต่อกลุ่มเป้าหมายที่กำหนดเองแตกต่างกันเมื่อเทียบกับการใช้สคริปต์เดียวกันสำหรับการเสนอราคาทั้งหมด
การตั้งค่า
โคลนที่เก็บ Perfetto และ Privacy Sandbox
git clone https://android.googlesource.com/platform/external/perfetto
git clone https://github.com/android/privacy-sandbox-samples
ใน Android Studio ให้เปิดแอปตัวอย่าง Protected Audience จากไดเรกทอรี
privacy-sandbox-samples/Fledge/FledgeKotlin
สร้างและติดตั้งแอปตัวอย่างในอุปกรณ์หรือโปรแกรมจำลองทดสอบ
เรียกใช้การประมูลและติดตาม 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>"
สลับ "รองเท้า CA" เพื่อให้แน่ใจว่ามีกลุ่มเป้าหมายที่กำหนดเองที่ใช้งานอยู่อย่างน้อย 1 กลุ่ม
บันทึกการติดตามโดยใช้ไฟล์ trace_config.textprof จากที่เก็บใน GitHub สำหรับ Privacy Sandbox
./perfetto/tools/record_android_trace \ -c path/to/trace_config.textproto
แตะปุ่ม "เรียกใช้การเลือกโฆษณา" และรอผลการประมูล เมื่อการประมูลเสร็จสมบูรณ์แล้ว เอาต์พุตจะแสดงข้อความว่า "จะแสดงโฆษณาจาก
http://example.com/bidding/render_shoes
"ในเทอร์มินัล ให้สิ้นสุด (Ctrl+C) โปรแกรม
record_android_trace
เพื่อดำเนินการติดตามให้เสร็จสิ้น UI ของ Perfetto จะเปิดขึ้นในเบราว์เซอร์พร้อมโหลดข้อมูลการติดตามแล้ว
สำรวจการติดตามด้วยสายตาใน Perfetto
ค้นหา "RunOnDeviceAdSelection" โดยใช้แถบที่อยู่ที่ด้านบนของ UI กด Enter เพื่อทำการค้นหาให้เสร็จและแสดงผลการค้นหา
คลิกการติดตามเพื่อตรวจสอบ ดูรายละเอียด เช่น เวลาในการตอบสนอง ของการดำเนินการได้ที่นี่
กลุ่มการติดตามเฉพาะสำหรับ 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';
ดำเนินการค้นหาและตรวจสอบผลลัพธ์