DragonFly - A Scaleable Caching Infrastructure ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Caching Infrastructure Overview キャッシュ構造概説 Our goal is to create a flexible dual-purpose caching infrastructure which mimics the well known and mature MESI (Modified Exclusive Shared Invalid) model over a broad range of configurations. The primary purpose of this infrastructure will be to protect I/O operations and live memory mappings. For example, a range-based MESI model would allow multiple processes to simultaneously operate both reads and writes on different portions of a single file. If we implement the infrastructure properly we can extend it into a networked-clustered environment, getting us a long ways towards achieving a single-system-image capability. 私達の目標はよく知られ成熟している MESI (Modified Exclusive Shared Invalid) モデルによく似、各種設定の広い範囲にわたった柔軟で複数の目的に使用できるキ ャッシュ構造を生み出すことです。この構造の第一の目的は I/O 処理を保護し、 メモリマッピングを生かすことになります。例えば、範囲ベースの MESI モデルは、 1つのファイルの異なった位置へ書き込みと読み込みの両方を同時に実行する多様 なプロセスを許容するでしょう。私達がその構造を適切に実装できたなら、それを ネットワーククラスタの環境に拡張することが可能ですし、それが single-system-image の将来を実現することに向けた長い道のりの出発点になるの です。 Such a caching infrastructure would, for example, protect a write() from a conflicting ftruncate(), and would preserve atomicy between read() and write (). The same caching infrastructure would actively invalidate or reload memory mappings, effectively replacing most of what VNODE locking is used for now. このようなキャッシュ構造は、競合する ftruncate() から write() を保護します し、排他的な read() と write() 間を保護します。同様のキャッシュ構造は動的 な無効化あるいはメモリマッピングの再読み込みを行い、現在ロックされている VNODE の大部分を有効に再配置するでしょう。 The contemplated infrastructure would utilize two-way messaging and focus on the VM Object rather than the VNode as the central manager of cached data. Some operations, such as a read() or write(), would obtain the appropriate range lock on the VM object, issue their I/O, then release the lock. Long-term caching operations might collapse ranges together to bound the number of range locks being maintained, which allows the infrastructure to maintain locks between operations in a scaleable fashion. In such cases cache operations such as invalidation or, say, Exclusive->Shared transitions, would generate a message to the holding entity asking it to downgrade or release its range lock. In otherwords, the caching system being contemplated is an actively managed system. 予定されている構造は、 2方向メッセージングを活用し、キャッシュデータの中央 マネージャである VNode よりも、むしろ VM オブジェクト自体に焦点を合わせる でしょう。 read() や write() のような幾つかの動作は、それらの I/O に由来す る VM オブジェクトへ適切な範囲のロックをかけ、それからロックを開放するでし ょう。長期間にわたるキャッシュ動作は、保持されているロックの範囲の数をバウ ンドさせあう範囲を壊す場合があるかも知れません。そしてそれはその構造に動作 間のロックをスケーラブルな方法で保持することを許しています(:?)。このような ケースでは、キャッシュ動作(:?演算)は、例えば"無効になるかあるいは Exclusive から Shared へ移行するか"というその範囲ロックを降格させるか開放させるかを 尋ねるメッセージを、保持している要素に対して出力するでしょう。言いかえれば、 予定されているキャッシュシステムは積極的に管理されたシステムなのです。