اوراکل قصد دارد DTrace را برای لینوکس با استفاده از eBPF دوباره طراحی کند

شرکت اوراکل گزارش شده در مورد کار بر روی انتقال تغییرات مربوط به DTrace به بالادست و برنامه هایی برای پیاده سازی فناوری اشکال زدایی پویا DTrace در بالای زیرساخت استاندارد هسته لینوکس، یعنی استفاده از زیرسیستم هایی مانند eBPF. در ابتدا، مشکل اصلی استفاده از DTrace در لینوکس ناسازگاری در سطح مجوز بود، اما در سال 2018 اوراکل مجوز مجدد گرفته است کد DTrace تحت GPLv2.

DTrace در حال حاضر مدت زمان طولانی به عنوان بخشی از یک هسته توسعه یافته برای توزیع Oracle Linux ارائه می شود، اما برای استفاده از آن در سایر توزیع ها نیاز به استفاده از وصله های هسته اضافی دارد که استفاده از این فناوری را محدود می کند. به عنوان مثال، اوراکل تهیه شده دستورالعمل های دقیق برای نصب و استفاده از DTrace در فدورا لینوکس. مونتاژ مورد نیاز برای نصب ابزار و استفاده از هسته لینوکس بازسازی شده از تکه ها. برای خودکارسازی اجرای هسته با وصله های Oracle و Fedora، پیشنهاد شده است. اسکریپت.

eBPF یک مفسر بایت کد است که در هسته لینوکس تعبیه شده است که به شما امکان می دهد کنترل کننده های عملیات شبکه، نظارت بر عملکرد سیستم، رهگیری تماس های سیستم، کنترل دسترسی، پردازش رویدادها با زمان سنجی (perf_event_open)، تعداد دفعات و زمان اجرای عملیات، انجام ردیابی با استفاده از kprobes. /پروب /نقاط ردیابی. به لطف استفاده از کامپایل JIT، بایت کد به سرعت به دستورالعمل های ماشین ترجمه می شود و با عملکرد کد بومی اجرا می شود. DTrace را می توان در بالای eBPF پیاده سازی کرد، مشابه نحوه اجرای آن در بالای eBPF کار می کنند ابزارهای ردیابی موجود

فناوری DTrace برای سیستم عامل Solaris توسعه داده شد تا مشکل ردیابی دینامیکی هسته سیستم و برنامه های کاربردی نهایی را حل کند و به کاربر این امکان را می دهد که رفتار سیستم را با جزئیات نظارت کند و مشکلات را در زمان واقعی تشخیص دهد. در طول فرآیند اشکال زدایی، DTrace بر عملکرد برنامه های مورد مطالعه تأثیر نمی گذارد و به هیچ وجه بر عملکرد آنها تأثیر نمی گذارد، که به شما امکان می دهد تجزیه و تحلیل سیستم های در حال اجرا را در پرواز سازماندهی کنید. یکی از نقاط قوت DTrace، زبان سطح بالای D، مشابه AWK است که در آن ایجاد اسکریپت های ردیابی بسیار ساده تر از استفاده از ابزارهای ارائه شده برای نوشتن کنترل کننده های eBPF در C، Python و Lua با کتابخانه های خارجی است.

مهندسان اوراکل همچنین در حال کار بر روی ایجاد یک backend eBPF برای GCC هستند و قبلاً آن را منتشر کرده اند مجموعه پچ برای ادغام پشتیبانی eBPF در GCC و به دست آورد از جمله کد برای پشتیبانی از eBPF در بینوتیل های گنو. در ابتدا، پشتیبان برای پشتیبانی eBPF مبتنی بر فناوری‌های LLVM است، اما اوراکل به ظاهر در GCC یک توانایی استاندارد برای تولید برنامه‌ها برای eBPF علاقه‌مند است که امکان استفاده از یک جعبه ابزار را هم برای ساخت هسته لینوکس و هم برای ساخت برنامه‌ها فراهم می‌کند. برای eBPF

علاوه بر پشتیبان تولید بایت کد، وصله‌های پیشنهادی برای GCC همچنین شامل یک پورت libgcc برای eBPF و ابزارهایی برای تولید فایل‌های ELF است که اجرای کد در ماشین مجازی eBPF با استفاده از لودرهای ارائه‌شده توسط هسته را ممکن می‌سازد. در حال حاضر، کد در زبان C را می توان به بایت کد ترجمه کرد (همه ویژگی های زبان در دسترس نیستند)، اما در آینده انتظار می رود که قابلیت های زبان C در دسترس برای استفاده را گسترش دهد، پشتیبانی از زبان های دیگر را اضافه کند، یک شبیه ساز ایجاد کند، و پشتیبانی GCC را برای اشکال زدایی برنامه های eBPF بدون بارگیری در هسته اضافه کنید.

منبع: opennet.ru

اضافه کردن نظر