読者です 読者をやめる 読者になる 読者になる

自分が使っているCPU使用率とメモリ使用量を表示している理由

SysStats Lite iPhone技術情報 SysStats Monitor

iPhone 4 PERFECT GUIDE』(ソフトバンククリエイティブ社刊)の201ページに、SysStats Liteを紹介していただいてます。

ソフトバンク クリエイティブ:『iPhone 4 PERFECT GUIDE』紹介アプリのリンク集

iPhone 4 PERFECT GUIDE (パーフェクトガイドシリーズ)

iPhone 4 PERFECT GUIDE (パーフェクトガイドシリーズ)

タイトルは「iPhone4」となっていますが、実際には3GSにも共通な、iOS4の新機能が一通り説明されているので、3GSユーザの方にも有意義な内容になっていると思います。
(私も、この本を読んで、GarageBandを使わなくとも、iTunesだけでオリジナル着信音を作る方法を知りました)

あと、SysStats Liteが自分のメモリ使用量とCPU使用率を表示しているという、細かい機能に注目して取り上げていただいたことが、特に、うれしいですね。
この場を借りて、御礼申し上げます。

ただし、この自分のメモリ使用量とCPU使用率を表示する機能は、他のシステム情報表示アプリケーションにはないものなので、みなさんには、あまり馴染みがないものかもしれません。ご紹介いただいたこともあり、ちょうどいいタイミングなので、これらの値の使い方を、少し詳しく説明してみたいと思います。

注: SysStats Liteとして説明していますが、いずれもSysStats Monitorにもそのまま当てはまる内容です。

CPU使用率

以下の2つの画像は、いずれも、SysStats LiteのスクリーンショットからCPU使用率の部分を抜粋したものです。
「(このアプリ)」と書かれている下の数値(仮にXとします)が、SysStats Lite自身のCPU使用率を表し、その左側の数値(仮にYとします)が、システム全体を表しています。
その場合、概ね、

Y - X ≒ [バックグラウンドプロセスのCPU使用率]

ということになります。

前者は、システム全体(Y)とSysStats Liteの使用率の数値(X)の差が小さいので、バックグラウンドプロセスのCPU使用率がのCPU使用率低めであることを示しています。

反対に後者は、差が少ないので、バックグラウンドプロセスのCPU使用率高めであることを示していますので、何か負荷の高い処理が実行されている可能性があります。ホームボタンをダブルクリックして、「最近使ったアプリケーション」を表示させ、任意のアプリを終了させることで、解消することがあります。
*1

メモリ使用量

こちらは、SysStats Liteのスクリーンショットからメモリ使用量の部分を抜粋したものです。
「このアプリの使用量」の数値は、SysStats Lite自身が使用しているメモリサイズです。

ここで、以下の2つのサイズとその合計値に着目してみてください。
(単位: MB)

空きメモリサイズ このアプリの使用量 合計
スクリーンショット前者 22.6 9.0 31.6
スクリーンショット後者 13.7 16.4 30.1

SysStats Liteは、バックグラウンドに常駐させないように設定されています。ホームボタンをクリックした時に、プロセスが終了しますので、「このアプリの使用量」は、そのときに、そのときに解放される予定のものです。
前者のケースでは、
「現在22.6MBの空きがあり、SysStats Liteが9.0MB使用しているが、SysStats Liteを終了すれば、それらの合計値(31.6MB)の空きメモリがある状態になる。」
ことが想定されます。
そう考えると、この両者の状態には、あまり差がないということが言えると思います。*2


SysStats Liteが自分のメモリ使用量とCPU使用率を表示しているのは、このように、もう少しシステムの状態を詳しく把握できるようになればいいかなと思ったことが、大きな理由です。
また、ちょっと古い話ですが、以下のような状況に遭遇したこともきっかけになっています。

待ち受け状態のiPhoneが熱くなったときの対処例 - The iPhone Development Playground

各バックグラウンドプロセスのCPU使用率とメモリ使用量が取得できれば、もちろん必要ない機能ですが、公開APIでそれらを取得する方法が見つかっていないので、このような形で実現しました。

iPhoneがもっさりしてきたと感じた時は、CPU負荷の問題であることも多いので、再起動などする前に、SysStats Monitor/SysStats Liteでも確認することで、何か原因が見つかることもあります。
興味がある方は、ぜひ、お試しください。

*1:iPhone SDKをインストールしている場合は、Instrumentsというユーティリティに内蔵されているActivityMonitorツールを使用することで、個々のプロセスのCPU使用率を見ることができます。

*2:SysStats Liteで、プロセス一覧や、ヘルプページを表示させると、「このアプリの使用量」が増加し、空きメモリが減ることがあります。