Memory allocator showdown
Bài tóm tắt Jane Street 2020 3. Quy mô lớn Độ khó: Khó
Jane Street · 2020 · 3. Quy mô lớn · Độ khó: Khó — bài gốc
Bối cảnh
- OCaml 4.10 thêm allocator best-fit bên cạnh allocator mặc định next-fit. Jane Street chuyển sang best-fit và thấy cải thiện lớn, nhưng bài kể cái khó là chứng minh điều đó.
Thay đổi chính
- Một benchmark chạy chậm đi khi đổi allocator (34,3 s → 36,1 s). Đo thêm bộ nhớ thì thấy best-fit chậm hơn chút nhưng dùng ít bộ nhớ hơn.
- Trong ngôn ngữ có GC, GC chọn lúc giải phóng, nên hiệu năng không phải một điểm (bộ nhớ, thời gian) mà là một đường cong. Họ quét tham số
space_overheadtừ 20 tới 320 (1/4 tới 4 lần mặc định 80): với mỗi điểm next-fit đều có một điểm best-fit vừa nhanh hơn vừa nhỏ hơn, kể cả trên benchmark tệ nhất của best-fit. - Ở cấu hình mặc định, best-fit đứng ở điểm thiên về tiết kiệm bộ nhớ hơn, vì
space_overheadkhông tính phân mảnh. - Đo bộ nhớ bằng RSS chứ không bằng
top_heap_size: số sau bị lượng tử hoá (heap tăng theo khối lớn) và đếm cả phần heap chưa dùng. Next-fit bám khối trống cuối heap và dùng hết nó; best-fit lấp lỗ trước nên RAM thật dùng ít hơn mức heap cho thấy. - Đường cong lấy từ một mô hình 3 tham số
H = b/(t−a) + c:alà thời gian tối thiểu nếu không GC (best-fit cấp phát nhanh hơn),clà bộ nhớ tối thiểu nếu GC liên tục (best-fit phân mảnh ít hơn),blà hình dạng ở giữa.
Vì sao
- So một điểm mặc định với một điểm mặc định có thể cho kết luận ngược (best-fit "chậm hơn") vì hai allocator chọn điểm khác nhau trên đường đánh đổi.
Bài học cho SWE
- Với runtime có GC, so sánh thay đổi hiệu năng phải quét tham số GC và so đường cong, không so một cặp số.
- Chọn thước đo bộ nhớ cẩn thận: số do runtime báo có thể che phần cải thiện thật.
Liên quan
- Jane Street 2015 · Jane Street 2020 · Hudson River Trading 2022 (cũng nhấn phải benchmark từng workload)
- Đổi ngôn ngữ và runtime
#OCaml 4.10#best-fit allocator#next-fit allocator#fragmentation#space_overhead#space-time tradeoff#RSS#top_heap_size#GC model#benchmark methodology
Được nhắc tới trong
Chủ đề (1)
Công ty (1)
Bài tóm tắt (1)