Case Studies

‫Datadog מספקת מיליוני תובנות מעמיקות לגבי ביצועים באמצעות ProfilingManager

משך הקריאה: 4 דקות

ירידות בביצועים קשות מאוד לשחזור, ולכן הן מהוות צוואר בקבוק משמעותי למפתחים של אפליקציות לנייד. אותות כמו שיעורי ANR מציינים מהן הבעיות שמתרחשות בסביבת הייצור, אבל כדי לאתר את שורת הקוד הספציפית שגרמה לבעיית הביצועים, נדרש בעבר שחזור ידני מקיף או ניסויים ספקולטיביים בשיטת הניסוי והטעייה.

חברת Datadog שיתפה פעולה עם Google כדי לצמצם את התסכול הזה, ושילבה את ProfilingManager API (שזמין במכשירי Android 15 ומעלה) בפלטפורמות Real User Monitoring (RUM) ו-Continuous Profiling שלה. השילוב הזה משנה את תהליך העבודה של ניפוי הבאגים, ומאפשר למפתחים לזהות את הסיבה לצוואר בקבוק בביצועים, במקום להסתמך רק על סימפטומים ברמת השטח.

על ידי שימוש ב-API ברמת המערכת, Datadog מעבדת עכשיו מיליוני פרופילים של ייצור מדי שבוע ברחבי העולם, על פי נתונים פנימיים של Datadog מיוני 2026. הכלי מספק לצוותי הנדסה רמת שקיפות חדשה לגבי הביצועים בעולם האמיתי, תוך שמירה על תקורה נמוכה של זמן ריצה לצורך מעקב אחר ביצועים בקנה מידה של ייצור.

ההשפעה של ProfilingManager

‫ProfilingManager הוא שירות מערכת שהוצג ב-Android 15, שמאפשר לאפליקציות לאסוף באופן פרוגרמטי נתוני ביצועים כמו דגימות של סטאק ביצוע, עקבות שדה ותמונת מצב של הזיכרון ישירות מסביבות ייצור. היכולת הזו משנה את פרדיגמת ההנדסה משיחזור ידני בדיעבד לניתוח שטח יזום.

AANDDM_DataDog_Quote_01.png

לדוגמה, אפליקציית תקשורת של Google השתמשה במעקב בשטח כדי לבדוק למה זמני ההפעלה שלה במצב התחלתי היו איטיים יותר בחומרה חדשה וחזקה יותר. המהנדס בחן את העקבות שנאספו בשטח והשווה בין עקבות בסוגים שונים של מכשירים. כך הוא גילה בעיה נסתרת בתזמון: שירות של המרת טקסט לדיבור שפועל ברקע עבר חימום מוקדם שלא לצורך במהלך הפעלת האפליקציה. המעקב חשף שתהליך הרקע הזה ניצל את ליבת ה-CPU הגדולה עם הביצועים הכי גבוהים במכשיר, ואילץ את השרשור הראשי של האפליקציה להיכנס למצב שינה בזמן החימום המוקדם.

פתרון בעיית החשיפה ברמת הקוד ב-Android

לפני ההטמעה של ProfilingManager, המערכת Real User Monitoring (RUM) של Datadog התמקדה בבדיקת תקינות האפליקציה ברמה גבוהה ובטלמטריה ברמת הסשן כדי להעריך את מסלול המשתמש. צוותי הנדסה יכולים לעקוב אחרי אותות ביצועים ב-Android, כמו הזמן עד להצגה הראשונית, שיעורי ANR, עומס CPU ופריימים קפואים. התובנות האלה הורחבו לאינטראקציות ברמת הגרנולריות, כמו זמן האחזור ברשת, אירועי מגע וקריסות של ה-thread הראשי. עם זאת, למרות שהנתונים האלה הדגישו בצורה יעילה אילו צווארי בקבוק בביצועים צצו בשטח, הם לא סיפקו דרך ברורה לזיהוי הגורם הבסיסי לבעיות האלה.

AANDDM_DataDog_Quote_02.png

כדי לפתור את הבעיה הזו, Datadog הייתה צריכה מנוע פרופילים שיכול ללכוד עקבות של Android ישירות ממכשירים בייצור עם השפעה מינימלית על הביצועים. אחרי שהצוות בחן גישות חלופיות, כמו כתיבת מעבד עקבות משלו באמצעות Android Debug APIs, הוא בחר ב-ProfilingManager כי זה הפתרון הכי יעיל מבין אפשרויות הפרופילים שהוא בחן, והוא מעביר את התקורה של החלטות הדגימה למערכת ההפעלה.

‫ProfilingManager תומך במגוון רחב של שיטות איסוף, כולל מעקב אחר השימוש במעבד, דגימה של סטאק ביצוע, ניתוח זיכרון באמצעות Java heap dumps ופרופילים של זיכרון heap מקורי. הכלי מאפשר למפתחים ליצור פרופילים של גרסאות ייצור, להעלות קבצים של נתוני מעקב לאחסון חיצוני ולבדוק אותם בממשק המשתמש של כלי הניתוח של נתוני המעקב ב-Perfetto. בתור ספק SaaS,‏ Datadog מעלה, מציגה ומנתחת את הפרופילים האלה שנאספים באמצעות ה-SDK שלה, ומספקת תצוגה מאוחדת של תקינות האפליקציה. 

