Androidをビルドしているときのvmstat

Androidをビルドしているときのvmstatを見てみました。

$ make -j8

topで見ると、idleは0.2%ですからCPUはフル稼働状態です。

$ top

top - 15:01:42 up 3 days, 21:16, 11 users,  load average: 7.81, 5.58, 2.74
Tasks: 256 total,   8 running, 247 sleeping,   0 stopped,   1 zombie
Cpu(s): 94.7%us,  5.1%sy,  0.0%ni,  0.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  24735252k total, 24051252k used,   684000k free,   910396k buffers
Swap: 36104184k total,      164k used, 36104020k free, 19716008k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                       
15127 koba      20   0 60764  53m 6156 R   47  0.2   0:01.42 cc1plus                        
15155 koba      20   0 65132  56m 4040 R   32  0.2   0:00.96 cc1plus                        
15180 koba      20   0 50680  43m 6056 R   25  0.2   0:00.76 cc1plus                        
15198 koba      20   0 44036  34m 3368 R   17  0.1   0:00.50 cc1plus                        
15208 koba      20   0 21872  14m 3312 R    6  0.1   0:00.17 cc1plus                        
15216 koba      20   0 20948  11m 2336 R    3  0.0   0:00.09 cc1plus                        
 9812 koba      20   0  343m 334m  988 S    2  1.4   0:26.25 make                           
14514 koba      20   0 19356 1536 1064 R    0  0.0   0:00.04 top                            
15125 koba      20   0  2232  800  688 S    0  0.0   0:00.01 mips-linux-gnu-                
15154 koba      20   0  2232  800  688 S    0  0.0   0:00.01 mips-linux-gnu-                
15179 koba      20   0  2232  796  688 S    0  0.0   0:00.01 mips-linux-gnu-                
15197 koba      20   0  2232  800  688 S    0  0.0   0:00.01 mips-linux-gnu-                
15207 koba      20   0  2232  796  688 S    0  0.0   0:00.01 mips-linux-gnu-                
15215 koba      20   0  2232  796  688 S    0  0.0   0:00.01 mips-linux-gnu-                
15225 koba      20   0  2232  800  688 S    0  0.0   0:00.01 mips-linux-gnu-                
    1 root      20   0 23844 2000 1296 S    0  0.0   0:01.77 init                           
    2 root      20   0     0    0    0 S    0  0.0   0:00.01 kthreadd                       
    3 root      RT   0     0    0    0 S    0  0.0   0:00.04 migration/0                    
    4 root      20   0     0    0    0 S    0  0.0   0:01.24 ksoftirqd/0                    
    5 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/0                     
    6 root      RT   0     0    0    0 S    0  0.0   0:00.04 migration/1                    
    7 root      20   0     0    0    0 S    0  0.0   0:00.68 ksoftirqd/1                    
    8 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/1                     
    9 root      RT   0     0    0    0 S    0  0.0   0:00.04 migration/2                    
   10 root      20   0     0    0    0 S    0  0.0   0:00.72 ksoftirqd/2    

この状態で5秒間隔でvmstat

$ vmstat 5
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 9  0    164 471372 907440 19988556    0    0     3    16    3   15  1  0 99  0
 8  0    164 415256 907504 19992704    0    0     0    34  931 2114 97  3  0  0
 8  0    164 410576 907548 19996256    0    0     0    40  884 1952 98  2  0  0
 8  0    164 477548 907592 19999340    0    0     1  3834  939 2125 96  4  0  0
 8  0    164 341800 907728 20006160    0    0    17    34  990 2337 94  5  1  0
 8  0    164 149500 907476 19915612    0    0     0    59  996 2563 93  6  1  0
 8  0    164 209964 907516 19917688    0    0     0  2434  928 1990 96  3  0  0
 8  0    164 452184 907560 19921892    0    0     0    37  911 2034 97  3  0  0
 8  0    164 301884 907760 19931832    0    0    70    38 1015 2519 94  5  1  0
 8  0    164 146520 908096 19814632    0    0   156  2224  980 2191 94  5  1  0
 8  0    164 130120 908160 19674076    0    0     0   125  987 2303 94  4  2  0
 8  0    164 166300 908204 19642196    0    0     0    43  935 2104 94  5  1  0
 8  0    164 722584 908220 19590068    0    0     2  3089  924 2042 96  4  0  0
 8  0    164 787076 908376 19589936    0    0     2    50 1136 3178 92  6  2  0
 8  0    164 955912 908576 19595072    0    0     3    99 1221 3704 90  8  2  0
 8  0    164 957420 908692 19605228    0    0     1  3505 1052 2554 93  6  1  0
 8  0    164 893804 908816 19615480    0    0     1    48 1063 2673 92  7  1  0
 8  0    164 756320 908876 19622952    0    0     0    57  932 2094 96  3  1  0
 8  0    164 680928 908932 19631892    0    0     0  3993  882 1846 97  3  0  0
 8  0    164 780432 909084 19637056    0    0     1    49 1153 3157 91  7  2  0
 8  0    164 701572 909192 19643588    0    0    34    54 1083 2803 94  5  1  0
 8  0    164 730336 909328 19650244    0    0     2  5230 1103 3050 85  6  8  1
^C

注目すべきはcacheの大きさとbiの少なさです。こんなに激しくコンパイラを動かしているのにbi(ブロックデバイスのinput)がゼロのときがあります。
ディスクキャッシュが有効に働いているのですね。
このマシンはメモリを24GB搭載していますが、19GB以上がディスクキャッシュとして使用されているようです。

ディスクは普通のSATAのハードディクを使っていますが、ディスクの速度はボトルネックではないので、これをSSDに換えてもビルドの時間はほとんど変わらないでしょう。また、メモリの一部を使ってramdiskにするのも特に効果はないと思います。