@naota344の今週のLKML

今週は

  • Unionmount status?
  • mm/fs: cleancache documentation

Unionmount status?

http://permalink.gmane.org/gmane.linux.kernel/1125301

http://d.hatena.ne.jp/meech/20110327 で紹介した overlay filesystem の別実装? Union mounts を試してみよう!という投稿です。 http://valerieaurora.org/union/ に git tree へのリンクがあるようですが、最近のVFSまわりの変更のせいか、うまくあたらない様子…。

overlay filesystem, union mounts, aufs2 http://aufs.sourceforge.net/ といろいろと unionfs の実装がありますが…どれでもいいから早く入ってほしいものです…

mm/fs: cleancache documentation

http://permalink.gmane.org/gmane.linux.kernel.mm/61249

"cleancache" という新しいVFSの機能についてのドキュメントを追加するパッチ。

cleancache は、その名の通り「クリーンな(HDDなどと内容が同じである)ページ」をキャッシュするための機能。基本的には、メモリが不足してきた時にクリーンなページをこの cleancache へとキャッシュさせてメモリを空けます。その後、実際のディスクにアクセスする代わりに、この cleancache を見てそこに要求するページがあればそこから読み出すことで遅いディスクにアクセスすることなくパフォーマンスを向上できる、というもの。

では、なぜ「クリーンなページ」に限定されているのでしょうか。これはこの cleancache の実装を見てみるとわかります。 cleancache はそのページキャッシュを "Transcendent Memory" というものに保存します。この "Transcendent Memory" は以下のような性質を持った(仮想の)「メモリ」です。

  • サイズは誰にもわからない
  • 書きこみは失敗するかもしれない
  • 読み出そうとした時には、そのデータはもう消えているかもしれない

と、一見するといいかげんでいいところなんてないような「メモリ」に見えます。しかし、こういった性質を前提として知ってさえいれば「消えてもいいキャッシュ」をまる投げするのに最適な「メモリ」でしょう。読む時には「消えているかも」というのは逆にいえば Transcendent Memory 側から、そのユーザに対して「この部分消してもいいかな?」などのお伺いをたてずにいつでも気軽に削除できる、ということですから。 Transcendent Memory については、 LWN http://lwn.net/Articles/340080/ にも記事がありますので、そちらも見てみてください。

さて、 Transcendent Memory のこういった性質からここにキャッシュされるのは「クリーンなページ」に限られているわけですね。

また、この cleancache はVM用途でも効果を発揮するようです。ある同一物理デバイスのキャッシュを複数のVM間で共有しようとする時に、普通のメモリで実装しようとするとなかなかハードになります。一方で、 Transcendent Memory にキャッシュの大部分の実装をおまかせしてしまうことでカーネルへのシンプルな変更だけでVM間のキャッシュの共有が可能になります。(ファイルシステムの固有ID、ファイルキー、indexの組をキーにしてキャッシュを保管するらしい)


それにしても、この Transcendent Memory って実際にはどこに保管されるんでしょうか…。 SSDあたりとか…? 実体がいまいち見えない… (まぁ、その実態が見えないおかげで圧縮したり分散したりが簡単になるのでしょうが…) DragonFly の swapcache と通じるものがあるのだろうか…。

http://permalink.gmane.org/gmane.comp.file-systems.ext4/24396

この機能をファイルシステムごとに ON/OFF されるのではなく、マウントオプションで制御できないか、とのコメントがついています。たとえばマウントオプションで機能をOFFにできなければバックアップなんかのさいには全てのデータページが読みこまれて、キャッシュにのって本当に重要なキャッシュを押し出してしまうのでは?と指摘しています。