[論文レビュー] User Mode Memory Page Allocation: A Silver Bullet For Memory Allocation?
本論文では、カーネルからユーザースペースにメモリページの割り当てを移行することで、MMUページマッピングへの直接的・ボトムアップアクセスを可能にするユーザーモードページアロケータを提案する。ベンチマークでは、0–8MBのブロックに対して最大10倍の高速化と、リサイズで最大4.5倍の高速化が得られ、実世界のアプリケーションでは最大5.68%の向上が見られ、完全なOSサポートと新しいアロケータAPIを備えた場合、100倍のパフォーマンス向上が見込まれる。
This paper proposes a novel solution: the elimination of paged virtual memory and partial outsourcing of memory page allocation and manipulation from the operating system kernel into the individual process' user space - a user mode page allocator - which allows an application to have direct, bare metal access to the page mappings used by the hardware Memory Management Unit (MMU) for its part of the overall address space. A user mode page allocator based emulation of the mmap() abstraction layer of dlmalloc is then benchmarked against the traditional kernel mode implemented mmap() in a series of synthetic Monte-Carlo and real world application settings. Given the superb synthetic and positive real world results from the profiling conducted, this paper proposes that with proper operating system and API support one could gain a further order higher performance again while keeping allocator performance invariant to the amount of memory being allocated or freed i.e. a 100x performance improvement or more in some common use cases. It is rare that through a simple and easy to implement API and operating system structure change one can gain a Silver Bullet with the potential for a second one.
研究の動機と目的
- メモリ容量の増大に伴い、メモリ速度の伸びを上回るようになるカーネルモードのメモリ割り当てによるパフォーマンスボトルネックを解消すること。
- ユーザースペースにページ割り当てを移行することで、カーネルトラップを排除し、割り当てオーバーヘッドを低減できるかどうかを調査すること。
- 従来のカーネル管理のmmap()呼び出しの代替として、ユーザーモードページアロケータの実現可能性とパフォーマンスを評価すること。
- バッチ割り当てを可能にし、アドレスの再割り当てを回避する、スケールインvariantな新しいアロケータAPIの可能性を検討すること。
- ユーザーモードページ割り当てが、現代のメモリ集約的ワークロードに適した次世代の高性能メモリアロケータの実現を可能にするかどうかを特定すること。
提案手法
- ユーザースペースでのメモリ管理を用いて、mmap()システムコールインタフェースをエミュレートするユーザーモードページアロケータの設計および実装。
- 合成的なモンテカルロワークロードおよび実世界のアプリケーションにおいて、標準のカーネルモードmmap()と比較して、ユーザーモードアロケータのベンチマークを実施。
- 元のバイナリを変更せずに、ユーザーモードアロケータに置き換えるためにバイナリパッチを用い、実世界の展開をシミュレート。
- さまざまなブロックサイズ(0–8MB)、割り当てパターン、メモリアクセス特性の下でパフォーマンスを測定。
- キャッシュ動作とページフォールトの影響を分析し、キャッシュ汚染の低減がパフォーマンス向上に寄与しているかどうかを評価。
- バッチ割り当てをサポートし、効率を向上させるヒントを提供するN1527 C1X malloc API拡張を提案および参照。
実験結果
リサーチクエスチョン
- RQ1ユーザーモードページ割り当ては、メモリ割り当て中のカーネルトラップによるパフォーマンスペナルティを排除できるか?
- RQ2ユーザーモードページ割り当ては、さまざまなメモリブロックサイズにおいてスケールインvariantなパフォーマンスを達成できるか?
- RQ3ページフォールトハンドラを回避することで生じるキャッシュ汚染の低減が、割り当てパフォーマンスに与える影響は何か?
- RQ4ソースコードの変更なしに、ユーザーモードページ割り当てが実世界のアプリケーションパフォーマンスをどの程度向上できるか?
- RQ5従来のカーネル管理の割り当てと比較して、提案されたユーザーモードアプローチは、フラグメンテーション、局所性、スケーラビリティの観点でどのように異なるか?
主な発見
- ユーザーモードページアロケータは、1MBまでのブロックサイズでスケールインvariantなパフォーマンスを達成しており、割り当てサイズに関係なく一貫した挙動を示している。
- 0–8MBのブロックサイズでは、ユーザーモードアロケータがカーネルモードmmap()呼び出しに対して最大10倍のパフォーマンス向上を達成した。
- ブロックリサイズのパフォーマンスは、ユーザーモードアロケータによって最大4.5倍向上し、再割り当て処理のオーバーヘッドが低減していることが示唆された。
- 非常に小さな割り当てにおいて、ページングを行わない環境では2倍のパフォーマンス向上が観察された可能性があり、ページフォールトハンドラを回避することでキャッシュ汚染が低減したことが要因と考えられる。
- バイナリパッチを施したアプリケーションを用いた実世界のテストでは、1つのケースを除きすべてのシナリオでパフォーマンス向上が確認され、平均で+1.88%、中央値で+1.20%の向上が得られた。
- 本研究では、完全なOSおよびAPIサポートが得られた場合、さらなる10倍から100倍のパフォーマンス向上が可能であると示唆されており、特に頻繁または大容量の割り当てを伴うワークロードで顕著である。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。