مطالعات موردی

Datadog با ProfilingManager میلیون‌ها اطلاعات آماری عملکرد عمیق ارائه می‌دهد

زمان خواندن: ۴ دقیقه
۳ نویسنده
Alice Yuan, Arti Arutiunov, Nikita Ogorodnikov

بازتولید پس‌رفت‌های عملکردی بسیار دشوار است، که این امر پس‌رفت‌ها را به یک گلوگاه بزرگ برای توسعه‌دهندگان تلفن همراه تبدیل می‌کند. اگرچه سیگنال‌هایی مانند نرخ ANR نشان می‌دهند که چه مشکلاتی در تولید رخ می‌دهد، اما مشخص کردن خط کد خاصی که منجر به مشکل عملکرد شده است، از گذشته نیازمند بازتولید دستی جامع یا آزمایش آزمون و خطای حدسی بوده است.

‫Datadog با Google همکاری کرد تا با ادغام ProfilingManager API (موجود در دستگاه‌های Android 15+) در پلاتفرم‌های «نظارت بر کاربر واقعی» (RUM) و «نمایه‌سازی مداوم» خود، این مشکل را کاهش دهد. این ادغام گردش کار اشکال‌زدایی را متحول می‌کند و به توسعه‌دهندگان اجازه می‌دهد تا فراتر از علائم سطحی حرکت کنند و بتوانند دلیل پشت گلوگاه عملکرد را تشخیص دهند.

طبق داده‌های داخلی Datadog در ژوئن ۲۰۲۶، Datadog با بهره‌گیری از این میانای برنامه‌سازی کاربردی در سطح سیستم، اکنون میلیون‌ها نمایه تولید را به‌طور هفتگی در سراسر جهان پردازش می‌کند. این ابزار سطح جدیدی از دید را نسبت‌به عملکرد در دنیای واقعی برای تیم‌های مهندسی فراهم می‌کند، درحالی‌که سربار زمان اجرای پایینی را برای پایش عملکرد در مقیاس تولید حفظ می‌کند.

تأثیر ProfilingManager

‫ProfilingManager یک سرویس سیستم است که در Android 15 معرفی شده است و به برنامه‌ها امکان می‌دهد داده‌های عملکرد مانند نمونه‌های پشته فراخوانی، ردگیری‌های فیلد، و رونوشت‌های پشته حافظه را به‌صورت برنامه‌نویسی‌شده مستقیماً از محیط‌های تولید جمع‌آوری کنند. این قابلیت الگوی مهندسی را از بازتولید دستی واکنشی به تجزیه‌وتحلیل میدانی پیش‌کنشی تغییر می‌دهد.

AANDDM_DataDog_Quote_01.png

برای مثال، یکی از برنامه‌های ارتباطی Google از ردیابی‌های میدانی استفاده کرد تا بررسی کند چرا زمان راه‌اندازی سرد آن در سخت‌افزارهای جدیدتر و قدرتمندتر کندتر است. مهندس با بررسی دقیق ردگیری‌های جمع‌آوری‌شده در محل و مقایسه ردگیری‌ها در انواع مختلف دستگاه، مشکل زمان‌بندی پنهانی را کشف کرد: سرویس نوشتار به گفتار پس‌زمینه به‌طور غیرضروری درطول راه‌اندازی برنامه پیش‌گرم می‌شد. ردگیری‌ها نشان داد که این فرایند پس‌زمینه‌ای هسته بزرگ واحد پردازش مرکزی دستگاه را که بالاترین عملکرد را دارد در انحصار خود درآورده است و رشته اصلی برنامه را مجبور می‌کند تا زمانی که پیش‌گرمایش انجام می‌شود به حالت خواب برود.

حل چالش رؤیت‌پذیری در سطح کد Android

پیش‌از پیاده‌سازی ProfilingManager، «پایش کاربر واقعی» (RUM) Datadog بر سلامت برنامه در سطح بالا و دورسنجی در سطح جلسه برای ارزیابی سفر کاربر متمرکز بود. تیم‌های مهندسی می‌توانند سیگنال‌های عملکرد Android مانند زمان نمایش اولیه، نرخ‌های ANR، بار CPU، و فریم‌های ثابت را پایش کنند. این اطلاعات آماری به تعاملات جزئی، مانند تأخیر شبکه، رویدادهای لمسی، و توقف‌های رشته اصلی گسترش یافت. بااین‌حال، اگرچه این داده‌ها به‌طور مؤثری نشان می‌دادند که کدام گلوگاه‌های عملکرد در فیلد ظاهر می‌شوند، اما مسیر مشخصی برای شناسایی علت ریشه‌ای این خرابی‌ها ارائه نمی‌دادند.

