Namazu-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ON_MEMORY_MAX の動作に関して



寺西です。

# 大雑把な説明ですみません。

adfa adfa wrote:
> 
> conf.plを直接編集し、ON_MEMORY_MAXの設定値を変えて、適正
> 値を出そうと試験を実施しておりました。
...
> ON_MEMORY_MAXで500MBとしたとき、てっきりメモリ上に500MB
> 分溜め込み、500MBに達したとき初めてインデックスファイル
> へ書き出す物と思っていたのですが、実際問題溜め込んでいる
> データは一時的にどこに蓄えられているのでしょうか?

ON_MEMORY_MAX という名前から想像されるのとは、少々違った働き
をします。

読み込んだファイルサイズの合計が ON_MEMORY_MAX を超えた時点で、
インデックスファイルの書き出しが行われます。

ただし、ファイルは逐次読み出して、インデックス作成処理を行います。
(インデックスファイルの書き出しは行われません。インデックス
ファイルへの書き出しは、まとめて行います。) ... A

これは、ON_MEMORY_MAX を超えるまでファイルを読み込んだ後に、
メモリ上の各ファイルのインデックス作成処理を行い、インデックス
ファイルに書き出すわけではないということです。... B

B の場合、(ON_MEMORY_MAX を少し超える)ファイルサイズの合計以上、
主メモリを使用することが考えられますが、A の場合は主メモリの
消費量は B に比べて随分と少ないものと考えられます。

なぜなら、普通は
 ファイルのサイズ >> インデックス作成処理後のデータサイズ
の関係が成り立つためです。(データに依存)

大雑把にいうと、主メモリは、
mknmz プログラムサイズ + インデックスデータサイズ + その他のデータサイズ
からなり、ON_MEMORY_MAX を 2倍、4倍したとしても、それに比例して
増加するのは、インデックスデータサイズのみですので、
主メモリの消費が 2倍、4倍とはならないものと思われます。
そして、これは先にも述べたように ON_MEMORY_SIZE よりも随分と
小さいはずです。

そのため

> が、ON_MEMORY_MAXを5M/10M/100M/500Mと変更していっても
> メモリの使用率はあまり変化が出ません。(設定がおかしいの

ということが起こっているものと思われます。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E