Công ty Oracle
DTrace rồi
eBPF là trình thông dịch mã byte được tích hợp trong nhân Linux cho phép bạn tạo trình xử lý hoạt động mạng, giám sát hoạt động của hệ thống, chặn các cuộc gọi hệ thống, kiểm soát quyền truy cập, xử lý các sự kiện với việc duy trì thời gian (perf_event_open), tính toán tần suất và thời gian hoạt động, thực hiện theo dõi sử dụng kprobes/uprobes/tracepoints. Nhờ sử dụng trình biên dịch JIT, mã byte được dịch nhanh chóng sang hướng dẫn máy và được thực thi với hiệu suất của mã gốc. DTrace có thể được triển khai trên eBPF, tương tự như cách nó được triển khai trên eBPF
Công nghệ DTrace được phát triển cho hệ điều hành Solaris nhằm giải quyết các vấn đề về truy tìm động của nhân hệ thống và ứng dụng cuối, mang lại cho người dùng khả năng giám sát hành vi hệ thống một cách chi tiết và chẩn đoán sự cố trong thời gian thực. Trong quá trình gỡ lỗi, DTrace không ảnh hưởng đến hoạt động của các ứng dụng được nghiên cứu và không ảnh hưởng đến hiệu suất của chúng theo bất kỳ cách nào, điều này cho phép tổ chức phân tích các hệ thống đang chạy một cách nhanh chóng. Điểm mạnh của DTrace là ngôn ngữ D cấp cao, tương tự như AWK, trong đó việc viết tập lệnh theo dõi dễ dàng hơn nhiều so với khi sử dụng các công cụ viết trình xử lý được cung cấp cho eBPF trong C, Python và Lua với các thư viện bên ngoài .
Các kỹ sư của Oracle cũng đang nỗ lực xây dựng phần phụ trợ eBPF cho GCC và đã xuất bản
Ngoài phần phụ trợ để tạo mã byte, các bản vá được đề xuất cho GCC còn bao gồm một cổng libgcc cho eBPF và các công cụ để tạo tệp ELF, giúp có thể thực thi mã trong máy ảo eBPF bằng cách sử dụng trình tải do kernel cung cấp. Hiện tại, mã C có thể được dịch sang mã byte (không phải tất cả các tính năng ngôn ngữ đều khả dụng), nhưng trong tương lai, dự kiến sẽ mở rộng các tính năng ngôn ngữ C có sẵn để sử dụng, thêm hỗ trợ cho các ngôn ngữ khác, tạo trình mô phỏng và thêm hỗ trợ GCC để gỡ lỗi các chương trình eBPF mà không cần tải vào kernel.
Nguồn: opennet.ru