2013-06-05 24 views
8

Tôi muốn sử dụng trình phân bổ mục đích chung hiệu suất cao như jemalloc/tcmalloc với một nhóm bộ nhớ. Có hướng dẫn cho việc này không? Tôi không muốn sử dụng jemalloc/tcmalloc làm địa chỉ thay thế cho malloc.Sử dụng tcmalloc/jemalloc với trình quản lý nhóm bộ nhớ tùy chỉnh

Tôi có hồ bơi bộ nhớ sử dụng libarena và khắc một khu vực bộ nhớ lớn (2GB). Tôi muốn tạo các đối tượng có kích thước cố định như gslice trên đấu trường này để nói 1 GB. (như bảng phân bổ bản đồ Bonwick) và muốn sử dụng phần còn lại của bộ nhớ để phân bổ mục đích chung có kích thước thay đổi. Tôi muốn có jemalloc/tcmalloc sử dụng khu vực bộ nhớ này. Điều này có thể không? Bất kỳ ý tưởng nào về cách tôi có thể tiến hành? Nếu có thư viện thay thế, tôi cũng muốn nghe về nó.

+1

Chúc may mắn nhận được câu trả lời này, tôi cũng thực sự muốn câu trả lời này, vui lòng xem http://stackoverflow.com/questions/23341587/malloc-like-function-using-custom-heap câu hỏi của riêng mình. – Vality

+0

Tôi đã viết một trình phân bổ cụ thể cho ứng dụng của chúng tôi. Một điều mà hóa ra lại là một ý tưởng tiện lợi thực sự là khái niệm giảm tất cả các phân bổ có thể cho một số lượng nhỏ các kích thước "lượng tử". Dưới 4k = 8 byte, 4k..16k = 16 byte ... tối đa 64MB tối đa. Tôi đã kết thúc với chỉ có khoảng 1000 kích cỡ khác nhau tất cả các con đường lên đến 64 MB. Rác ram là thấp vì kích thước của không gian lãng phí là một chức năng của kích thước của phân bổ. Điều này cho phép tái chế cọc cho mỗi kích thước. Một miễn phí chỉ là một sự thúc đẩy và phân bổ là một cửa sổ pop, trừ khi đống đó trống cho kích thước đó. – johnnycrash

+0

Tôi không có câu trả lời cho bạn, nhưng bạn có thể tìm thấy một số thông tin hữu ích về chuỗi jemalloc này liên quan đến việc phân bổ bộ nhớ như các đấu trường bổ sung cho các trình phân bổ tùy chỉnh tại đây: http://www.canonware.com/pipermail/jemalloc-discuss/2015 -January/000988.html – acanaday

Trả lời

2

Đây là câu hỏi cũ, nhưng cuối cùng cũng có câu trả lời tích cực, ít nhất là nơi có liên quan đến số jemalloc. Kể từ jemalloc phiên bản 4.0.0, bạn có thể sử dụng mallctl để đặt móc cho nơi phân bổ chunked có được bộ nhớ bằng cách sử dụng giao diện arena.<i>.chunk_hooks. Các móc này được ghi lại trong jemalloc manpage, bao gồm một số tham chiếu chéo.

Tôi không biết về bất kỳ giao diện tương tự nào trong tcmalloc; Tôi không sử dụng nó.

Tôi đã trả lời một số similar question bán gần đây; cũng có thể có thông tin hữu ích ở đó.

Các vấn đề liên quan