Warning: file_get_contents(https://play.google.com/store/apps/details?id=com.grarak.kerneladiutor): failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found in /home/pctukeppa/pctukeppa.com/public_html/wp-content/plugins/simpleapplinks/simpleapplinks.php on line 263
【2017/08/25】ソースコードの更新に合わせて若干内容を修正。
どうも、こっとんです。
SC-03D(Galaxy S2 LTE)は結構前の機種ですが、カーネルの設定次第でそこそこ快適に動かすことが可能です。LineageOSとしていますが、その他のカスタムROM(RRなど)でも同じ設定が可能です。
今回は僕のオススメ設定を書いていきます。
目次
カーネルの設定方針
前提としてこの端末はRAMがたったの1GBしかないです。しかも空きメモリが約200MBを切ると使用不可能レベルでもっさりします。という訳でマルチタスクは諦め、シングルタスク重視にします。
アプリの切り替えの度に裏のアプリが落ちる可能性が高まりますが、その分、一つのアプリの動作に限って言えば、使用感(ヌルヌルさ)はデフォルトよりも間違いなく向上するはずです。
もし、このメモリの少ない端末でマルチタスクもという欲張りな方は、ZRAMを設定してみてください。ZRAMとは、簡単に言うとメモリを圧縮してメモリ使用量を削減する機能です。今回は使わないのでスルーしますが、設定すると確かに裏のアプリは落ちにくいようです。以前のビルドではデフォルトで400MBに設定されていましたが、現在はデフォルトでオフになっています。
→現在はデフォルトで128MBに設定されています。設定した方がパフォーマンスは良くなると思います。
ただ、僕の使用した感想になるんですが、ZRAMは裏のアプリは落ちにくい一方、その分演算するためにCPUを余計に使うので結局もっさり感が出てしまう気がします。当たり前の話なんですが、この端末は最近のスマホと比べてCPUが貧弱すぎるんですよね。しかもCPUパワーを使うので電池持ちも悪くなりがちです。
→ZRAMを設定するとChromeなどのブラウザが体感で早くなっている気がします。
まとめると、メモリの設定がこの端末の快適動作のキモなんですが、僕の結論はZRAMは使わずLow Memory Killerを調整してCPUパワーを極力使わずに常に多めの空きメモリを確保するのがベストだと判断しました。Low Memory Killerとは、システムが使用メモリ量を判断して自動でタスクキルを行う目安となる数値を決めるものです。
そういえばSC-03Dが現役だったAndroid 2.xの頃はタスクキラーアプリが流行っていましたが、最近のAndroid(と言っても大体4.4以降)はメモリ管理が優秀になっているので、システムにタスクキルを任せるのが一番だと思います。基本的にはデフォルトでいいはずなんですが、この端末は古い&メモリが少ないので調整しています。省エネにもなっていると思うのでバッテリーにも優しいはず。
早速Kernel Adiutorを使って設定
要Rootです。以下のリンクからダウンロードします。
インストールしたら、早速設定していきます。
CPU
これでは再起動が面倒ですので、回避するにはソースに直接設定したいガバナーを追記します(後述)。
なので、ガバナーを試す際は再起動後、上記の手順を踏んでください。また、再起動しないとガバナーをうまく適用できないようなので注意。
デフォルトのガバナーは「ondemand」です。重いアプリを動かすなら「interative」(と言ってもCPUが貧弱なので限度があります)がオススメですね。
ガバナーの説明は以下のサイトを参照してください。ただし英語です。全文まとめて翻訳すると意味不明なので要所要所で翻訳するのがオススメ。
設定できるガバナーは色々とありますが、僕は省エネ重視の「smartmax_eps」を選択しています。
「smartmax_eps」は基本的に省エネ重視のガバナーですが、ちゃんとパラメーターを調整すればある程度サクサクかつバッテリーにも優しいバランスのとれたガバナーになります。もちろんパフォーマンスの限界はありますが。
ガバナーを選択したら、[CPU]-[CPUガバナ設定]をタップします。
「awake_ideal_freq」を「1026000」に、
「boost_freq」を「1242000」に、
「touch_poke_freq」を「1512000」にそれぞれ設定します。
設定後、起動時に適用をオンにします。
ソースに直接設定したいガバナーを追記する
細かいパラメーターは追記する必要はありません。ガバナーの変更だけ追記すればOKです。
「celoxdcm/device/samsung/msm8660-common/rootdir/etc/init.qcom.power.rc」に追記します。
大体66行目~
on property:sys.boot_completed=1 setprop sys.io.scheduler bfq write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "smartmax_eps" write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor "smartmax_eps" write /sys/kernel/cpu_input_boost/enabled 1
あとは追記後ビルドすればOKです。先にrepo syncを行っておくとスムーズですね。ソース変更後はcommitしてないぞとか怒られたりするかもですが、その辺りは上手くやってください。
GPU
オーバークロックが可能です。電池持ちにもそれ程影響がない(と思う)のでパフォーマンス向上のためにそれぞれ設定しておきます。
GPU2D最大周波数を「266MHz」、GPU最大周波数を「320MHz」にそれぞれ設定します。ガバナーはondemandのままでOKです。設定後、起動時に適用をオンにします。
I/O スケジューラ
デフォルトは「bfq」です。「deadline」に変更します。「noop」でもいいと思います。設定後、起動時に適用をオンにします。
I/Oスケジューラの説明は以下のサイトを参照してください。ただしこれも英語です。
Kernel Samepage Merging(KSM)
デフォルトはオフです。オンにするとメモリ使用量を削減できますが、その分演算でCPUパワーを使うので今回はオフのままで。
→デフォルトでオンです。オンのままで問題ないようです。
Low Memory Killer
重要な部分ですね。
前面アプリを「72MB」、表示中アプリを「90MB」、セカンダリサーバを「108MB」、非表示アプリを「126MB」、コンテンツプロバイダを「216MB」、空のアプリを「315MB」にそれぞれ設定します。設定後、起動時に適用をオンにします。設定中数値が進んだり戻ったりするので注意。数値を直接入力させてほしいです。
仮想メモリ
ZRAMを設定する場合はここで設定します。
→ZRAMはデフォルトで128MBに設定されています。設定した方がパフォーマンスは良くなると思います。
エントロピー
読み込みを「128」、書き込みを「256」とそれぞれデフォルトから2倍に設定しておきます。設定するともっさり感が減るようです。設定後、起動時に適用をオンにします。
まとめ
設定後、一度再起動して自動で適用されるか確認します。フリーズ回避のロック解除を忘れずに。動作確認後、ガバナーを決めたらあとはソースに追記してビルドして完了ですね。あまり頻繁に再起動しないのならばソースの追記は不要だと思いますが、その際再起動には注意してください。
ここまで読んでいただきありがとうございました。