MicrosoftはMITライセンスに基づいてライブラリをオープンしました
mimalloc の主な特徴は、コンパクトな実装 (コードが 3500 行未満) と非常に高いパフォーマンスです。で
パフォーマンスを評価するには、既存の
高いパフォーマンスは、主にフリー リスト シャーディングの使用によって実現されます。 mimalloc は、64 つの大きなリストの代わりに、それぞれがメモリ ページにバインドされた一連の小さなリストを使用します。このアプローチにより断片化が軽減され、メモリ内のデータの局所性が高まります。メモリ ページは、同様のサイズのブロックのグループ化されたセットです。 64 ビット システムでは、ページ サイズは通常 XNUMX KB です。ページ内に占有ブロックが残っていない場合、ページは完全に解放され、メモリがオペレーティング システムに返されるため、メモリのコストが削減され、長時間実行されるプログラムの断片化が軽減されます。
ライブラリは、リンク段階で組み込むことも、すでにアセンブルされたプログラム (「LD_PRELOAD=/usr/bin/libmimalloc.so myprogram」) にロードすることもできます。図書館でも提供しています
セーフ モードでライブラリを構築することが可能です。このモードでは、特別なメモリ チェック ページ (ガード ページ) がブロック境界で置き換えられ、ブロック分散のランダム化と解放されたブロックのリストの暗号化が使用されます。このような対策により、ヒープベースのバッファ オーバーフローを悪用する最も一般的な手法をブロックすることが可能になります。セーフ モードを有効にすると、パフォーマンスが約 3% 低下します。
mimalloc の特徴として、大きな断片化による肥大化の問題が発生しにくいことも挙げられます。最悪のシナリオでは、メモリ消費量はメタデータで 0.2% 増加し、分散メモリでは 16.7% に達する可能性があります。リソースにアクセスする際の競合を回避するために、mimalloc はアトミック操作のみを使用します。
出所: オープンネット.ru