2011年6月26日

[Namazu-devel-ja 1792] Re:大量ファイルでのmknmzのメモリ不足について

青柳です。

On Fri, 24 Jun 2011 17:00:18 +0900
Shigekazu Aoyagi <aoyagi@xxxxx> wrote:

環境を書き忘れていました。申し訳ございません。

OS:FreeBSD 8.2-RELEASE(i386)

Perl:5.12.3
メモリ:512MB
スワップ:471MB
limit:なし

mknmz -C の結果は最後に付け加えます。


> 手元のテストデータ(約200万ファイル)を一度にmknmzに掛けようとすると
> メモリ不足で強制終了してしまいました。調べてみますと、find_target()の
> 中で終了しているようです。

もう少し詳しく調べてみると、次の行でメモリ不足に陥っているようです。

# Sort file names with consideration for numbers.
@flist = map { $_->[0] }
sort { $a->[1] cmp $b->[1] }
map { my $tmp = $_; $tmp =~ s/(\d+)/sprintf("%08d", $1)/ge;
[ $_, $tmp ] } @flist;

ファイル名を数字の並び順にソートしている部分ですが、ざっと考えて

 ソート前の@flistで1
 ソート用のテンポラリ配列で2以上
 結果格納用の@flistで1

が同時に必要と思われますので、@flistの4倍以上のメモリが必要になることが
予想されます。(ソート前の@flistについては、perlの実装によってはソート用
配列を作成した時点で解放されるかもしれません)

今回のテストデータの場合、@flistは160MBありましたから、ここだけで
480MBもしくは640MBほどが必要になることになり、かなり厳しいことに
なります。

試しにですが、上記のソート処理をコメントアウトしてみたところ
200万件のデータでもインデクシングを開始できることを確認しました。
# 完了までには1日半ほどかかるため、今回はそこまで確認していません。
# 必要であれば実施いたします。


ソート処理をコメントアウトしたまま、小さなテストデータでインデックスを
作成してみたところ、特に問題なく終了しました。また、namazuコマンドで
正常に検索も行えているようです。


そこで質問なのですが、上記のソート処理を省くことによって、mknmzの実行上
問題はありますでしょうか。


以上、よろしくお願い申し上げます。

mknmz -C
Loaded rcfile: /usr/local/etc/namazu/mknmzrc
System: freebsd
Namazu: 2.0.20
Perl: 5.012003
File-MMagic: 1.27
NKF: module_nkf
KAKASI: /usr/local/bin/kakasi -ieuc -oeuc -w
ChaSen: no
MeCab: no
Wakati: module_kakasi
Lang_Msg: ja_JP.eucJP
Lang: ja_JP.eucJP
Coding System: euc
CONFDIR: /usr/local/etc/namazu
LIBDIR: /usr/local/share/namazu/pl
FILTERDIR: /usr/local/share/namazu/filter
TEMPLATEDIR: /usr/local/share/namazu/template
Supported media types: (35)
Unsupported media types: (13) marked with minus (-) probably missing application in your $path.
- application/excel: excel.pl
application/gnumeric: gnumeric.pl
application/ichitaro5: taro56.pl
application/ichitaro6: taro56.pl
- application/ichitaro7: taro7_10.pl
application/macbinary: macbinary.pl
- application/msword: msword.pl
- application/pdf: pdf.pl
- application/postscript: postscript.pl
- application/powerpoint: powerpoint.pl
- application/rtf: rtf.pl
application/vnd.kde.kivio: koffice.pl
application/vnd.kde.kpresenter: koffice.pl
application/vnd.kde.kspread: koffice.pl
application/vnd.kde.kword: koffice.pl
application/vnd.oasis.opendocument.graphics: ooo.pl
application/vnd.oasis.opendocument.presentation: ooo.pl
application/vnd.oasis.opendocument.spreadsheet: ooo.pl
application/vnd.oasis.opendocument.text: ooo.pl
application/vnd.openxmlformats-officedocument.presentationml: msofficexml.pl
application/vnd.openxmlformats-officedocument.spreadsheetml: msofficexml.pl
application/vnd.openxmlformats-officedocument.wordprocessingml: msofficexml.pl
application/vnd.sun.xml.calc: ooo.pl
application/vnd.sun.xml.draw: ooo.pl
application/vnd.sun.xml.impress: ooo.pl
application/vnd.sun.xml.writer: ooo.pl
application/vnd.visio: visio.pl
application/x-apache-cache: apachecache.pl
application/x-bzip2: bzip2.pl
application/x-compress: compress.pl
- application/x-deb: deb.pl
- application/x-dvi: dvi.pl
application/x-gzip: gzip.pl
- application/x-js-taro: taro7_10.pl
- application/x-rpm: rpm.pl
- application/x-tex: tex.pl
application/x-zip: zip.pl
- audio/mpeg: mp3.pl
message/news: mailnews.pl
message/rfc822: mailnews.pl
text/hnf: hnf.pl
text/html: html.pl
text/html; x-type=mhonarc: mhonarc.pl
text/html; x-type=pipermail: pipermail.pl
text/plain
text/plain; x-type=rfc: rfc.pl
text/x-hdml: hdml.pl
text/x-roff: man.pl
--
Shigekazu Aoyagi <aoyagi@xxxxx>

_______________________________________________
Namazu-devel-ja mailing list
Namazu-devel-ja@xxxxx
http://www.namazu.org/cgi-bin/mailman/listinfo/namazu-devel-ja


投稿者 xml-rpc : 2011年6月26日 11:19
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/104827
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。