2011.08.01
【Android】CPU使用率を取得する
ちょいと気になったのでCPU使用率を取得するを調べてみました。
まず、AndroidのAPIにCPU使用率を取得するものはないぽい。
しかし、巷にはタスクマネージャーみたいなアプリもあるので取れないわけではないみたい。
Link:OS Monitor - Android マーケット
いろいろ調べたところ結局自前でCPU使用率が内部にあるのを取得してきているっぽい。
Androidの内部はLinuxなので構造が同じらしい。
なので/proc内のファイルを参照することでCPU使用率からメモリ使用量、通信量まで全部わかるらしい。
Link:/proc とは - Linuxキーワード:ITpro
この中の各ファイルに各情報が書かれているので必要なタイミングに読み込むことで値を求められるという寸法になっている。
しかし、「CPU使用率が○○%だよ」みたいな簡単な処理ではいかないのでそれなりに大変になっている。
Link:LinuxでCPU利用率を取得する
がんばれば各タスク単位でのCPU使用率なども取れる。
/proc/[プロセスID]/statでCPU使用率を取れるらしいけど内部の値がよくわからない。
ここに説明がかいてあるけど行数があわないので違う。Androidはフォーマットがちがうのだろうか?
Link:Manpage of PROC
本気でやるのであればAndroid付属のtopコマンドのソースをみるべきなんだけど
そこまでやるのもばかばがしい気がする。
基本、チェックするときはアプリケーションを1つだけをチェックするわけなので
全体のCPU使用率をとるものだけあればいいんじゃないかとも思うしね。
この方法でやろうとするとIO処理が必要になるのでオーバーヘッドも大きそうなので
やるならバックグラウンドでスレッドで適度に取得するやり方でやらないとメインループに影響しそうだ。
全体のメモリでよければこんなのがある
Link:ヒープの使用量を取得する - Androidプログラマへの道 ~ Moonlight 明日香 ~ - livedoor Wiki(ウィキ)
まあ、一度作れば使いまわしが利く部分だし細かな仕様がわかれば作っておきたいところです。
関連記事