บริษัทออราเคิล
ดีเทรซแล้ว
eBPF เป็นล่ามโค้ดไบต์ที่สร้างไว้ในเคอร์เนล Linux ซึ่งช่วยให้คุณสามารถสร้างตัวจัดการการทำงานของเครือข่าย ตรวจสอบการทำงานของระบบ สกัดกั้นการเรียกของระบบ ควบคุมการเข้าถึง ประมวลผลเหตุการณ์ด้วยการจับเวลา (perf_event_open) นับความถี่และเวลาดำเนินการของการดำเนินการ ทำการติดตามโดยใช้ kprobes /uprobes /จุดติดตาม ด้วยการใช้การคอมไพล์ JIT รหัสไบต์จึงถูกแปลทันทีเป็นคำสั่งของเครื่องและดำเนินการด้วยประสิทธิภาพของโค้ดเนทีฟ DTrace สามารถนำไปใช้บน eBPF ได้ เช่นเดียวกับวิธีการนำไปใช้กับ eBPF
เทคโนโลยี DTrace ได้รับการพัฒนาสำหรับระบบปฏิบัติการ Solaris เพื่อแก้ปัญหาการติดตามเคอร์เนลของระบบและแอปพลิเคชันปลายทางแบบไดนามิก ทำให้ผู้ใช้สามารถตรวจสอบพฤติกรรมของระบบโดยละเอียดและวินิจฉัยปัญหาแบบเรียลไทม์ ในระหว่างกระบวนการแก้ไขข้อบกพร่อง DTrace จะไม่ส่งผลกระทบต่อการทำงานของแอปพลิเคชันที่กำลังศึกษาอยู่ และไม่ส่งผลกระทบต่อประสิทธิภาพในทางใดทางหนึ่ง ซึ่งช่วยให้คุณสามารถจัดระเบียบการวิเคราะห์ระบบที่ทำงานอยู่ได้ทันที จุดแข็งประการหนึ่งของ DTrace คือภาษา D ระดับสูง ซึ่งคล้ายกับ AWK ซึ่งสร้างสคริปต์การติดตามได้ง่ายกว่าการใช้เครื่องมือที่มีให้สำหรับการเขียนตัวจัดการ eBPF ใน C, Python และ Lua ด้วยไลบรารีภายนอก
วิศวกรจาก Oracle กำลังทำงานเพื่อสร้างแบ็กเอนด์ eBPF สำหรับ GCC และได้เผยแพร่แล้ว
นอกเหนือจากแบ็กเอนด์การสร้างโค้ดไบต์แล้ว แพตช์ที่เสนอสำหรับ GCC ยังรวมพอร์ต libgcc สำหรับ eBPF และเครื่องมือสำหรับการสร้างไฟล์ ELF ทำให้สามารถรันโค้ดในเครื่องเสมือน eBPF โดยใช้ตัวโหลดที่เคอร์เนลจัดเตรียมไว้ให้ สำหรับตอนนี้ โค้ดในภาษา C สามารถแปลเป็น bytecode ได้ (ฟีเจอร์ภาษาบางอันอาจไม่พร้อมใช้งาน) แต่ในอนาคต คาดว่าจะขยายขีดความสามารถของภาษา C ที่พร้อมใช้งาน เพิ่มการรองรับสำหรับภาษาอื่น สร้างเครื่องจำลอง และ เพิ่มการสนับสนุน GCC สำหรับการดีบักโปรแกรม eBPF โดยไม่ต้องโหลดลงในเคอร์เนล
ที่มา: opennet.ru