typerの日記: ひとつのディレクトリに百万個のファイル
色々うろちょろして目に止まったネタ
http://www.mimori.org/~h/tdiary/20050616.html#p02
経由
http://blog.livedoor.jp/shi3z/archives/24991969.html
2000年って近いようで遠い過去かな?
FreeBSDでいうと4.0がでて4-stableの始まった年。
文字通りWin2kな年。
自分的にはFreeBSDも使ってたけどWin98SEで頑張ってた頃。
少なくとも1世代前、人により2世代、3世代前の話ですか。
その頃の事は良くわかんなかったりするけどBSDのBの字もでないのは悲しいかなと思ったり。
と、前置きはおいといて、手元の5-stableで試してみる。
作るのは0サプレスしない8桁の連番ファイルで内容はファイル名、つまり8byteのファイル。これをperlで作る。作るループの前後でPOSIX::times関数使って計測もしてみた。さらにtcshビルトインのtimeも使う。
とりあえず十万個はなんなくいけた。
消費したのは197Mbyte。あれ?1ファイル512バイトじゃ?とか思ったけど実際1ファイル2kバイト使ってる。
結果は、
% time perl .makefile
69.828125 real, 6.929688 user, 17.875000 sys
6.976u 17.893s 1:09.94 35.5% 15+1424k 1106+10io 0pf+0w
% time ls > /dev/null
1.845u 0.046s 0:02.01 93.5% 32+16639k 2+0io 4pf+0w
% time du -h
197M .
0.225u 2.155s 0:02.75 86.1% 10+13907k 694+0io 0pf+0w
こんな感じ。
さて、クラッシュしても良いようにして次は百万個いってみよう。
#たぶんクラッシュはしないだろうけどね。
ひとつのディレクトリに百万個のファイル More ログイン