Oracle đã phát hành DTrace cho Linux 2.0.0-1.14

Một bản phát hành thử nghiệm của bộ công cụ gỡ lỗi động DTrace dành cho Linux 2.0.0-1.14 được trình bày, được triển khai dưới dạng quy trình trong không gian người dùng sử dụng hệ thống con eBPF và các cơ chế theo dõi tiêu chuẩn do nhân Linux cung cấp. Về mặt chức năng, việc triển khai DTrace dựa trên eBPF gần giống với việc triển khai DTrace đầu tiên cho Linux, được triển khai dưới dạng mô-đun hạt nhân. Mã dự án được phân phối theo giấy phép GPLv2.

Bộ công cụ này có thể được sử dụng với các nhân Linux có hỗ trợ BPF. Để hoạt động, bạn cần thư viện libctf có hỗ trợ định dạng gỡ lỗi CTF (Định dạng loại nhỏ gọn), được bao gồm trong gói binutils bắt đầu từ bản phát hành 2.40 hoặc thư viện libdtrace-ctf được chuyển từ Solaris. Tùy chọn, hai bản vá được cung cấp cho hạt nhân 6.7, cho phép bạn sử dụng các tính năng nâng cao để lấy dữ liệu bổ sung về mô-đun và hạt nhân.

Công nghệ DTrace được phát triển để giải quyết các vấn đề về truy tìm động các ứng dụng kernel và end trong hệ điều hành Solaris. DTrace cung cấp cho người dùng khả năng giám sát hành vi của 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 đang đượ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 bạn tổ chức phân tích các hệ thống đang chạy một cách nhanh chóng. Một trong những điểm mạnh của DTrace là ngôn ngữ D cấp cao, tương tự như AWK, trong đó việc tạo tập lệnh theo dõi dễ dàng hơn nhiều so với việc sử dụng các công cụ được cung cấp để viết trình xử lý eBPF trong C, Python và Lua bằng các thư viện bên ngoài.

HÃY TÌM HIỂU:

  • Các nhà cung cấp có sẵn:
    • cpc (Bộ đếm hiệu suất CPU) - thu thập thông tin hiệu suất.
    • dtrace - Trình xử lý BEGIN, END và ERROR chạy trước hoặc sau các lần kiểm tra khác, cũng như khi xảy ra lỗi.
    • fbt (Theo dõi ranh giới chức năng) - theo dõi các cuộc gọi đến các hàm kernel.
    • lockstat - theo dõi trạng thái của ổ khóa.
    • pid - Theo dõi các lệnh gọi hàm trong các tiến trình đang chạy trong không gian người dùng.
    • proc - giám sát hoạt động liên quan đến quy trình như khởi động và tắt máy (ngã ba, thực thi, thoát, lỗi).
    • profile - lưu số liệu thống kê hiệu suất theo các khoảng thời gian được chỉ định.
    • sdt, rawtp - theo dõi hạt nhân tĩnh (SDT - Theo dõi được xác định tĩnh).
    • usdt: theo dõi ứng dụng tĩnh (USDT - Theo dõi được xác định tĩnh theo không gian người dùng)
    • lịch trình - giám sát việc phân bổ tài nguyên CPU.
    • sycall - Theo dõi việc vào và ra của các cuộc gọi hệ thống.
  • Tổng hợp dữ liệu được thu thập: khả năng sử dụng các hàm tổng hợp (avg, count, llquantize, lquantize, max, min, quantize, stddev và sum) và các hành động tổng hợp (xóa, chuẩn hóa, chuẩn hóa, printa). Hỗ trợ lưu trữ kết quả áp dụng các hàm tổng hợp trong mảng thông thường và kết hợp.
  • Hỗ trợ theo dõi suy đoán, cho phép bạn giám sát dữ liệu tạm thời, quyết định dữ liệu nào sẽ được ghi lại trong bộ đệm theo dõi và dữ liệu nào sẽ bị loại bỏ. Các chức năng có sẵn là suy đoán, suy đoán, cam kết và loại bỏ.
  • Hỗ trợ các biến toàn cục và cục bộ, TLS (Bộ lưu trữ cục bộ theo luồng), mảng và chuỗi kết hợp.
  • Cung cấp các biến tích hợp: arg0 - arg9, args[], caller, curcpu, curthread, epid, errno, execname, gid, id, pid, ppid, thăm dòfunc, thăm dò, tên thăm dò, thăm dò, ngăn xếp, tid, dấu thời gian, ucaller, uid, uregs[], ustackdeep, walltimestamp.
  • Các hành động được hỗ trợ: exit, freopen, ftruncate, mod, printa, printf, raise, setopt, stack, sym, system, trace, tracemem, uaddr, umod, ustack và usy.
  • Tính sẵn có của các hàm tích hợp: alloca, basename, bcopy, copyin, copyinstr, copyinto, copyout, copyoutstr, dirname, getmajor, getminor, htonl, htonll, htons, index, inet_ntoa, lltostr, mutex_owned, mutex_owner, mutex_type_adaptive, mutex_type_spin, ntohl , ntohll, ntohs, con cháu, rand, rindex, rw_iswriter, rw_read_held, rw_write_held, strchr, strjoin, strlen, strrchr, strstr, strtok, substr.
  • Sự hiện diện của bộ đếm dữ liệu không được bao gồm trong bộ đệm theo dõi.
  • Hỗ trợ biên dịch tập lệnh truy tìm D thành dạng chương trình BPF.
  • Biên dịch trước các hàm BPF cho các cuộc gọi thư viện.
  • Tùy chọn bpflog để lấy nhật ký xác minh của các chương trình BPF đã tải.
  • Tạo mã động và biên dịch trước mã để sử dụng lại trong các chương trình BPF.

Những thay đổi trong phiên bản mới:

  • Nhà cung cấp pid, được sử dụng để theo dõi các quy trình trong không gian người dùng, đã thêm hỗ trợ để theo dõi việc thực hiện các hướng dẫn bằng phần bù của chúng trong mã.
  • Đã thêm hỗ trợ cho việc sử dụng hàm stack() và ustack() để tổng hợp dữ liệu đã thu thập.
  • Khả năng loại bỏ các phần tử thuộc bất kỳ loại nào khỏi mảng kết hợp bằng cách gán chữ 0.
  • Đã thêm hành động in để xuất dữ liệu có cấu trúc với chú thích loại.
  • Đã thêm các hàm dựng sẵn mới cleanpath(), d_path() và link_ntop().
  • Đã thêm tham số "-xcpu", cho phép bạn liên kết các kiểm tra với các CPU cụ thể.
  • Đã thêm tùy chọn "-xlockmem" để giới hạn kích thước bộ nhớ.
  • Cung cấp khả năng lưu dữ liệu theo dõi quá trình (USDT) giữa các lần khởi động lại dtprobed.
  • Hỗ trợ cơ chế BTF (Định dạng loại BPF), cung cấp thông tin kiểm tra loại trong mã giả BPF.
  • Khả năng sử dụng tập lệnh cấu hình để xây dựng.

Nguồn: opennet.ru

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