2013-06-05 9 views
8

jemalloc/tcmallocのような高性能汎用アロケータをメモリプールに使用したいと考えています。これを行うためのガイドがありますか? mallocのドロップイン代替品としてjemalloc/tcmallocを使用したくありません。カスタムメモリプールマネージャーでtcmalloc/jemallocを使用する

私はlibarenaを使用し、大きなメモリ領域(2GB)を彫刻するメモリプールを持っています。私は、このアリーナに例えば1GBのような固定サイズのオブジェクトプールを作成したいと考えています(gslice)。 (Bonwickスラブアロケータのように)、可変サイズ汎用割り付けに残りのメモリを使いたいとします。私はjemalloc/tcmallocこのメモリ領域を使用したいと思います。これは可能ですか?私はどのように進むことができますかに関する任意のアイデア?代替ライブラリがある場合は、それについても聞きたいと思います。

+1

この回答にお答えいただき、誠にありがとうございました。私のhttp://stackoverflow.com/questions/23341587/malloc-like-function-using-custom-heap自分の質問をご覧ください。 – Vality

+0

私は、私たちのアプリ専用のアロケータを書きました。本当の気の利いたアイディアであることが判明したことの1つは、すべての可能な割り当てを少数の「量子」サイズに減らすという概念でした。 4k = 8バイト未満、4k..16k = 16バイト...最大64mbまで私は結局のところ、最大約64 MBまで、約1000種類の異なるサイズしか持っていませんでした。無駄なスペースのサイズは割り当てのサイズの関数であったので、無駄なRAMは低かった。これにより、各サイズのリサイクルパイルが可能になりました。パイルがそのサイズで空でない限り、フリーは単なるプッシュであり、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と回答しました。そこにも有益な情報があるかもしれません。

関連する問題