AANDDM_DataDog_Quote_02.png

برای رفع این مشکل، Datadog به موتور نمایه‌سازی نیاز داشت که بتواند ردگیری‌های Android را مستقیماً از دستگاه‌های درحال تولید با حداقل تأثیر بر عملکرد ضبط کند. پس‌از ارزیابی رویکردهای جایگزین، مانند نوشتن پردازنده ردیابی خودشان بااستفاده از Android Debug APIs، تیم ProfilingManager را انتخاب کرد زیرا این گزینه کارآمدترین راهکار در میان گزینه‌های نمایه‌سازی بود که ارزیابی کردند و سربار تصمیم‌گیری‌های نمونه‌برداری را به سیستم‌عامل واگذار می‌کند.

‫ProfilingManager از طیف گسترده‌ای از روش‌های جمع‌آوری پشتیبانی می‌کند، ازجمله ردیابی‌های CPU، نمونه‌برداری پشته فراخوانی، تجزیه‌وتحلیل حافظه ازطریق رونوشت‌های پشته Java، و نمایه‌های پشته بومی. این ابزار به توسعه‌دهندگان امکان می‌دهد تا ساخت‌های تولید را نمایه‌سازی کنند، فایل‌های ردیابی را در فضای ذخیره‌سازی خارجی بارگذاری کنند، و آن‌ها را در واسط کاربر تحلیل‌گر ردیابی Perfetto بازبینی کنند. Datadog به‌عنوان ارائه‌دهنده «نرم‌افزار به‌عنوان سرویس» (SaaS)، این نمایه‌های جمع‌آوری‌شده ازطریق کیت توسعه نرم‌افزار خود را بارگذاری، تجسم، و تجزیه‌وتحلیل می‌کند و نمای یکپارچه‌ای از سلامت برنامه ارائه می‌دهد. 

‫ProfilingManager با متمرکز کردن دورسنجی با کیفیت بالا در یک API مشاهده‌پذیری یکپارچه، Datadog و مشتریانش را قادر می‌سازد تا ازطریق مزایای فنی کلیدی، به‌طور فعال بر پس‌رفت‌های پیچیده عملکرد Android نظارت، تحقیق، و آن‌ها را اصلاح کنند:

  • عیب‌یابی دقیق جلسه: ‫ProfilingManager با ارائه داده‌های ردیابی مستقیم در سطح سیستم‌عامل، قابلیت اشکال‌زدایی را بهبود می‌بخشد و بر چالش‌های رؤیت‌پذیری و هم‌ترازی که معمولاً در گزارش‌گیری سفارشی با سرویس‌های سیستم وجود دارد غلبه می‌کند. برای بررسی عمیق‌تر، توسعه‌دهندگان می‌توانند این ردیابی‌ها را از Datadog بارگیری کنند تا در ابزارهای تجسم‌سازی مانند رابط کاربری Perfetto بیشتر بررسی کنند.
  • راه‌اندازهای دورسنجی خودکار: Datadog با بهره‌گیری از رویدادهای سیستم بومی برای شروع ضبط ردیابی در نقاط کلیدی بهینه‌سازی، نیاز به ساخت منطق جمع‌آوری سفارشی را کاهش می‌دهد. درحالی‌که عرضه اولیه بر سیگنال APP_FULLY_DRAWN تمرکز دارد، برنامه‌هایی برای گسترش این قابلیت مشاهده برای دربرگرفتن راه‌اندازهای ANR، OOM، و COLD_START وجود دارد.
  • عکس‌های آنی ردیابی پیش‌کنشی: با برقراری ارتباط مستقیم با سرویس Perfetto در سطح سیستم (ردیابی‌شده)، ProfilingManager از مدل ضبط پس‌زمینه پیش‌کنشی طراحی‌شده برای ثبت مشکلات غیرقابل‌پیش‌بینی استفاده می‌کند. این کار تضمین می‌کند که توسعه‌دهندگان تجسم دقیقی از رویدادهایی که منجر به ناهنجاری عملکردی شده‌اند دریافت کنند و سطحی از بینش را ارائه می‌دهد که فراتر از چیزی است که ازطریق ابزار دقیق دستی امکان‌پذیر است.
  • تشخیص گلوگاه در مقیاس بزرگ:  Datadog می‌تواند دورسنجی را از سراسر پایگاه مشتریان جهانی Datadog ترکیب کند تا رگرسیون‌هایی را که فقط تحت پیکربندی‌های سخت‌افزاری منحصربه‌فرد و محیط‌های شبکه متغیر ظاهر می‌شوند آشکار کند.
  • پایداری منابع اعمال‌شده توسط سیستم: این میانای برنامه‌سازی کاربردی از جمع‌آوری ردیابی نمونه‌برداری استفاده می‌کند تا اطمینان حاصل شود که تأثیرات عملکرد و تجربه کاربری نامحسوس باقی می‌مانند.
  • کنترل‌های داده درون‌دستگاهی: ProfilingManager اطلاعات نامربوط را از دیگر فرایندهای درون‌دستگاهی فیلتر می‌کند و سپس نمایه را به برنامه تحویل می‌دهد. این کار اندازه فایل‌ها را به‌حداقل می‌رساند و تضمین می‌کند که فقط داده‌های مربوط به فرایندهای برنامه ارائه شود.

