شرکت اوراکل
DTrace در حال حاضر
eBPF یک مفسر بایت کد است که در هسته لینوکس تعبیه شده است که به شما امکان می دهد کنترل کننده های عملیات شبکه، نظارت بر عملکرد سیستم، رهگیری تماس های سیستم، کنترل دسترسی، پردازش رویدادها با زمان سنجی (perf_event_open)، تعداد دفعات و زمان اجرای عملیات، انجام ردیابی با استفاده از kprobes. /پروب /نقاط ردیابی. به لطف استفاده از کامپایل JIT، بایت کد به سرعت به دستورالعمل های ماشین ترجمه می شود و با عملکرد کد بومی اجرا می شود. DTrace را می توان در بالای eBPF پیاده سازی کرد، مشابه نحوه اجرای آن در بالای eBPF
فناوری DTrace برای سیستم عامل Solaris توسعه داده شد تا مشکل ردیابی دینامیکی هسته سیستم و برنامه های کاربردی نهایی را حل کند و به کاربر این امکان را می دهد که رفتار سیستم را با جزئیات نظارت کند و مشکلات را در زمان واقعی تشخیص دهد. در طول فرآیند اشکال زدایی، DTrace بر عملکرد برنامه های مورد مطالعه تأثیر نمی گذارد و به هیچ وجه بر عملکرد آنها تأثیر نمی گذارد، که به شما امکان می دهد تجزیه و تحلیل سیستم های در حال اجرا را در پرواز سازماندهی کنید. یکی از نقاط قوت DTrace، زبان سطح بالای D، مشابه AWK است که در آن ایجاد اسکریپت های ردیابی بسیار ساده تر از استفاده از ابزارهای ارائه شده برای نوشتن کنترل کننده های eBPF در C، Python و Lua با کتابخانه های خارجی است.
مهندسان اوراکل همچنین در حال کار بر روی ایجاد یک backend eBPF برای GCC هستند و قبلاً آن را منتشر کرده اند
علاوه بر پشتیبان تولید بایت کد، وصلههای پیشنهادی برای GCC همچنین شامل یک پورت libgcc برای eBPF و ابزارهایی برای تولید فایلهای ELF است که اجرای کد در ماشین مجازی eBPF با استفاده از لودرهای ارائهشده توسط هسته را ممکن میسازد. در حال حاضر، کد در زبان C را می توان به بایت کد ترجمه کرد (همه ویژگی های زبان در دسترس نیستند)، اما در آینده انتظار می رود که قابلیت های زبان C در دسترس برای استفاده را گسترش دهد، پشتیبانی از زبان های دیگر را اضافه کند، یک شبیه ساز ایجاد کند، و پشتیبانی GCC را برای اشکال زدایی برنامه های eBPF بدون بارگیری در هسته اضافه کنید.
منبع: opennet.ru