Nexus SのQuadrantスコアの3000超えを目標にkernelを修正してみました。Quadrantの実行画面を見ていると、DBアクセスがかなりボトルネックになっていそうなのですが、オーバークロックとCPUスケジューラの変更からせめてみることに。やることは単純で、XDAなどで公開されているNexus S用のカスタムkernelのソースからover clockingの部分をパッチとして抜き出し、BFSのサイトから現在のNexus Sのkernelに適用できるBFSのパッチを取得して、当てるだけです。
普通にカスタムカーネル入れればいいじゃんて?、それはそのとおりなんですけどw.なるべくストックの部分を残しておきたいし、なにより過程が面白いのですね。それにAndroidのアーキテクチャへの理解も深まりますし(だよな。。)。
まずは、XDAでこのスレに注目、作者はgithubでソースを公開していますね。こっから最新のバージョンを落としてきます。そこからover clockingに関係する部分だけをpatchとして取り出します。
git clone https://github.com/netarchy/nexus-s.git diff -cNr ./samsung/arch/arm/mach-s5pv210/ ./nexus-s/arch/arm/mach-s5pv210/ > mach-s5pv210.patch diff -cNr ./samsung/arch/arm/plat-s5p/ ./nexus-s/arch/arm/plat-s5p/ > plat-s5p.patch
一回ビルドしちゃったカーネルソースを使うなら一度distcleanしてからpatchとりましょう。次にはpatch当て。
cd samsung make distclean ARCH=arm diff .. .. patch -p0 < mach-s5pv210.patch patch -p0 < plat-s5p.patch
この時点でmake menuconfigしてビルドしてもいいと思います。ストックのkernelコード+overclockingコードでどの程度変化するのか、自分は試してみました。Quadrantだと1.4Ghz固定で3000は超えますね。
次はCPUスケジューラの変更です。kernel mod界隈wでは、BFS(Brain Fuck Scheduler)がデファクトみたいになってるので、導入することに。BFSのサイトからこのパッチをダウンロードして、当てます。そしたら、make。
wget http://ck.kolivas.org/patches/bfs/2.6.35/2.6.35.7-sched-bfs357+penalise_fork_depth_account_threads.patch patch -p1 < 2.6.35.7-sched-bfs357+penalise_fork_depth_account_threads.patch cd samsung make menuconfig ARCH=arm (TUNとかをenableするならここで) make -j2 ARCH=arm CROSS_COMPILE=/home/someone/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- (まつ) mkbootimg ...
bootイメージができたら、いきなり書き込まずにfastbootでbootだけしてみて動作をチェックします。SetCPU等で動作クロックを変化させて、Quadrantベンチでもとってみましょう。Quadrantは数回実行してみるのをおすすめします。自分は1.4Ghz常用は無理かと思います。
現状のOriginal Kernelのスペックは
- TUN Support
- BFS
- OverClocking 1.4Ghz Max.
- Original Boot Splash image.
0 コメント:
コメントを投稿