پردازش میلیون‌ها نمایه هفتگی برای بهینه‌سازی برنامه‌های دنیای واقعی

datadog-profiling-blogpost-final.png
نمونه‌ای از زمان Datadog برای اندازه‌گیری نمایش اولیه با نمونه‌گیری پشته با پشتیبانی ProfilingManager

ادغام کردن میانای برنامه‌سازی کاربردی نمایه‌سازی سطح سیستم در کیت توسعه نرم‌افزار نظارت سراسری مستلزم حل چالش‌های زیرساختی بود. Because ProfilingManager generates highly detailed performance traces, the Datadog engineering team had to build a pipeline capable of parsing and analyzing these profiles on the server side at scale. علاوه‌بر جمع‌آوری نمایه، Datadog بر اهمیت ایجاد تعادل بین بسامد نمونه‌برداری و جمع‌آوری داده‌های کافی برای تولید اطلاعات آماری معنادار درباره برنامه شما نیز تأکید می‌کند. Datadog به محدودیت نرخ داخلی ProfilingManager به‌عنوان یک محافظ پایداری حیاتی متکی است و از درخواست‌های تله‌متری بیش‌ازحد که باعث بار اضافی بر دستگاه‌های کاربر می‌شود جلوگیری می‌کند. 

این تیم ماه‌ها است که درحال نمایه‌سازی برنامه Android بومی Datadog و تعدادی از برنامه‌های پذیرندگان آغازین است و میلیون‌ها نمایه را جمع‌آوری کرده است تا از تجربه راه‌اندازی سریع و بدون خطا اطمینان حاصل کند و الگوریتم‌های تشخیص عملکرد خود را اصلاح کند. امروزه، ادغام تولید به‌طور یکپارچه در انواع دستگاه‌های Android مقیاس‌بندی می‌شود. 

نتیجه‌گیری

Datadog با ادغام ProfilingManager API در Android، با موفقیت شکاف دید بین سیستم‌های پس‌زمینه و برنامه‌های کارخواه تلفن همراه را برای مشتریان خود برطرف کرد. Datadog با پردازش میلیون‌ها نمایه در هفته با سربار ناچیز دستگاه، توسعه‌دهندگان Android را به اطلاعات آماری سطح کد مجهز می‌کند که برای تشخیص فوری اشکالات پیچیده عملکرد ضروری است و به توسعه‌دهندگان کمک می‌کند برنامه‌های روان‌تری بسازند و سیگنال‌های عملکرد برنامه خود را در «فروشگاه Play» بهبود بخشند. برای استفاده از ProfilingManager API مستقیماً در چارچوب مشاهده‌پذیری عملکرد، اسناد ما را بررسی کنید.

در آینده، Datadog قصد دارد داده‌های نمایه‌سازی Android را به ورودی درجه یک برای عامل‌های کدنویسی تبدیل کند تا به‌طور مستقل گلوگاه‌های عملکرد را حل کنند و حلقه بازخورد بین تشخیص و اصلاح را ببندند. Datadog در تلاش است تا نمایه‌سازی Android را به‌طور گسترده برای توسعه‌دهندگان دردسترس قرار دهد.

برای شروع استفاده از ویژگی پایش کاربر واقعی Datadog که ProfilingManager آن را ارائه می‌دهد، به  پایش کاربر واقعی Datadog Mobile مراجعه کنید.

نویسنده:
ادامه خواندن