Android 端末のバッテリーの保ちが悪い理由を想像して見ました

今回こそヨタ話しです。技術的な根拠もなく単なる想像です。

Android 端末のバッテリーの保ちが、ガラケーと比較して大変わるいです、これは想像ではなく事実ですね。ガラケーだと一度、満充電にしておくと初期の電池だと一週間ぐらい充電なしで平気だったりするのですが、android だと朝、満充電でも夕方にはバッテリーがきれてたりして、ただの文鎮になってたりします。

これがちょっと不思議で、Linux ガラケーandroid スマホで部材がそんなに違うわけでもないし、なんでこんなに違うんだろうと不思議に思っていたのですが、ちょっとおもいつきました。
androidLinux kernel のソースコードは基本的に Linux プロジェクトのソースコードの git がそのままつかわれています。基本的にといういいかたをしたのは、omap や tegra などはそれぞれ kernel/omap.git や kernel/tegra.git といった独自のプロジェクトをもっていますが、それらの git のヒストリーをみてみると、kernel/linux-2.6.git のコピーにいくつかの対応をいれた物のようです。
つまり、PC 用の linux kernel をそのままつかっているようにみえます。

#2011.09.08 今日現在、トラブルによりandroid のコードはみえなくなっています。

常に電源に接続されていて、とにかく高速であることをもとめられる PC と、大事なバッテリーを節約してつかわなければならない携帯では、kernel のリソースマネジメント戦略は全く違います。処理負荷が低いときにクロック周波数をダイナミックに下げる、メモリの使用領域が複数のメモリチップに分散しないようにまとめた上でつかっていないメモリチップの給電を止める等、PC ではかんがえられないような制御が携帯では必要になるのですが、もしかしたらそういった省電力制御が androidlinux kernel にははいっていないのかもしれません。

尚、あたりまえですが、このような省電力制御をいれることができる場所はカーネルだけです。なぜならドライバではリソースの負荷はわからないので、いつ省電力モードにおとしてよいのかわかりません。年中省電力制御だと高性能チップの意味がなくなります。

自社で省電力対応をした linux kernel を搭載した端末を出す家電メーカーがもし現れれば、ものすごく魅力的な android 端末があらわれそうです。ただ、これは相当勇気と体力のいる作業になりそうですが、というのはカーネルの入れ替えによる影響範囲は製品全体に及ぶため、全機能の再テストが必要になる、というのが携帯電話ビジネスに長い人の平均的な思考回路なのです。

繰り返しますが、本日の話しはただの想像で根拠はありません。関係者から話しをきいたわけでもないですし、カーネルのコードを読んだわけでもありません。もしかしたら、android のバッテリーの保ちがガラケーより悪いということさえ、たまたま私のケータイの巡り合わせが悪かっただけかもしれません。