[Armadillo:03358] Re: NAND上のファイルへのlsに時間がかかります

Yasushi SHOJI email@hidden
2008年 9月 1日 (月) 21:21:45 JST


At Thu, 28 Aug 2008 16:49:18 +0900,
Yasushi SHOJI wrote:
> 
> At Thu, 28 Aug 2008 15:21:41 +0900,
> fukunaga wrote:
> > 
> > >もしかすると、完全にGCされていないんじゃないでしょうか?
> > >test.csvを移動すると、どうなります?移動のときに mvではなくて以下のコ
> > >マンドで移動してみてください。
> > >
> > >         $ mv test.csv test.orig
> > >         $ cat test.orig > test.csv
> > >         $ rm test.orig
> > >
> > >この後に lsするとどうなりますか?
> > 
> > 実行しました。するとGCが働くのか、マウント直後のUsedサイズが小さくなり、
> > 52秒だったlsが3秒になりました!!
> > ただ、その後アンマウント・マウントを繰り返しても変化はありませんでした。
> > 書き込んだことでGCが動作起動されたように見えます。
> 
> おー、なるほど。ってことは、jffs2の制限ですね。
> (GCって書いてしまいましたが、速度の方はGCじゃなくて play-backですね。
> サイズが減るのは GCのおかげです)

元々の話では、sqliteを jffs2上に置いてという話だったと思います。
sqliteにcommit (update?)するときに、かならず open/write/closeのシーケ
ンスで処理されてしまうので、jffs2のようなfs上では他のfsには無い制限が
できてしまいますね。

dbにに限った話ではなく、logのように追記していくものには jffs2には向か
ないようです。もちろん、rotateすれば良いのですが。

	http://lists.infradead.org/pipermail/linux-mtd/2008-January/020386.html

ただ、jffs2はフラッシュメモリという特殊なデバイスを簡単に使えるように
しているので、一概にjffs2が悪いとも言えないと思います。

さて、現実的にはなんとかしなければならないと思うのですが、

 - いつもは、ram上に置いておき、shutdownの前に jffs2に移動する
 - sqliteに commit(update/insert)した後に catを使って移動する

という対応策が考えられると思います。ただ、システムの方までわかっていな
いのでどうすれば良いのかわかっていません。もし良い方法があれば
教えてください。
-- 
           yashi



armadillo メーリングリストの案内