我跑我的rethinkdb容器Kubernetes集羣較少的內存。下面是我注意到:Rethinkdb容器:rethinkdb過程比整個容器
運行中是CoreOS主機top
,rethinkdb過程大約需要的3Gb:
$ top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
981 root 20 0 53.9m 34.5m 20.9m S 15.6 0.4 1153:34 hyperkube
51139 root 20 0 4109.3m 3.179g 22.5m S 15.0 41.8 217:43.56 rethinkdb
579 root 20 0 707.5m 76.1m 19.3m S 2.3 1.0 268:33.55 kubelet
但運行docker stats
檢查rethinkdb容器,大約需要7GB!
$ docker ps | grep rethinkdb
eb9e6b83d6b8 rethinkdb:2.1.5 "rethinkdb --bind al 3 days ago Up 3 days k8s_rethinkdb-3.746aa_rethinkdb-rc-3-eiyt7_default_560121bb-82af-11e5-9c05-00155d070266_661dfae4
$ docker stats eb9e6b83d6b8
CONTAINER CPU % MEM USAGE/LIMIT MEM % NET I/O
eb9e6b83d6b8 4.96% 6.992 GB/8.169 GB 85.59% 0 B/0 B
$ free -m
total used free shared buffers cached
Mem: 7790 7709 81 0 71 3505
-/+ buffers/cache: 4132 3657
Swap: 0 0 0
有人可以解釋爲什麼容器比rethinkdb過程本身需要更多的內存嗎?
我跑碼頭工人V1.7.1,CoreOS v773.1.0,內核4.1.5
但我不使用掉,我雙重檢查的'自由-m',使用總量爲約7.7/8 GB。所以我確定容器正在吃物理內存,而rethinkdb只使用它。請注意,該機器中沒有其他容器正在運行。 –
你'免費-m'沒有說,你有' -/+緩衝區/緩存:4132'所以4132是用於緩衝區/高速緩存。磁盤緩存不是交換,我的意思是內核用來從磁盤緩存數據的內存量,你可以在這裏閱讀更多關於它的信息http://www.linuxatemyram.com/ – kureikain