Oracle dự định thiết kế lại DTrace cho Linux bằng eBPF

Công ty Oracle báo cáo về công việc chuyển các thay đổi liên quan đến DTrace lên thượng nguồn và kế hoạch triển khai công nghệ gỡ lỗi động DTrace trên cơ sở hạ tầng hạt nhân Linux tiêu chuẩn, cụ thể là sử dụng các hệ thống con như eBPF. Ban đầu, vấn đề chính khi sử dụng DTrace trên Linux là không tương thích ở cấp độ giấy phép, nhưng vào năm 2018, Oracle đã được cấp phép lại Mã DTrace theo GPLv2.

DTrace rồi thời gian dài được cung cấp như một phần của nhân mở rộng cho bản phân phối Oracle Linux, nhưng yêu cầu các bản vá nhân bổ sung để sử dụng trong các bản phân phối khác, điều này hạn chế việc sử dụng công nghệ này. Ví dụ như Oracle chuẩn bị hướng dẫn chi tiết cài đặt và sử dụng DTrace trên Fedora Linux. Lắp ráp cần thiết để cài đặt công cụ và sử dụng nhân Linux được xây dựng lại từ bản vá lỗi. Để tự động hóa việc thực thi tập hợp hạt nhân với các bản vá Oracle và Fedora, người ta đề xuất kịch bản.

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 trò chơi điện tử công cụ theo dõi hiện có.

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 bộ vá để tích hợp hỗ trợ eBPF vào GCC và đạt được bao gồm mã để hỗ trợ eBPF trong binutils GNU. Ban đầu, phần phụ trợ cho hỗ trợ eBPF dựa trên công nghệ LLVM, nhưng Oracle quan tâm đến sự xuất hiện trong GCC về khả năng tạo chương trình thường xuyên cho eBPF, điều này sẽ cho phép sử dụng một bộ công cụ cho cả việc xây dựng nhân Linux và xây dựng chương trình cho eBPF.

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

Thêm một lời nhận xét