Zabbixの監視データとCentOS7の freeコマンドの値が一致しない件

Zabbix
スポンサーリンク

Zabbix で監視しているメモリの buffers + cached の値と、CentOS7 の freeコマンドの buff/cache(バッファとキャッシュの合計)の値がどうもズレてるな〜 とここ最近思っていたのですが、ついつい調査を後回しにしていました。このままだと年を越してしまいそうです(^^;) そこで今回は、Zabbixの監視データとCentOS7の freeコマンドの値が一致しない原因を調べてみました。

症状

Zabbixが取得しているメモリ使用状況の値と free コマンドの値が、ぴったり一致することはないのですが、監視対象が CentOS7 の場合はかなり大きく buffers + cached の値がズレます。CentOS6 ではこのようなことはありませんでした。

Zabbix の buffers + cached = 372,256,768

$ zabbix_get -s 160.16.57.86 -k vm.memory.size[buffers]
0
$ zabbix_get -s 160.16.57.86 -k vm.memory.size[cached]
372256768

 

free コマンドの buff/cache(バッファとキャッシュの合計)= 651,362,304

$ free -b
              total        used        free      shared  buff/cache   available
Mem:     2097373184   874344448   571666432    40689664   651362304   948097024
Swap:    4294963200   312852480  3982110720

一致しない原因

一致しない原因はこれでした。

man free(1) より引用 (free from procps-ng 3.3.10)

buffers
 Memory used by kernel buffers (Buffers in /proc/meminfo)

cache
 Memory used by the page cache and slabs (Cached and Slab in /proc/meminfo)

buff/cache
 Sum of buffers and cache

 
どういう事かというと、CentOS6 の free コマンドの buffers と cached は /proc/meminfo の Buffers と Cached の値そのまま表示していました。Zabbixが取得している値もぼぼこれと一致します。

$ free -k
			 total       used       free     shared    buffers     cached
Mem:       2054340     207408    1846932        144       9444      54536
-/+ buffers/cache:     143428    1910912

$ cat /proc/meminfo
Swap:            0          0          0
MemTotal:        2054340 kB
MemFree:         1846932 kB
Buffers:            9444 kB
Cached:            54536 kB
SwapCached:            0 kB

 
ところが CentOS7 の free コマンド(procps-ng 3.3.10)の cache の定義が /proc/meminfo の Cached + Slab(これもキャッシュの一種です)に変わりました。そのため Buffers + Cached + Slab の合計が buff/cache(バッファとキャッシュの合計)として表示されているのがこのズレの原因です。

$ free -k
              total        used        free      shared  buff/cache   available
Mem:        2048216      737536      670436       39736      640244     1042332
Swap:       4194300      305340     3888960

$ cat /proc/meminfo
MemTotal:        2048216 kB
MemFree:          630392 kB
MemAvailable:    1003184 kB
Buffers:               0 kB
Cached:           359104 kB
SwapCached:        29404 kB
(略)
Slab:             282064 kB

つまり Slabキャッシュの分だけ Zabbixの監視データとズレが生じます。

おわりに

メモリが足りなくなればバッファとキャッシュは解放されますので、Zabbix で available(実質的なメモリ空き容量)の値をしっかり監視しておけば、このズレはあまり気にする必要はないでしょう。

コメント

タイトルとURLをコピーしました