Ich möchte einen universellen Allzweckzuordner mit hoher Leistung wie jemalloc
/ tcmalloc
mit einem Speicherpool verwenden. Gibt es einen Leitfaden dafür? Ich möchte jemalloc
/ tcmalloc
nicht als Ersatz für malloc
verwenden.
Ich habe einen Speicherpool, der libarena
verwendet und einen größeren Speicherbereich (2 GB) bearbeitet. Ich möchte Objekte mit festen Größen wie gslice
in dieser Arena für zB 1 GB erstellen. (wie der Bonwick-Platten-Allokator) und den Rest des Speichers für die Allzweckzuweisung mit variabler Größe verwenden wollen. Ich möchte, dass jemalloc
/ tcmalloc
diesen Speicherbereich verwendet. Ist das möglich? Irgendwelche Ideen, wie ich weitermachen kann? Wenn es eine alternative Bibliothek gibt, möchte ich auch davon hören.
Dies ist eine alte Frage, aber es gibt schließlich eine positive Antwort, zumindest wo jemalloc
betroffen ist. Seit jemalloc
Version 4.0.0 können Sie mallctl
verwenden, um Hooks zu setzen, bei denen Chunked-Zuweisungen Speicher abrufen, indem Sie die Schnittstelle arena.<i>.chunk_hooks
verwenden. Diese Hooks sind in der jemalloc-Manpage gut dokumentiert. einschließlich einer Reihe von Querverweisen.
Ich bin mir keiner ähnlichen Schnittstelle in tcmalloc
bewusst; Ich benutze es nicht.
Ich habe vor kurzem eine ähnliche Frage beantwortet; dort kann es auch nützliche Informationen geben.