CyanogenMod for IS01

あちこちの情報を真似して、参考にしてCyanogenMod for IS01の環境整備に取り組んでいます。

まずホームアプリ。1.6の頃は右メニューを表示しないホームアプリは標準ホームかADW for IS01しかなく、事実上ADW.Launcher一択でしたが、CM4IS01なら色々試せます。

is01next@blogさんお勧めのZeam Launcherや、こちらも評価の高いLauncher Proを試してみましたが、結局CM4IS01標準のADW.Launcherに戻しました。

これはパフォーマンスの問題ではなく操作性の問題です。ドロワーを開いたとき、ADW.Launcher以外のアプリはトラックボールでアイコンが選択できないのです。一回タッチしてやればトラックボールも利くようになります。これは私の環境では、1.6上のADW for IS01でも同じような状況でしたが、CM4IS01のADW.Launcherだけはドロワーを開いたときに最初からトラックボールでアイコンが選択できます。私はなるべく画面にタッチせずに操作したいのでADW.Launcherを選びました。軽さやメモリ使用量を重視されるならZeam Launcherが現時点ではベストな選択ではないでしょうか。

あと、Ks Launcher for 2.2も試したかったのですが、検索してもマーケットに現れませんでした。Sleipnir Mobile for Androidも出てこないんですが、皆さんもCM4IS01も同じですか?

壁紙はTK-Hatenaさんで紹介されていたものを加工して使っています。下段の金網の部分にショートカットを並べられるようにトリミングしました。壁紙の設定には「自動壁紙せっちゃん」を使っています。

続いて、2chのスレで話題の動作が俊敏になるスクリプトの導入。で、一応内容を検討してみました。この辺はLinuxに関する知識とかゼロな人なので、話半分に聞いてください。というか、間違ってたらこっそり教えてください。スクリプトを/system/etc/init.d/に置いた場合の動作を想定しています。上から順番に行きます。

・LowMemoryKillerの設定

[php]
echo “2560,4096,6144,12288,14336,18432” > /sys/module/lowmemorykiller/parameters/minfree
[/php]

メモリーが不足した時に,不要なプロセスを自動的に停止するしきい値を設定します。内容的には AutoKiller Memory Optimizerと同じことをやっています。設定値は(48,56,72)で、AutoKiller Memory Optimizerのプリセットの Optimum(40,50,60) と Strict(60,70,80)の中間くらいです。ハッキリ言ってどの値が適正値なのかよく判ってないですし(汗)搭載メモリ量の関係で機種によっても変わってくるんでしょうけど標準だと(20,22,24)なので、それよりは良いかと。ちなみに、AutoKiller Memory Optimizerを併用していて「Apply settings on boot」にチェックが入ってるとAutoKiller Memory Optimizerの設定で上書きされます。

・Swappinessの設定

[php]
echo “50” > /proc/sys/vm/swappiness
[/php]

スワップの頻度を設定します。既定値は60で、このスクリプトでは50に設定しようとしていますが、CyanogenMod設定でCompcacheを有効にすると30に設定されるので、そちらが優先されます。個人的には50は多いような気がするので、Compcacheを有効にしてる場合は気にしなくて良いかも。

・VFS キャッシュの設定

[php]
echo “10” > /proc/sys/vm/vfs_cache_pressure
[/php]

VFS キャッシュの埋め立て比率を設定します。さぁ、この辺から怪しくなりますよ(汗)。既定値は100で、このスクリプトでは10に設定しようとします。あまり使わないように、ということなんでしょうね。適正値は不明(爆)。

・ライトバック間隔(単位10m/s)の設定

[php]
echo “500” > /proc/sys/vm/dirty_expire_centisecs
[/php]

キャッシュ上に存在しているページの存在時間がこの値を超えた場合にライトバックされます。既定値は3000で、このスクリプトでは500に設定しようとします。これがちょっと不思議で、OS1.6のIS01では既定値通りの3000なのですが、CyanogenMod for IS01では200に設定されています。CM4IS01は既に何らかのチューニングがされているのかもしれません。適正値はやっぱり不明(爆)。

