אפשר לנתח מכרזים של Protected Audience (חזותית או באמצעות שאילתה ב-SQL באמצעות Perfetto. טכנולוגיות הפרסום יכולות להשתמש ביצירת פרופילים באמצעות Perfetto כדי למדוד את הביצועים של מכרזים של קהלים מוגנים, כולל:
- זמן המעבד (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
.יוצרים ומתקינים את האפליקציה לדוגמה במכשיר הבדיקה או במהדמטור.
הרצת מכרז וביצוע מעקב (trace) ב-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>"
מפעילים או משביתים את האפשרות 'קהל מותאם אישית של נעליים' כדי לוודא שיש לפחות קהל מותאם אישית אחד פעיל.
אפליקציית הדגמה של Protected Audience מתעדים מעקב באמצעות קובץ trace_config.textproto מהמאגר של Privacy Sandbox DevTools ב-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. לוחצים על מעקב כדי לבדוק אותו. כאן תוכלו למצוא פרטים כמו זמן האחזור של הביצוע.
בדיקת מקטע ב-trace.
פלחי מעקב ספציפיים לקהל מוגן
המכרז של 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, עוברים אל 'שאילתה (SQL)' בחלונית הניווט הימנית.
מזינים את השאילתה הבאה:
SELECT AVG(dur) FROM slice WHERE slice.name GLOB 'FetchPayload';
מריצים את השאילתה ובודקים את התוצאות.
תוצאות של שאילתות SQL בנאונודיות.