2010/11/20

Galaxyのファイルシステムとプチフリ対策



Last update ; 20/May/2011

【Galaxyのハードウェア構成について】

Galaxy Sには、512MBのRAMの他に、512MBの単体NAND(OneNAND)と16GBのeMMCが搭載されています。

単体NAND側は、"/system"、"/dbdata"、"/cache"の3つのパーティションに仕切られており、eMMC側は/"data"と"/mnt/sdcard"の2つに仕切られています。

この内、eMMC内の"/mnt/sdcard"領域だけはWindowsでおなじみの"FAT32"でフォーマットされていますが、他のパーティションは、"rfs"でフォーマットされてます。

eMMCというのは、SDカードと互換性がある(というか前身の)MMC(マルチメディアカード)のインターフェースを使った組み込み用のNANDで、開発者の立場からすると、汎用の規格ですし、コントローラ内蔵なので、インターフェースを色々考えなくてよいという使い易さがあります。

MMCが古い規格なので、eMMCも「古い」とか「懐かしい」という記述を見掛けますが、スマートフォンの様な機器への組み込み用のNANDは、前述の設計段階での扱いやすさもあり、寧ろ、単体のNANDからeMMCに移行するトレンドにあります。

さて、Galaxyでは、そのeMMCの内、1.8GBがシステムやアプリが使うデータベース領域(/data/)に、残りの14GBがユーザ領域に割り当てられています。

「Galaxyには"moviNAND"が搭載されている」という記事を見かけますが、"moviNAND"はSamsungの商標であり、韓国版には確かにSamsung製のeMMC(=moviNAND)が搭載されていますが、docomo版にはSANDISK社の物が使われています。

ちなみに、Galaxyに搭載されている有機EL(ガラス板の間に挟んだ液晶とバックライトを使う方式ではなく、有機素材自体が光る方式ですので液晶とは言いません)やCPUもSamsung独自の物で、Galaxyは非常に自社製品・自社技術の比率が高い製品です。この副作用がプチフリの原因の一つとも言われていますが、詳細は後述します。

【Galaxyのドライブ構成について】

PCからGalaxyにファイルを移す際等に間違えやすいのが、上記eMMCとuSDカードのドライブ名です。

Galaxyでは内蔵のeMMCがMMCと互換性のあるSDカードとしてマウントされていますので、ファイラーなどからは"/sdcard"として見えますが、"sdcard"となっていても内蔵のeMMCの事です。

uSDカードはこの"sdcard"の中に"/sdcard/external_sd"としてマウントされます。

そして、このeMMCの中のシステムやアプリが使うデータベース領域(/data/)があるパーティションのファイルシステムには、Linux(AndroidはLinuxの派生OSです)で一般的に使われている"extX"("X"は数字)ではなく、"rfs"というSamsungが開発した独自の方式が採用されています。

これがプチフリの原因の一つとも言われています。

【Galaxyのプチフリとは】

日本語入力で変換中等にGalaxyが一瞬から3秒くらい固まったようになる状態をプチフリ(= Lag)と言います。

原因として巷で言われているのが下記2点です。

・eMMCそのものの問題

・ファイルシステムの問題

システムやアプリが使うデータベース領域(/data/)の読み書きが上記2点により遅いのがプチフリの原因だと言われています。

eMMCそのものの問題については、ハードウェア(含ファームウェア)の問題ですので、ユーザ側で対策出来る事はありません。

一方、ファイルシステムの問題については対策があります。それが、後述する「プチフリ対策(= Lagfix)」になります。

【Galaxyのプチフリ対策】

前述したファイルシステムの問題を回避する為に、ユーザー有志の手で幾つかの方法が開発されています。

・eMMCの一部にパーティションを切り、その部分をSamsung独自の"rfs"より高速の"ext2"等のファイルシステムでフォーマットしてloopback方式でマウントし、そこにシステムやアプリが使うデータベースを置く。

・uSDカードにパーティションを切り、その部分を"ext4"等のファイルシステムでフォーマットしてシステムやアプリが使うデータベースを置く。

・eMMCのデータベース領域のあるパーティションのファイルシステムを"ext4"に置き換える。

・上記に加え、システムやキャッシュがある単体NANDも含めて"ext4"に置き換えてしまう。

eMMCにパーティションを切る方法は、OCLFに代表される方法ですが、パーティションのサイズが限られますし、まめにキャッシュやバックグランドのプロセスをRAMマネージャ等から整理しないとMarketからアプリがダウンロード出来なくなる等のリスクがある反面、Galaxy単体で設定出来るのと、高速だというメリットがあります。

uSDを使う方法は、CFLagFixに代表される方法ですが、比較的スピードの速いuSDカードが必要(Class6以上が必要と言われています)なことと、設定方法がやや難しいこと、場合によってはuSDカードのフォーマットの為にLinux搭載のPCが必要なこと等の難点があります。

また、"ext4"は信頼性が強化されている半面、CPUへの負荷が高く、高速化のメリットは"ext2"程には出ません。

eMMCのデータベース領域全体及びNAND単体のファイルシステム全てを書き換える方法は、Voodooに代表されますが、これも、"ext4"を使う為、大きなスピードアップは望めない様です。

何れにせよ、こうした手法が沢山公開されているのが世界90か国で1000万台以上売れたというGalaxyの面白さだと思います。

なお、どの対策も、root化が必要ですので、docomoの保証が受けられなくなる可能性がありますし、最悪は、文鎮(全く起動しない状態)になる可能性もありますので、トライされる場合は自己責任でお願いします。

0 件のコメント:

コメントを投稿