هر اتفاقی در لینوکس رخ میدهد از دل کرنل رد شده و با بودن در دل کرنل میتوان از آن رخداد اطلاع پیدا کرد. مشکلی که در توسعهی کد در کرنل وجود دارد این است که پیچیدگی زیادی داشته و یک اشتباه منجر به کرش کردن سیستمعامل شده و پایداری سیستم را به خطر میاندازد.
برای کسب اطلاعات از اتفاقات مختلفی که در سیستمعامل رخ میدهند و اعمال تغییرات در بخشهای مختلف آن ابزارهای مختلفی توسعه داده شدهاند که امکان کسب اطلاعات و یا اعمال تغییرات در نقاط مشخصی از کرنل را فراهم میکنند. قبلا در پستی یکی از این ابزارها به اسم ftrace را معرفی کردهام و در این پست و ویدئو قصد معرفی ابزار دیگری به اسم eBPF را دارم که قابلیتهایی بسیار زیادی فراهم کرده و انعطاف پذیری بالایی در کسب اطلاعات و اعمال تغییرات در کرنل لینوکس را دارد.
در واقع میتوان گفت که eBPF یک زبان تعامل با کرنل لینوکس است که به کمک آن میتوان اطلاعاتی از کارکرد کرنل بدست آورده و یا در آن تغییراتی اعمال نمود. کد نوشته شده برای eBPF پس از کامپایل به یک bytecode برای کرنل ارسال شده و اگر مشکلی نداشته باشد در کرنل اجرا میشود.
برای نمونهای از کاربردهای eBPF میتوان به استفادهی اندروید برای کسب اطلاعات از میزان استفاده از شبکه، استفادهی Netflix برای کسب اطلاعات آماری از شبکه در مقیاس بزرگ، استفادهی گوگل برای پردازش بستههای شبکه و performance monitoring و یا استفادهی Cloudflare برای امنیت شبکه اشاره کرد.
در این ویدئو ابتدا eBPF معرفی شده و سپس به کمک bpftrace استفاده از آن تست میشود.
لینک ویدئو در یوتیوب:
https://youtu.be/qOqi8RPf4N0
لینک ویدئو در آپارات:
https://aparat.com/v/rxzar9f
#ShortLinuxInternals #linux #internals #programming #kernel #bpf #ebpf #tracing #bpftrace