אפשר לנתח מכרזים בשילוב עם Protected Audience API (באופן חזותי או באמצעות שאילתת SQL עם Perfetto). ספקי טכנולוגיות פרסום יכולים להשתמש בפרופילים עם Perfetto כדי למדוד את הביצועים של מכרזים ב-Protected Audience API, כולל:
- זמן CPU (יחידת עיבוד מרכזית) של סקריפט הבידינג והניקוד
- זמן האחזור של בקשות HTTP, כמו שירות מפתח/ערך
- ההשפעה על הביצועים של מטמון קר לעומת מטמון חם
- יותר קהלים בהתאמה אישית לעומת פחות קהלים בהתאמה אישית
- קבוצות גדולות לעומת קבוצות קטנות של אותות
- סקריפטים שונים של לוגיקת בידינג לכל קהל מותאם אישית, לעומת שימוש באותו סקריפט לכל הבידינג
הגדרה
משכפלים את מאגרי Perfetto וארגז החול לפרטיות.
git clone https://android.googlesource.com/platform/external/perfettogit clone https://github.com/android/privacy-sandbox-samplesב-Android Studio, פותחים את אפליקציית הדוגמה Protected Audience מהספרייה
privacy-sandbox-samples/Fledge/FledgeKotlin.יוצרים ומתקינים את האפליקציה לדוגמה במכשיר הבדיקה או באמולטור.
הפעלת מכרז ויצירת נתוני מעקב ב-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 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 בננו-שניות.