blog.hamadu.net

2017/06/24 - メモリアロケータに関するサーベイ論文

Tags: paper

ヒープに作ったオブジェクトのメモリ管理はスタックのそれに比べ手間がかかる。メモリアロケータに関するサーベイ論文が スタックとヒープ - The Rust Programming Language からのリンクで紹介されていたので読んでみた。以下、まとめ兼自分用メモ。

  • 論文: Dynamic storage allocation: A survey and critical review. In (1995)
  • Rustで使われているメモリアロケータ : jemalloc

メモリアロケータ

  • クエリ(メモリの確保・開放)をオンラインで処理する必要がある
  • より省メモリ、かつ少ない時間でメモリを管理できたほうが良い(それはそう)

メモリアロケータの解析と評価

  • 確率的な解析手法が用いられてきたが、それは実際のユースケースをカバーしていない
  • 入力(プログラムの挙動)に依存するので、特定の状態が「悪い」かどうかは分からない
  • 実際のプログラムのトレースを取って解析するほうが健全
    • 論文では GCC、Perl 等を動かしたときのメモリアロケーションのプロファイルが紹介されている
    • プロファイルに出てくる特徴:
      • Ramps
      • Peaks
      • Plateaus
    • Peak時の挙動が性能に大きな影響を与える

使われてるテク

  • Deferred coalescing
  • Deferred reuse

そのうち追記。。。