2013-06-05 5 views
8

jemalloc/tcmalloc과 같은 고성능 범용 할당자를 메모리 풀에 사용하고 싶습니다. 이 일을위한 가이드가 있습니까? malloc의 드롭 인 대체품으로 jemalloc/tcmalloc을 사용하고 싶지 않습니다.tcmalloc/jemalloc을 사용자 정의 메모리 풀 관리자와 함께 사용

나는 libarena을 사용하는 메모리 풀을 가지고 있으며 대용량 메모리 영역 (2GB)을 조각합니다. 고정 된 크기의 객체 풀을 gslice과 같이이 경기장에 1GB 정도 만들고 싶습니다. (Bonwick 슬랩 할당 자처럼) 가변 크기의 범용 할당을 위해 나머지 메모리를 사용하고 싶습니다. jemalloc/tcmalloc이 메모리 영역을 사용하고 싶습니다. 이것이 가능한가? 어떻게 진행할 수 있을지에 대한 아이디어가 있습니까? 대체 라이브러리가있는 경우 이에 대해서도 듣고 싶습니다.

+1

행운을 빌어 이것에 대한 답변을 얻었으니이 답변을 정말로 원했습니다. 내 http://stackoverflow.com/questions/23341587/malloc-like-function-using-custom-heap 자신의 질문을 참조하십시오. – Vality

+0

우리 애플 리케이션을 위해 특별히 할당자를 썼다. 진정한 멋진 아이디어로 밝혀진 한 가지는 모든 가능한 할당을 소수의 "양자"크기로 줄이는 개념이었습니다. 4k = 8 바이트 미만, 4k..16k = 16 바이트 ... 최대 64MB까지 나는 최대 1000MB 크기까지 64MB까지 밖에 가지 못했습니다. 낭비 된 공간의 크기가 할당 크기의 함수이기 때문에 낭비 된 램은 낮았다. 이것은 각 크기에 대한 재활용 더미를 허용했습니다. 더미는 그 크기만큼 비어 있지 않은 한 무료였습니다. alloc은 팝이었습니다. – johnnycrash

+0

나는 당신에게 답이 없지만, 여기에 사용자 정의 할당자를위한 추가 영역으로 메모리를 할당하는 것에 관한이 jemalloc 스레드에 대한 유용한 정보를 찾을 수 있습니다 : http://www.canonware.com/pipermail/jemalloc-discuss/2015 -January/000988.html – acanaday

답변

2

이것은 오래된 질문이지만, 마침내 긍정적 인 대답이 있습니다. 적어도 jemalloc과 관련 있습니다. jemalloc 버전 4.0.0부터 arena.<i>.chunk_hooks 인터페이스를 사용하여 청크 된 할당이 메모리를 가져 오는 위치에 대한 후크를 설정하려면 mallctl을 사용할 수 있습니다. 이러한 후크는 많은 상호 참조를 포함하여 jemalloc manpage에 잘 설명되어 있습니다.

tcmalloc의 유사한 인터페이스에 대해서는 알지 못합니다. 나는 그것을 사용하지 않는다.

나는 반세기로 similar question이라고 대답했다. 거기에 유용한 정보가있을 수 있습니다.