メモリボトルネックを調べるには主にvmstatを使用します。
[endo@colinux ~]$ vmstat 5 procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 0 156160 5712 53092 0 0 368 70 101 66 42 22 35 0 0 0 0 156160 5720 53092 0 0 0 8 101 24 52 0 48 0 0 0 0 156096 5728 53092 0 0 0 38 100 24 39 0 61 0 0 0 0 156088 5728 53092 0 0 0 0 100 23 54 0 46 0 0 0 0 156096 5728 53092 0 0 0 0 100 22 39 0 61 0 0 0 0 156088 5728 53092 0 0 0 0 100 23 44 0 56 0 [endo@colinux ~]$
vmstatで見るポイントは次の通り
- 空きメモリ(free + buff + cache)
- スワップ(si, so)
linuxではプロセスが使用しないメモリはioバッファとして利用される為、通常でも空きメモリは小さいそうです。
しかし、ioバッファで使用されているメモリはプロセスで必要になると回収される為、実際の空きメモリはfree + buff + cacheと考えていいそうです。