inotify はどうやってディレクトリ監視を実現しているのか。実装の制限、というか罠について

22
AoiMoe a.k.aしお兄P @AoiMoe

しかしdirentなめるのもそんなに速いわけでもないあたりがアレで

2013-06-28 17:03:30
小崎 資広 (KOSAKI Motohiro) @kosaki55tea

@n_soda @AoiMoe kqueue拡張の話だったのですか。なるほど。いつかのKernel Summit でLinusがxxnotify系をマージしたのは失敗だった。もう二度としないといってたので、イマイチという自覚はあるようです

2013-06-28 17:07:35
AoiMoe a.k.aしお兄P @AoiMoe

@n_soda setrlimitで済むなら何も変更しなくて良いわけですが、ただ、inotifyはディレクトリにフック掛けるだけでいいので、全部のファイルにフック掛けるよりはずっと少なくて済むんですよねえ。

2013-06-28 17:08:47
AoiMoe a.k.aしお兄P @AoiMoe

しかし、どっちにしても完璧な監視を親からやるのはかなり難しい気がしてきた

2013-06-28 17:10:43
SODA Noriyuki @n_soda

@AoiMoe たしかにだいぶオーダーが違いますねえ。ときどき一ディレクトリに3万ファイルとか作る人いるし(白目 (なんかディレクトリが作れなくなったんですけど!と相談されたので見たら、ext3のハードリンク数32000制限に引っかかってたことがありました。orz)

2013-06-28 17:11:09
AoiMoe a.k.aしお兄P @AoiMoe

監視してるディレクトリの全てのinoを覚えておいて、それが開かれたらフックかける、とかしないといけないんだなあ

2013-06-28 17:12:03
AoiMoe a.k.aしお兄P @AoiMoe

s/監視してるディレクトリの全ての/&内容物の/

2013-06-28 17:14:00
AoiMoe a.k.aしお兄P @AoiMoe

inboxに14.6万個もファイルがあってすみません

2013-06-28 17:17:10
AoiMoe a.k.aしお兄P @AoiMoe

結局14.6万個ファイルがあればinoの表に14.6万エントリ必要になるじゃん、という。駄目だこれ

2013-06-28 17:19:07
AoiMoe a.k.aしお兄P @AoiMoe

ハードリンクを廃止しよう(提案)

2013-06-28 17:19:52
AoiMoe a.k.aしお兄P @AoiMoe

まあ「ハードリンクしてると駄目だよって書いておく」でもいいんだけどさ。

2013-06-28 17:21:08
AoiMoe a.k.aしお兄P @AoiMoe

いずれにしてもLinuxのinotify(7)はBUGSあたりに書いておかんといけないと思います

2013-06-28 17:21:40
小崎 資広 (KOSAKI Motohiro) @kosaki55tea

BSD方面からinotify(7)のドキュメントにパッチが飛んでくるなんて胸熱

2013-06-28 17:24:49
AoiMoe a.k.aしお兄P @AoiMoe

あーでもあれだ、やっぱりidentがfdってのは「実質的にcloseできないのでumountで困る」んだ

2013-06-28 17:38:13
Mitsuru SHIMAMURA @smbd

これでcronie w/ inotify ではまるんだよねぇ…。/etc/cron.d/から別の所にsymlink張ってsymlink先を編集してもだめっていう。 https://t.co/6Ajk0ED4pc

2013-06-28 21:57:20
わかめにゅーす号外(Linux関連) @wLinuxnews

inotifyでディレクトリにフックかける話 - 某日記 http://t.co/jNl507QzwJ

2013-06-29 03:15:11