ה-API של ProfilingManager מאפשר לרכז טלמטריה ברמת דיוק גבוהה ב-API מאוחד של יכולת תצפית, וכך מאפשר ל-Datadog וללקוחות שלה לעקוב באופן יזום אחרי רגרסיות מורכבות בביצועים של Android, לחקור אותן ולתקן אותן באמצעות יתרונות טכניים מרכזיים:

  • ניתוח מפורט של סשנים: הכלי ProfilingManager משפר את יכולות הניפוי באגים על ידי אספקת נתוני מעקב ישירים ברמת מערכת ההפעלה, וכך מתגבר על האתגרים של חשיפה והתאמה שמאפיינים בדרך כלל רישום מותאם אישית ביומן עם שירותי מערכת. כדי לבצע ניתוח מעמיק יותר, מפתחים יכולים להוריד את נתוני המעקב האלה מ-Datadog ולבדוק אותם לעומק באמצעות כלי ויזואליזציה כמו Perfetto UI.
  • טריגרים אוטומטיים של טלמטריה: באמצעות אירועים מקוריים של המערכת כדי להתחיל הקלטות של עקבות בנקודות אופטימיזציה מרכזיות, Datadog מצמצמת את הצורך בבניית לוגיקה מותאמת אישית לאיסוף. בשלב ההשקה הראשוני, המיקוד הוא באות APP_FULLY_DRAWN, אבל כבר יש תוכניות להרחיב את יכולת הצפייה הזו כך שתכלול טריגרים של ANR, OOM ו- COLD_START.
  • תמונות מצב פרואקטיביות של מעקב: הכלי ProfilingManager מתקשר ישירות עם שירות Perfetto ברמת המערכת (traced) ומשתמש במודל פרואקטיבי של הקלטה ברקע שנועד לזהות בעיות בלתי צפויות. כך המפתחים מקבלים תצוגה חזותית מדויקת של האירועים שהובילו לאנומליה בביצועים, ורמת התובנות שהם מקבלים גבוהה יותר מזו שאפשר לקבל באמצעות מדידה ידנית.
  • איתור צווארי בקבוק בהיקף נרחב: מערכת Datadog יכולה לסנתז טלמטריה מכל בסיס הלקוחות הגלובלי של Datadog כדי לגלות רגרסיות שמופיעות רק בתצורות ייחודיות של חומרה ובסביבות רשת משתנות.
  • יציבות המשאבים שנאכפת על ידי המערכת: ה-API משתמש באיסוף דגימות של נתוני מעקב כדי לוודא שההשפעות על הביצועים ועל חוויית המשתמש לא מורגשות.
  • אמצעי בקרה על נתונים במכשיר: הכלי ProfilingManager מסנן מידע לא רלוונטי מתהליכים אחרים במכשיר לפני שהפרופיל מועבר לאפליקציה. כך מצמצמים את גודל הקבצים ומבטיחים שרק נתונים שרלוונטיים לתהליכים של האפליקציה יסופקו.

עיבוד של מיליוני פרופילים מדי שבוע כדי לבצע אופטימיזציה של אפליקציות בעולם האמיתי

datadog-profiling-blogpost-final.png
דוגמה למדידת הזמן עד להצגה הראשונית של Datadog באמצעות דגימת מחסנית שמופעלת על ידי ProfilingManager

שילוב של API ליצירת פרופילים ברמת המערכת בערכת SDK גלובלית למעקב דרש פתרון של בעיות בתשתית. מכיוון ש-ProfilingManager יוצר יומני מעקב מפורטים מאוד של ביצועים, צוות ההנדסה של Datadog נאלץ לבנות צינור נתונים שיכול לנתח את הפרופילים האלה בצד השרת בקנה מידה גדול. בנוסף לאיסוף פרופילים, ב-Datadog מדגישים גם את החשיבות של איזון בין תדירות הדגימה לבין איסוף מספיק נתונים כדי ליצור תובנות משמעותיות לגבי האפליקציה. ‫Datadog מסתמכת על הגבלת הקצב המובנית של ProfilingManager כאמצעי קריטי לשמירה על יציבות, ומונעת מבקשות טלמטריה מוגזמות להעמיס יתר על המכשירים של המשתמשים. 

הצוות יצר פרופילים של אפליקציה ל-Android המקורית של Datadog ושל מספר אפליקציות של מראשוני המשתמשים במשך חודשים, ואסף מיליוני פרופילים כדי להבטיח חוויית השקה מהירה וללא שגיאות, וכדי לשפר את האלגוריתמים לזיהוי ביצועים. היום, השילוב של גרסת הייצור מתרחב בצורה חלקה למגוון מכשירי Android. 

סיכום

באמצעות שילוב של Android ProfilingManager API, ‏ Datadog הצליחה לסגור את פערי השקיפות בין מערכות העורף לבין אפליקציות לקוח לנייד עבור הלקוחות שלה. מערכת Datadog מעבדת מיליוני פרופילים מדי שבוע עם תקורה זניחה במכשיר, ומספקת למפתחי Android את התובנות ברמת הקוד שדרושות כדי לאבחן באגים מורכבים בביצועים באופן מיידי. כך המפתחים יכולים ליצור אפליקציות חלקות יותר ולשפר את אותות הביצועים של האפליקציה שלהם בחנות Play. כדי להטמיע את ProfilingManager API ישירות במסגרת של ניתוח ביצועים, אפשר לעיין במסמכי העזרה.

בעתיד, Datadog מתכננת להפוך את נתוני הפרופילים של Android לקלט ברמה גבוהה לסוכני קידוד, כדי לפתור באופן אוטונומי צווארי בקבוק בביצועים ולסגור את לולאת המשוב בין זיהוי לתיקון. חברת Datadog פועלת כדי להרחיב את הגישה של מפתחים לפרופילים של Android.

כדי להתחיל להשתמש בתכונה Datadog real user monitoring (מעקב אחרי משתמשים בזמן אמת) שמבוססת על ProfilingManager, אפשר לעבור אל Datadog Mobile Real User Monitoring.

להמשך קריאה