CPU

cpu.png

CPU使用率

以下のコードは何をやってるのかというと、
Android端末のprocrフォルダの下にstatというファイルがあります。
catコマンドでそれの中身を見ているのです。
adb だったら

adb -d shell
cat ./proc/stat

コマンドで見れるはず。

private long getCpuTime() throws Exception {
        // カーネル全体の統計情報を表示する
        String [] cmdArgs = {"/system/bin/cat","/proc/stat"};
        String cpuLine    = "";
        StringBuffer cpuBuffer    = new StringBuffer();
        ProcessBuilder cmd = new ProcessBuilder(cmdArgs);
        Process process = cmd.start();
 
        InputStream in  = process.getInputStream();
 
        // 統計情報より1024バイト分を読み込む
        // cpu user/nice/system/idle/iowait/irq/softirq/steal/の情報を取得する
 
        byte[] lineBytes = new byte[1024];
 
        while(in.read(lineBytes) != -1 ) {
            cpuBuffer.append(new String(lineBytes));
        }
 
        in.close();
 
        cpuLine = cpuBuffer.toString();
 
        // 1024バイトより「cpu~cpu0」までの文字列を抽出
        int start = cpuLine.indexOf("cpu");
        int end = cpuLine.indexOf("cpu0");
 
        cpuLine = cpuLine.substring(start, end);
        long cputime = Long.parseLong(cpuLine.split(" ")[2]);
        return cputime;
    }

私の端末でproc/statの中身を見てみるとこんな中身でした
2|shell@grouper:/proc $ cat stat
cpu  421702 65351 451957 18912450 121085 86 10735 0 0 0
cpu0 237411 27921 342982 4345553 43514 76 8320 0 0 0
cpu1 68754 15210 43015 4850903 28497 3 1205 0 0 0
cpu2 69493 13884 43128 4829026 28400 4 814 0 0 0
cpu3 46044 8336 22832 4886968 20674 3 396 0 0 0
intr 26978062 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13266 0 0 0 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2555938 220521 0 0 0 0 0 0 0 0 0 0 2020398 0 0 0 0 0 50995 0 0 0 0 0 0 0 914313 666 0 0 0 0 0 0 1531766 0 0 0 0 546629 0 0 0 0 0 0 0 0 0 0 0 0 0 0 174704 0 0 0 10488 0 0 0 30 0 0 66865 0 3240 0 0 0 0 0 2483292 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 390 0 68947 123 0 0 0 0 0 0 0 0 0 0 4510 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 212 0 364 0 0 0 0 0 0 0 118356 0 0 0 191095 0 0 0 127595 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3947 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 282346 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 7037 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 47 8 0 0 0 0 0 0 0 0 9 0 0 0 0 0 173 394435 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1718 0 0 0 0 0 0 0 5 6 1715 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 66872661
btime 1433215066
processes 84947
procs_running 1
procs_blocked 0
softirq 9478321 6563 3440006 6569 543081 6563 6563 3060525 776329 11868 1620254

user ユーザレベル(アプリケーション)のCPU使用率.
nice 優先度(ナイス値)によるユーザーレベルのCPU使用率
system システムレベル(kernel)のCPU使用率.
idle CPUのアイドル時間割合(ディスクi/o待機時間はのぞく.
iowait (since Linux 2.5.41) (5) Time waiting for I/O to complete.
irq CPUの割り込み実行時間割合
softirq CPUのソフトウェア割り込み実行時間割合
steal (since Linux 2.6.11) (8) Stolen time, which is the time spent in other operating systems when running in a virtualized environment
guest (since Linux 2.6.24)(9) Time spent running a virtual CPU for guest operating systems under the control of the Linux kernel.
guest_nice (since Linux 2.6.33) (10) Time spent running a niced guest (virtual CPU for guest operating systems under the control of the Linux kernel).

performance

サポートサイト Wikidot.com performance