2013年5月27日月曜日

メモリー、通信量、CPU利用率の計測

アプリケーションが実行されている際に、メモリやCPUの利用率など知りたいと思うこともあると思う。端末によってはアプリのRAMの利用状況とか見れたりするが、すべての端末で見られる訳ではないのと見られる端末でも実行中に常に監視し続けることが出来るわけではない。
で、計測ツールを作ってみた作ってみたアプリの状態観測

RAMの情報は、android.os.Debug.MemoryInfoでとることが出来る。
trafficに関しては、android.net.TrafficStats.getUidRxBytesから得ることが出来る。
CPUの利用率は、/proc/の下の情報から計算することが出来る。
それぞれ、自分のアプリの情報だけではなくてpidとuidが分かればどのようなアプリからでもどのようなアプリの情報もとることが出来る。

RAMとTrafficに関しては、pidとuidが分かればあとはJavaのI/Fから取得できるので特に何も考えなくても良いが、CPUに関してはJavaのI/Fがないので、Linuxでプロセスの情報がどこにどうやって保存されているから見て計算する。psでやっているのと同じことをすれば良いので、コードを呼んだりとかしつつ実装してみる。/proc下の情報については、http://man7.org/linux/man-pages/man5/proc.5.htmlとかにあったります。
使用率の計算については、http://aya213.blogspot.jp/2008/12/cpu.htmlにあったりもします。

pidやuidの取り方は、ActivityManagerからgetRunningAppProcesses()を利用するとRunningAppProcessInfoのリストがとれるので、適当に自分の欲しいアプリをパッケージなどから探してRunningAppProcessInfoからpidとuidを取得できる。

メモリ等の情報を見られたところで、どの関数をコールしているのか等の情報を得ることが出来ないから、分析等には使えないがパッと見である程度の情報が得られるので、詳細に分析すべきかどうかの目安にはなると思う。

0 件のコメント:

コメントを投稿