あまりCNET向きとは言えない技術的過ぎるTIPSで恐縮なのだが。
Linuxのドキュメントには次のように記載されている。
現行の単方向リンクのリストによるディレクトリの実装で、一つのディレクト リ内のファイル数は、実運用上約 10-15k 個が上限になります。この制限はこ のような大きなディレクトリ内のファイルを作成および削除 (さらに検索) す る時のパフォーマンスの問題のためです。
JF: Linux Kernel 2.4 Documentation: ext2.txt より
注:これは現在主流のext3ではなく古いext2のものだが、実際問題としてこの制限はほとんど変わっていない。xfsになると話は別だが。
ということで、ひとつのディレクトリにつくれるファイル数は1万個くらいにしておいたほうがいいようだ。
だが筆者の経験上ではせいぜい5000個くらいでやめておいたほうがいい。
これ以上になるとたとえばlsコマンドの反応も遅くなりがちで、開発やデバッグ作業自体が滞るからだ。
もちろん使用しているマシンやHDDの性能にもよる。
またxfsといったさらに最新のファイルシステムだとひとつのディレクトリに数十万個程度のファイルは余裕のようだ。
たくさんのファイルを自動生成するタイプのアプリをつくるケースは意外とよくある。
squidプロキシーサーバはWebページのキャッシュファイルを大量に持つわけだし、
postfixメールサーバも大量のメールがある場合にそれをキューとしてファイルに持たなければならない。
そういったソフトはたくさんのファイルを複数のディレクトリに分けて保存するようになっている。
通常のWebアプリでも、たとえばDBへの問い合わせ結果をキャッシュファイルに保存することで性能を上げるという手法はよくある。
そのため、PHP言語のPEARライブラリのCache_Liteライブラリでは、hashedDirectoryLevel というオプションが設けられ、たくさんのキャッシュファイルを生成してもそれが適宜複数のディレクトリに分けて保存されるようにすることで性能の劣化を防げるようになっている。
以上、どこかに書いてありそうであまり書かれていないTIPSでした。
※このエントリは CNET Japan ブロガーにより投稿されたものです。朝日インタラクティブ および CNET Japan 編集部の見解・意向を示すものではありません。
メンバー限定サービスをご利用いただく場合、このページの上部からログイン、またはCNET_ID登録(無料)をしてください。
新着コメント
こんなにブックマークが付いたのは初めてですな。 面白い現象だ。...
大企業は社内調整が忙しくて、顧客に構っている暇はない
投稿者 : 草木生(そうもくしょう)
hagoさん、syugetsuさん、コメントありがとうございます。 この問題、要は「......
スパコンの話を五輪招致みたいにしちゃいけないと思う
投稿者 : PowerYOGA
「1位じゃないから作る必要はない」という辺りからおかしいんですよね。別に......
スパコンの話を五輪招致みたいにしちゃいけないと思う
投稿者 : syugetsu
行政評価が必要なのはわかります。 しかし、自分の研究が不当に評価されてい......
ノーベル賞受賞者等の緊急声明もお門違い
投稿者 : Mr. Hone Norm
いきのむしさんコメントありがとうございます。 マカーの意味がわからなく......
Windows7のタスクバーがすごい
投稿者 : 加藤和江