ページングを考慮したガベージコレクターはありますか?


12

ガベージコレクションは、再生可能なメモリを見つけるために、生きているすべてのオブジェクトを訪問する必要があります。(多くの世代がこれを少し遅らせることで)

すべてが同じであるため、他のブロックをページインしてからページアウトする前に、すでにRAMにページングされているオブジェクトを最初に訪問することをお勧めします。

もう1つの可能性は、OSがプロセスからラムのページを取り去ろうとするとき、ページアウトする必要なく放棄できるページがあるかどうか、GCが最初に尋ねられることです。GCはほとんどの場合、ページからオブジェクトを移動することで実行されるため、OSがページを必要とする時間制限内にそのページをクリアできます。

それでも、GCが機能する順序を決定するOSページングシステムと統合されているガベージコレクターは思い出せません。


正確にはページングではありませんが、オブジェクトのメタデータを別のページに移動することにより、書き込みページのコピーに対するgcの影響を減らすために、ルビーエンタープライズエディション gcが書き直されました。
user1937198 14年


驚くべきことに、afaik / afaict、ほぼすべての(?)gcの文献は、抽象的にしかOSのページングを分析していないようです。アイデア:オブジェクト自体とは別の構造内のオブジェクト間のポインターを追跡するメモリ割り当てシステムは、すべてのオブジェクトではなく、コンパクトなスペースでポインター自体のみが(gc中に)トラバースされるため、よりローカル/ページングに適している可能性がありますメモリ内に広がる可能性のあるさまざまなサイズ(およびアクセス頻度の低い一部のページ)。多少のオーバーヘッドが発生する可能性がありますが、実装によっては全体的に節約できる可能性があります。
vzn

フラッシュドライブは、メモリのブロックへの配置を考慮したガベージコレクションのコピー形式を使用する必要がありますが、学術文献でそのようなことがどのように議論されているかはわかりません。そこで解決する問題は非常に異なります(スペースは非常に大きなブロックでしかリサイクルできないため、フラッシュドライブはGCを必要とします。そのため、ブロックにいくつかのライブページと多数のデッドページがある場合、ライブデータはページの前に他の場所にコピーする必要がありますリサイクルできます)が、データを統合する原則が役立つ場合があります。
supercat

データ項目がメモリチャンクサイズに比べてすべて小さい場合に使用したパターンは、各データ項目が前後に割り当てられた固定サイズのヘッダーと、可変サイズのデータ​​で構成されるようにすることでしたバックツーフロントで割り当てられます。テーブルは、論理チャンクアドレスを物理アドレスにマップし、各チャンクの空き容量を維持しました。各スキャンの後に、どのくらいのスペースがデッドになっているかも特定されます。参照はフラッシュに保存され、各参照の形式は「論理チャンク#7のアイテム#3」でした。GCサイクルは、すべてのライブデータを1つのチャンクから新しいチャンクにコピーし、
...-supercat

回答:


8

思い出すように、コピーコレクターはページングに適しているはずです。コピーによるトレースはポインター参照の局所性を向上させる傾向があるからです。これにより、プログラム(ミューテーター)にプラスの効果があり、リンクをたどるときにページフォールトが少なくなります。また、トレースによりページフォールトが少なくなるため、次の収集サイクルも改善されます。トレースアジェンダ(最初にポインタを処理する必要があります)は、データの局所性を改善する効果に影響を与える可能性があります。これは、さまざまなタイプのセル内のさまざまなポインターへのアクセス数に関する統計を測定することで改善できます。

現在、一般にトレースコレクターを検討する場合、通常はまだトレースされていないポインターを追跡する構造を維持する必要があります。同じページを指すすべての待機ポインターが一緒に保持されるように、この構造を編成することが可能かもしれません(ただし、そのようなポインターのリストを保持するために利用可能な手法によっては、より多くのスペースが必要になる場合があります)。可能なポリシーは、メモリ内のページへの待機ポインターが残っていない場合、同じページを指す待機ポインターの最大セットを常に最初にトレースすることです。

私が答えた後に追加された3番目の段落の質問に関して、コピーコレクションは再び答えです。ページが完全に解放されるため、OSは収集時に割り当てられた物理ページの数を減らす場合があります。マークアンドスイープコレクターでは、ページ全体がフリーになるイベントはおそらく非常にまれであるため、特定のメカニズムを考慮する価値はありません。

この種のアイデアは自然であり、おそらくいくつかの論文で説明されています。しかし、私はそれをすぐに思い出せません。Lisp GCの初期の論文には、これらのアイデアのいくつかが含まれていると思います(たとえば、carまたはcdrを最初にフォローすべきですか?)。

