אפשר לנתח מכרזים בשילוב עם Protected Audience API (באופן חזותי או באמצעות שאילתת SQL) באמצעות Perfetto. ספקי טכנולוגיות פרסום יכולים להשתמש בפרופילים עם Perfetto כדי למדוד את הביצועים של מכרזים ב-Protected Audience API, כולל:
- זמן CPU (יחידת עיבוד מרכזית) של סקריפט הבידינג והניקוד
- זמן האחזור של בקשות HTTP, כמו שירות של זוגות מפתח/ערך
- השפעת הביצועים של מטמון קר לעומת מטמון חם
- יותר קהלים בהתאמה אישית לעומת פחות קהלים בהתאמה אישית
- קבוצות גדולות לעומת קבוצות קטנות של אותות
- סקריפטים שונים של לוגיקת בידינג לכל קהל מותאם אישית, לעומת שימוש באותו סקריפט לכל הבידינג
הגדרה
משכפלים את המאגרים של Perfetto ושל ארגז החול לפרטיות.
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
.מבצעים Build ומתקינים את האפליקציה לדוגמה במכשיר הבדיקה או באמולטור.
הפעלת מכרז ויצירת נתוני מעקב ב-Perfetto
- הגדרה ופריסה של נקודות קצה (endpoint) HTTPS לבדיקה. חשוב לרשום את כתובת ה-URL של נקודות הקצה המתארחות, כי הן נדרשות כדי שאפליקציית ההדגמה של Protected Audience תפעל.
מפעילים את אפליקציית ההדגמה עם כתובת URL של נקודת קצה לבדיקה. מחליפים את
<test-endpoint-url>
בכתובת URL של נקודת קצה (endpoint) מתארחת שרשמתם בשלב הקודם.adb shell am start -n com.example.adservices.samples.fledge.sampleapp/.MainActivity \ -e baseUrl "<test-endpoint-url>"
מעבירים את המתג לצד 'Shoes CA' כדי לוודא שיש לפחות קהל מותאם אישית אחד פעיל.
Protected Audience Demo App מתעדים מעקב באמצעות הקובץ trace_config.textproto ממאגר GitHub של כלי הפיתוח של ארגז החול לפרטיות:
./perfetto/tools/record_android_trace \ -c path/to/trace_config.textproto
מקישים על הלחצן 'הפעלת בחירת מודעות' ומחכים לתוצאות המכרז. בסיום המכרז, בפלט מוצגת הודעה כמו 'יוצג מודעה מ-
http://example.com/bidding/render_shoes
'.במסוף, מסיימים (CTRL+C) את התוכנית
record_android_trace
כדי לסיים את המעקב. ממשק המשתמש של Perfetto ייפתח בדפדפן עם נתוני המעקב שנטענו.
עיון חזותי בנתוני מעקב ב-Perfetto
מחפשים את המחרוזת RunOnDeviceAdSelection באמצעות סרגל הכתובות בחלק העליון של ממשק המשתמש. לוחצים על Enter כדי להשלים את החיפוש ולהציג את התוצאות:
מכרז Protected Audience עם קונה יחיד ב-Perfetto. לוחצים על מעקב כדי לבדוק אותו. פרטים כמו זמן האחזור של ההרצה זמינים כאן.
בדיקת פלח של מעקב.
פלחי עקבות ספציפיים ל-Protected Audience
מכרז בשילוב עם Protected Audience API הוא תהליך מורכב, ויש הרבה פלחים שונים שמתועדים ב-Perfetto trace. בטבלה הזו מוסבר מה מייצג כל פלח של נתוני המעקב.
שעה | Segment | תיאור | תדירות |
---|---|---|---|
לפני המכרז | 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) (שאילתה (SQL)) בחלונית הניווט הימנית.
מזינים את השאילתה הבאה:
SELECT AVG(dur) FROM slice WHERE slice.name GLOB 'FetchPayload';
מריצים את השאילתה ובודקים את התוצאות.
תוצאות של שאילתת SQL בננו-שניות.