質問

私は、ファイルがアクセスされたときのイベントの様々なタイプをトリガーするinotifyを経由してファイルイベントを監視し、デーモンに取り組んでいます。私は、カーネルが監視されているすべてのファイルのフルパス名を記憶しているので、時計が、少し高価であることを読みました。

どのように多くの時計あまりにも多くのだろうか?

編集:主に、私は思ったんだけど...もしそうなら、あなたが今までそれが起こったのか、多くの時計で、顕著なパフォーマンスヒットを見たことがありますか?はい、私は再帰的に/(ただしその最小限のブートストラップシステム)を監視する必要があります。

役に立ちましたか?

解決

私の知る限り、カーネルは、パス名を格納しますが、iノードされていません。それにもかかわらず、32ビットシステム上でウォッチあたり540のバイトがあります。 64ビットの限りダブル。

私は百万の時計を持っている人(多分あなたはそれをチェックアウトしたい?)Lsyncdから知っています。それはちょうどメモリのギガバイトを食べます。

他のヒント

あなたは/proc/sys/fs/inotify/max_user_instances(inotifyを「オブジェクト」の最大数)と/proc/sys/fs/inotify/max_user_watchesを(ファイルの最大数は見て)読み込むことによって、システムの限界を見つけることができますので、あなたは、これらの数字を超えた場合、それは時計の最大数がある;-)あまりにも多くのです数千人以上の通常数十 - 私のシステムで、262143 - おそらくあなたは、ファイルシステム内のすべてのファイルを見るためにしようとしているが、あなたはそれを行うべきではありませんしない限り、あなたが必要があると思います以上です。私はちょうどあなたがする必要以上のinotifyの時計を使用しないようにしよう、とあなたは、パフォーマンスの大幅な減少に気づくしない限り、それについて心配しないでください、と言うでしょう。

私の情報:

[foo@caffeine ~]# cat /var/log/lsyncd.status | grep Inotify
Inotify watching 293208 directories

[foo@caffeine ~]# cat /proc/sys/fs/inotify/max_user_watches
1048576

lsyncdさは約130Mメモリのを使用しています。

私は、ディザスタリカバリサーバと同期して、いくつかのディレクトリを維持するためにlsyncdを使用します。

メインサーバ上ではありませんパフォーマンスヒット/ペナルティます。

100億件の兆のgazillionsはおそらく、あまりにも多くなります。 のカーネルコーナー - イントロがその数はすべきではない、少なくともので、「時計の何千もの」に言及する inotifyをします問題ます。

それはあなたが持っているどのくらいのラムによって異なります。

524288あなたは、特にメモリに制約された環境にいる場合、あなたは数を下げるために望むことができる、視聴することができるファイルの最大数ですが。各ファイルの時計はので、すべての524288個の時計が消費されていると仮定して、540バイト(32ビット)または〜1kBの(64ビット)を占めている256メガバイト(32ビット)または512メガバイト(64ビット)の周りの上限での結果ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top