search
LoginSignup
16

More than 5 years have passed since last update.

posted at

updated at

Organization

About vm.overcommit_memory

参照

要約

overcommit_memory 値の意味

0 (kernel > 2.4) default

最近のLinuxのデフォルト。きっちり裏取りはしないが、今までの経験から、メモリが確保出来そうか否かを判断する。つまり、そこそこ賢く、そこそこ早い、OOM Killerは出る

パフォーマンス: 中
堅牢性: 中

1 (kernel < 2.0 default)

何にもovercommitを制御しない、最もアホなモード。アホ故に早い
OOM Killerは一番でる。

パフォーマンス: 高
堅牢性: 低

redis専用サーバとかなら、最善。redisもサーバ兼用とかだと、0 の方がいい

2 (kernel > 2.6)

overcommitをシビアに管理する。overcommit_ratioで制御する。
swap = 0 なら ratio=100にしとけ。
Linuxのメモリ管理の性質上、 SWAPを大量に積んでおく必要がある
一番賢いが、一番遅い、OOM Killerは 出ない 理論上は一応出る(稀ではあるが)。

パフォーマンス: 低
堅牢性: 高

1サーバに相乗りなどは、バックエンドが殺されないように 2にするのがいいと思う。

overcommit_memory = 2 の運用

とりあえず /proc/meminfo の下記を見る

CommitLimit:    1839215 kB
Committed_AS:   1089466 kB

CommitLimit の値は、 SWAP + RAM * overcommit_ratio の値となる。
各プロセスは実際に利用するよりも遥かに大きいメモリ容量をOSに要求する、それを許さないのが overcommit=2
よって Commited_AS != 実メモリ利用量なので、 ratio=100にしても 実メモリの 150%ぐらいのSWAPを積んだ方がいい。
SWAPの容量は、実メモリの利用比率とCommitの利用比率が近い値にするのがいいと思う。

CommitLinit の空きは監視したほうがいい。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
16