2011年8月29日月曜日

CPU使用率の計算方法3 (プロセスID取得)

CPU使用率の計算方法2で書いたように、CPU使用率を計算するためには/proc/[pid]/statにアクセスする。したがって、[pid]が必要である。実行中のプロセスの情報はActivityManagerを使ってアクセスできる。

static public void insert(Context context) {
  ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
  List list = am.getRunningAppProcesses();
  long now = new Date().getTime();
  for (RunningAppProcessInfo info : list) {
   long tick = getTick(info.pid);
   String name = info.processName;
   TProcess p = new TProcess(info.pkgList[0], name, tick, 0, now);
   p.insert(context);
  }
  long tick = getTick();
  TKernel k = new TKernel(tick, 0, now);
  k.insert(context);
 }
上記は、CPU利用率ビューアーのソースの一部である。上記を定期的に呼び出して、CPU使用率を計算するために使う情報を現在時刻とセットで保存している(TProcess#insert/TKernel#insert)。パッケージ名を使用してアイコン等の情報を取得できるため、CPU利用率ビューアーでは保存している。 なお、上記ソースでは、現在時刻として保存した時刻と/proc/[pid]/stat, /proc/statにアクセスした時間にわずかだが差があり、情報として正確ではない。

0 件のコメント:

コメントを投稿