みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

バッテリー浪費を改善 - iOSでプロセスのCPU使用率を取得

最近iPod touchやiPhone、iPadの電池の減りが早くなったなあ、と感じている場合、一部のプロセスがCPUを占領して、バッテリーを浪費しているのが原因かもしれません。そのためには、CPU使用率と、プロセス毎のCPU使用率を取得する必要があります。ここではその方法と、対処法を解説します。

CPU使用率の取得(脱獄不要)

SysStats Lite(free) または SysStats Monitor をApp Storeからインストールします。これらはCPU使用率を取得するappです。買ったばかりのiPod touch 4Gでは、起動した後しばらく何もしない状態で、CPU使用率は2%以下になるのが普通でした。もしCPU使用率が常時20%とか、最悪100%のままの状態ですと、バッテリーの消費は著しくなります。

もし、脱獄していない場合は、プロセス毎のCPU使用率を取得することができないので、以下の対処をします。

  • 最近変更した設定を元に戻してみる
  • 最近インストールした常時起動的なアプリの設定を見直す
  • リソースを使いそうな機能を停止する
  • どうしようもない場合、iOSを復元する

しかし、この方法はどうしてもカンに頼るところがあります。次の方法は脱獄が必要とはいえ、正確な原因を突き止めることができます。

プロセス毎のCPU使用率の取得(要脱獄)

脱獄をしていない人はこちら(evasi0n)またはこちら(Absinthe)の記事を参考に脱獄してみてください。

MobileTerminalとtopをCydiaからインストールします。

topコマンドは、Linuxを触ったことがある人にとってはお馴染みでしょうが、知らない人も多いと思いますので、ここで使用方法を説明します。

topの使用法

MobileTerminalを起動して、"top"と入力します。

iPod-touch:~ mobile$
top

すると、プロセスの一覧及びそれぞれのプロセスのプロセスID(PID)や、CPU使用率(%CPU)、CPU時間(TIME)、スレッド数(#TH)などが表として表示されます。

o をキーボードで打つと、プロセスのソート方法を指定することができます。上から5行目あたりに、primary key:と表示されるので、そこに、cpuやtimeなど、ソートの基準を指定できます。

q をキーボードで打つと、topを終了します。

f:id:atsuhiro-me:20151101232728p:plain:w300

以上がtopの使用法です。CPUを浪費しているプロセスを発見するためには、CPU時間(TIME)やCPU使用率(%CPU)でソートし、無駄にCPUを使用しているプロセスを見つけ出します。

スクリーンショットは、みーのiPod touchでtopを実行した際のものです。CPU使用率でソートしています。上から順に、

  • Terminal
    • MobileTerminalのプロセスです。
  • top
    • top自体のプロセスです。この2つは通常は実行しませんので、CPUを浪費していることにはならないでしょう。
  • SpringBoard
    • iOSのホーム画面のプロセスです。みーのiPod touchの場合、このプロセスのCPU使用率が常時15%になっていたので、最近インストールしたSpringBoardのカスタマイズCydiaアプリをアンインストールしました。すると、CPU使用率が正常になりました。
  • mediaserverd
  • CommCenter
  • locationd
  • aggregated
  • mediaremoted
  • syncdefaultd
    • 詳しいことはこちらに書いてあります。

となっています。CPUを浪費しているプロセスが担う機能の設定を見なおして見ることで、CPUの浪費を止めることができるのです。例えば、locationdが暴走しているのなら、位置情報サービスを再起動して様子を見るとか、無効にするとか、その他余計な機能のappを削除してみる、などが考えられるわけです。

(2012.11.18)