LIRS ( Low Inter-reference Recency Set ) は、LRU (Least Recently Used) や他の多くの新しい置換アルゴリズムよりもパフォーマンスが向上したページ置換アルゴリズムです。 [ 1 ]これは、「再利用距離」 [ 2 ]を局所性メトリックとして使用し、アクセスされたページを動的にランク付けして置換決定を行うことで実現されます。このアルゴリズムは、Song Jiang とXiaodong Zhangによって開発されました。
まとめ
地域性を定量化する
すべてのページ置換アルゴリズムは、機能するために参照局所性の存在に依存していますが、異なる置換アルゴリズム間の大きな違いは、この局所性をどのように定量化するかにあります。LIRSは、ページの再利用距離、つまり、そのページへの2つの連続した参照の間にアクセスされた異なるページの数を使用して局所性を定量化します。具体的には、LIRSはこの目的のために、最後の参照と最後から2番目の参照(存在する場合)を使用します。ページが初めてアクセスされた場合、その再利用距離は無限です。対照的に、LRUは、ページの参照後にアクセスされた異なるページの数であるページの最新性を使用して局所性を定量化します。最新のアクセス履歴を考慮するために、LIRSの実装では、実際には、ページの再利用距離と最新性のうち大きい方を局所性を定量化するメトリックとして使用し、RD-Rと表記します。キャッシュの容量がCページであると仮定すると、LIRSアルゴリズムは、最近アクセスされたページをRD-R値に従ってランク付けし、最もランクの高いCページをキャッシュに保持します。
再利用距離と再利用の最新性の概念は以下のように視覚化できます。ここで、T1とT2はそれぞれページBの最後から2番目と最後の参照時刻であり、T3は現在時刻です。
. . . B . . . B . . . . . . . . . . B . . . . . ^----再利用距離---^--最新性--^ T1 T2 T3
代替犠牲者の選択
LIRSはキャッシュされたページと一部のキャッシュされていないページのメタデータを整理し、以下に説明する置換操作を実行します。これはグラフ[ 3 ]の例でも示されています。
LIRSの交換作業- キャッシュは、低参照最新性(LIR)パーティションと高参照最新性(HIR)パーティションに分割されます。LIRパーティションには最もランクの高いページ(LIRページ)が格納され、HIRパーティションにはその他のページ(HIRページ)が格納されます。
- LIRパーティションにはキャッシュの大部分が格納されており、すべてのLIRページはキャッシュ内に常駐しています。
- 最近アクセスされたすべてのページは、LIRSスタック(グラフのスタックS )と呼ばれるFIFOキューに配置され、常駐HIRページも別のFIFOキュー(グラフのスタックQ )に配置されます。
- アクセスされたページはスタックSの最上部に移動され、スタックの最下部にあるHIRページは削除されます。例えば、グラフ(a)でページBにアクセスした後、グラフ(b)が生成されます。
- スタックS内のHIRページにアクセスすると、それはLIRページに変換され、それに伴い、スタックSの最下部にあるLIRページがHIRページに変換されてスタックQの最上部に移動します。例えば、グラフ(a)上のページEにアクセスした後、グラフ(c)が生成されます。
- ミスが発生し、常駐ページを置き換える必要がある場合、スタックQの最下部にある常駐HIRページが置き換え対象として選択されます。例えば、グラフ(a)でページDとページCにアクセスした後、それぞれグラフ(d)とグラフ(e)が生成されます。
参考文献
- ↑ Jiang, Song; Zhang, Xiaodong (2002年6月). "LIRS: バッファキャッシュのパフォーマンスを向上させるための効率的な低相互参照最新性セット置換ポリシー". ACM SIGMETRICS Performance Evaluation Review . 30 (1): 31–42 . doi : 10.1145/511399.511340 .
- ↑ Mattson, RL; Gecsei, J.; Slutz, DR; Traiger, IL (1970). "ストレージ階層の評価手法" . IBM Systems Journal . 9 (2): 78– 117. doi : 10.1147/sj.92.0078 .
- ↑ Song Jiang; Xiaodong Zhang (2005). "弱い局所性ワークロードにLRUを適応させる:バッファキャッシュのパフォーマンスを向上させる新しい置換アルゴリズム". IEEE Transactions on Computers . 54 (8): 939–952 . Bibcode : 2005ITCmp..54..939J . doi : 10.1109/TC.2005.130 . S2CID 11539061 .
- ↑ svn コミット - mysqldoc@docsrva: r6768 - trunk/ndbapi
- ↑ Infinispanの立ち退き、バッチ処理の更新、LIRS
- ↑ Song Jiang、Feng Chen、Xiaodong Zhang、「 CLOCK-Pro: CLOCK 置換の効果的な改善」、2005 年 USENIX 年次技術会議 (USENIX'05) 議事録、カリフォルニア州アナハイム、2005 年 4 月。
- ↑ FreeBSD/Linuxカーネル相互参照 sys/uvm/uvm_pdpolicy_clockpro.c
外部リンク
- Rik van Riel による「O(1) VM に向けて」は、 Linux におけるキャッシュとプログラム メモリのバランスを取るために LIRS を使用する可能性について述べています。
- CLOCK-Proページ置換の実装に関する報告書。
- Linuxメモリ管理開発チームによって設立された高度なページ置換プロジェクト。
- CLOCK-ProパッチはRik van Rielによって開発されました。
- CLOCK-ProパッチはPeter Zijlstra氏によって開発されました。
- CLOCK-Proは、 Wolfgan Mauerer著の書籍『Professional Linux Kernel Architecture 』の「Linuxと学術」の章で例として挙げられています。
- Ali R. Butt、Chris Gniady、Y. Charlie Hu による、LIRS と他のアルゴリズムのパフォーマンスの違いを詳細に説明した論文「カーネルプリフェッチがバッファキャッシュ置換アルゴリズムに及ぼすパフォーマンスへの影響」。