Finding memory leaks with Memtrace
Bài tóm tắt Jane Street 2020 3. Quy mô lớn Độ khó: Trung bình
Jane Street · 2020 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc
Phần lớn bài là hướng dẫn dùng viewer; wiki chỉ giữ phần về thay đổi cách profile bộ nhớ.
Bối cảnh
- Trước đó OCaml có Spacetime: ghi mọi lần cấp phát. Tìm leak tốt nhưng overhead cao, cần một cấu hình compiler riêng, profile rất lớn và cần rất nhiều RAM để xử lý.
- OCaml 4.11 (2020) thêm hỗ trợ profile bộ nhớ thống kê trong runtime (Jacques-Henri Jourdan ở CNRS và Stephen Dolan của Jane Street): callback trên sự kiện GC cho một mẫu các lần cấp phát.
Thay đổi chính
- Thư viện Memtrace ghi sự kiện cấp phát/thu hồi của mẫu đó vào định dạng nhị phân gọn; Memtrace viewer phân tích và hiển thị. Cả hai mở mã nguồn.
- Bật bằng biến môi trường
MEMTRACEsau một dòngMemtrace.trace_if_requested (); dùng compiler thường, mọi nền tảng, overhead đủ thấp để chạy trong production. - Viewer: icicle graph theo nơi cấp phát (chia ngược về caller), đồ thị heap theo thời gian, lọc theo "còn sống trong khoảng t1–t2" và "cấp phát trong khoảng t3–t4" để tách object sống lâu hợp lệ khỏi leak.
- Thư viện cho phép viết phân tích riêng, ví dụ phân bố tuổi thọ object tạo trong một hàm hàng đợi để thấy producer nhanh hơn consumer mà không có backpressure.
Vì sao
- Lấy mẫu thay vì ghi hết đổi độ chính xác lấy khả năng chạy ở môi trường thật, nơi leak thật sự xảy ra.
- Theo bài, sau vài tháng dùng nội bộ, phần lớn leak tìm được chỉ với trực quan hoá cơ bản và câu "khoan, cái gì đây?".
Bài học cho SWE
- Profiler đủ rẻ để để sẵn trong production đáng giá hơn profiler đầy đủ chỉ chạy được trong môi trường đặc biệt.
- Leak và hàng đợi dồn trông giống nhau trên đồ thị heap; phải xem tuổi thọ object chứ không chỉ tổng.
Liên quan
- Jane Street 2022 (cùng hướng: công cụ quan sát nội bộ rồi mở mã nguồn) · Jane Street 2020 · Jane Street 2015
- Observability và monitoring · Đổi ngôn ngữ và runtime
#OCaml 4.11#statistical memory profiling#Memtrace#Spacetime#space leak#allocation sampling#icicle graph#lifetime analysis#queue backlog#production profiling
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (1)