[groonga-dev,01507] Re: mroongaのメモリ解放方法について

アーカイブの一覧に戻る

磯部 和広 k-iso****@rozet*****
2013年 6月 28日 (金) 16:13:03 JST


いつもお世話になっております。

[groonga-dev,01506] Re: FULLTEXT initializationについて
に関する
 別のDBを作成し、同じ構造のデータを持たせる
実験の際に、知見を得ましたので報告します。

須藤さんの下記に関連すると思うので、MLのスレッドをここに繋げました。

>須藤:
>  * mroongaはメモリーを開放していると考えている。
>    * 「mroongaがメモリーを開放している」とはmroongaがOSにメ
>      モリーを返していることだけを表現している。
>    * もしかしたらFLUSH TABLES;で開放していない可能性はある
>      かもしれないが、mysqldを終了したら確実に開放していると考え
>      ている。

■やった事■

DBを作成し、mroongaをストレージエンジンとしたテーブルを作成します。

次いで、MySQLを停止せずに、該当DBのmroongaのデータファイルを
別ドライブに移動させ、元の場所にシンボリックリンクを張ります。

該当DBに対し、FLUSH TABLES; を実行します。


この時点で、ファイルの実体は別ドライブに移っているのですが、
duコマンドで見ると使用量は減っているのに、
dfコマンドで見ると、使用量は変わっていません。

mroongaが掴んだままになっているようです。

mysqldをシャットダウンして、再度dfコマンドで確認すると
使用量は実体と合ったものになります。

■自分の考え■

mroongaがFLUSH TABLES; を実行したタイミングで
mmapしたメモリをOSに返却しているなら、
その時点でdfコマンドの結果が正常(実態通り)になると想像しているのですが。

どうも、mroongaはOSではなくMySQLに返却し、
MySQLが終了したタイミングで解放されているように見えます。

もしくは、何らかの情報がMySQLからmroongaに引き継がれ、
その情報が邪魔をして
 OSはまだMySQLが使用している
と判断しているのか・・・

そのへんは詳しくないので判りませんが、どうもそんな感じです。




groonga-dev メーリングリストの案内
アーカイブの一覧に戻る