・pdflushデーモン起動間隔(単位10m/s)の設定

[php]
echo “1000” > /proc/sys/vm/dirty_writeback_centisecs
[/php]

pdflushの起動間隔を指定します。既定値は500で、このスクリプトでは1000に設定しようとします。間隔を長くしたいのですね。適正値はやっ(略)。

・フォアグラウンドでライトバック処理を開始するしきい値の設定

[php]
echo “90” > /proc/sys/vm/dirty_ratio
[/php]

キャッシュ上でまだディスクに書き込まれていないページの割合がこの値を超えた場合にpdfluashによるライトバックが優先度の高いフォアグラウンドプロセスで行われます。Linuxの既定値は40で、このスクリプトでは90に設定しようとします。Linuxの既定値は40ですが、IS01の既定値は10なので、やっぱり何かしらのチューニングが入ってるかもしれません。90%ということはほぼ実行されないということですよね。フォアグラウンドでの処理を行わないようにするのが、実はこのスクリプトの最大の特徴なのかもしれません。

・バックグラウンドでライトバック処理を開始するしきい値の設定

[php]
echo “5” > /proc/sys/vm/dirty_background_ratio
[/php]

動きは上記と同じで、こちらはライトバックが優先度の低いバックグラウンドで行われます。Linuxの既定値は10で、このスクリプトでは5に設定しようとします。Linuxの既定値は10ですが、IS01の既定値は5なので、やっぱり何かしらのチューニングが入ってるかもしれません。この値を下げているのはバックグラウンドでのライトバックを頻繁に行わせようとしているんでしょうね。dirty_background_ratioの値はdirty_ratioの半分くらいが目安だそうなので、5:90というのはかなり極端なように見えます。やっぱりここがこのスクリプトの肝なのかも。

ここまで見て感じたのは、このS97ramscriptを導入して効果を体感された方はAutoKiller Memory Optimizerを未導入だった方が多いんじゃないかな、ということです。LowMemoryKillerの設定値以外はCyanogenMod for IS01でも大分変わってるようなので、AutoKiller Memory Optimizer導入済みの方にはそれほど劇的な効果は無いような気もします。

で、私の出した結論としては「よく判らないので、とりあえずそのまま使おう」でした(汗)。

dirty_background_ratioとdirty_ratioのアンバランスさは気になりますが、作成された方もそれなりに考えて作られたのでしょうから信じて使ってみます。

LowMemoryKillerの値の見直し、Swappinessの削除、空きメモリの下限値の引き上げ、そしてadb有効化を追加した、masatsu版のS97ramscriptはこんな感じになりました。

[php]
#!/system/bin/sh

echo 1 > /sys/devices/platform/msm_hsusb_periphera/qxdm_enable

if [ -e /sys/module/lowmemorykiller/parameters/minfree ]; then
echo “2048,4096,6144,14336,18432,22528” > /sys/module/lowmemorykiller/parameters/minfree
fi

if [ -e /proc/sys/vm/vfs_cache_pressure ]; then
echo “10” > /proc/sys/vm/vfs_cache_pressure
fi

if [ -e /proc/sys/vm/dirty_expire_centisecs ]; then
echo “500” > /proc/sys/vm/dirty_expire_centisecs
fi

if [ -e /proc/sys/vm/dirty_writeback_centisecs ]; then
echo “1000” > /proc/sys/vm/dirty_writeback_centisecs
fi

if [ -e /proc/sys/vm/dirty_ratio ]; then
echo “90” > /proc/sys/vm/dirty_ratio
fi

if [ -e /proc/sys/vm/dirty_background_ratio ]; then
echo “5” > /proc/sys/vm/dirty_background_ratio
fi

if [ -e /proc/sys/vm/min_free_kbytes ]; then
echo “20480” > /proc/sys/vm/min_free_kbytes
fi
[/php]

しばらくこれで様子を見ます。どこか致命的に変なところがあったら指摘していただけると嬉しいです。