コピーコレクションのこの役割の良い点は、ページングが使用可能なストレージスペースを増やすため、コピーコレクションに適していることです。コピーコレクターは、原則として、実際のデータストレージに使用されるスペースの2倍のスペースを必要とすることを思い出してください。現在、ページングの効果は、マシンのアドレス空間と使用可能な物理メモリにも依存します。古いコンピューターでは、物理メモリは使用可能なアドレススペースよりもはるかに少なかったため、ページングは​​実際にはスペースボーナスであり、コピーGCなどのポリシーが許可されていました。物理スペースがアドレススペースと同じくらい大きい場合でも、GCを使用するプロセスがページングなしでより少ないアドレススペースを持つように、共有したい場合があります(ページングを参照))。これらの発言は、世代別コレクターを使用することにより、ある程度優先されます。彼らは一般に、まさにこれらの性質のために、若い世代のためにコピーコレクションを使用します、そしてそれは若い世代がほとんど短命だからです。

次に、世代別GCとキャッシュシステムとの相互作用がすべてあります。これについては、前の質問で説明しました。世代別ガベージコレクターは本質的にキャッシュフレンドリーですか?

これらの問題の詳細については、たとえば、キーワードGClocalityを使用してWebを検索します


コピーコレクターは実際にはトレースよりも「ローカル」であるという考えには疑問があります。コピーコレクターは、メモリアクセスダイナミクス(概念的にはほとんど区別できない)で、「古いスペース」をトレースすることと概念的に非常に似ているようです。これには参照が必要だと思います。それは、コピー機構が新しいスペースの連続性を改善する可能性があると述べた。新しいスペースは完全に連続して始まりますが、この「局所性」は時間とともに減少または低下します。
vzn

さて、あなたは答えのほとんどを見つけました。だから疑わないでください。これは、トピックの基本的なリファレンスにあります。ストレージが圧縮されているという事実、およびポインター構造(ポインターの再割り当てに伴って進化する可能性がある)に基づいて論理的に近いデータセルを互いに近接して置き換えるコピーからの局所性。
babou

まだ懐疑的/疑わしい。コピー/ GCサイクルが開始されると、古いスペースのローカリティおよび/または連続性が直感的に低下するようです。地域は、(旧宇宙から)読み込みに関連している(新しい空間への)書き込み。それを分析するには、ゲシュタルト/緊急行動を研究する必要があります。おそらくこれの多くは、理論的ではなく、効果的/正確/現実的に経験的に研究することができるだけです。
vzn

私はそれが他の多くのものと同様に文学にあると言っています。しかし、私はそれを検索する時間がないので、私の答えは長く、情報がぎっしり詰まっていると思います。簡潔で申し訳ありませんが、キャッチする電車を手に入れました。
バブー

申し訳ありません...この質問を他の質問と混同してください...それはもっとあります。
babou

7

Emery Berger、Matthew Hertz、およびYi Fengがこの作業を行いました。

ガベージコレクションには、ソフトウェアエンジニアリングの多くの利点がありますが、仮想メモリマネージャーとの相互作用は不十分です。既存のガベージコレクターは、特にフルヒープガベージコレクション中に、どのページがメモリにあるかに関係なく、アプリケーションのワーキングセットとタッチページよりもはるかに多くのページを必要とします。結果として生じるページングにより、スループットが急落し、一時停止時間が最大数秒または数分に急上昇する可能性があります。

ページングを回避するガベージコレクターを紹介します。このブックマークコレクターは、仮想メモリマネージャーと連携して、削除の決定をガイドします。

これはEmeryの講演のビデオであり、彼は紙のGarbage Collection Without Pagingを書いた

何らかの理由で、それ以降の作業や「現実の世界」での使用法がないようです。論文の最後では、「ブックマーク収集アルゴリズムの並行バリアントを開発していますと書かれていますが、追跡することはできません。

CRAMM:ガベージコレクションアプリケーションの仮想メモリサポートは、OSを変更してGCのページングを少なくすることを検討しています。

ページレジデンシーを使用してガベージコレクションをトレースする際のトレードオフのバランスをとる

ほとんどの場合、ページの常駐を使用してオブジェクトを再配置するタイミングを決定するコレクションをコピーする拡張機能を導入します。私たちのコレクターは、不必要な作業やスペースの無駄を避けて、高い居住性を備えたページを宣伝しています。各ページの常駐性を予測しますが、予測が不正確であることが判明した場合、コレクターはそれを使用して割り当て要求を満たすことにより、使用されていないスペースを回収します。この手法は、純粋なコピーコレクターよりもスペースを必要とせず、オブジェクトの再配置機能を犠牲にすることなくオブジェクトのピン留めをサポートします。私たちの測定は、私たちのハイブリッドがさまざまな条件下でうまく機能することを示しています。十分なヒープスペースがある場合はコレクションをコピーすることを好みますが、スペースが制限されると非コピーコレクションにフォールバックします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.