2011年8月29日月曜日

CPU使用率の計算方法4 (USER_HZの取得)

CPU使用率の計算方法1, 2で書いたように、/proc/[pid]/stat, /proc/statから取得できる実行時間の単位はtickである。 http://www.kernel.org/doc/man-pages/online/pages/man5/proc.5.html を参考にすると、sysconf(_SC_CLK_TCK)を使って取得したUSER_HZで実時間に変換できることがわかる。具体的には、実行時間をsysconf(_SC_CLK_TCK)で割ることで、秒単位に変換することができる。しかし、USER_HZを取得するためのJava用のAPIはないようだ。多くのAndroidシステムのUSER_HZは100のようだが、異なるものも存在する。したがって、CPU利用率ビューアーではJNI経由で値を取得した。
#include <unistd.h>
#include <jni.h>

jlong Java_com_appspot_takuyaandroid_tcpuuseratewatcher_TUserHzJni_getUserHz(JNIEnv *env, jobject obj) {
 return sysconf(_SC_CLK_TCK);
}

0 件のコメント:

コメントを投稿