Re: OOM Killer
新城@筑波大学情報です。こんにちは。
In article <3993504news.pl@leo.ie.u-ryukyu.ac.jp>
kono@ie.u-ryukyu.ac.jp (Shinji KONO) writes:
> なんか、OSの課題で、malloc_test が強制終了されるかかレポー
> トに書いて来る奴がいる。そんな風にプログラム組んでないんだ
> けどなぁ。
> http://dsas.blog.klab.org/archives/50706324.html
> とかいう話が。Linux は、メモリが足りなくなると、勝手に kill
> するのかよ!
対策としては、/proc/sys/vm/overcommit_memory を、ほにゃらら
するといいみたいい。
# echo 2 > /proc/sys/vm/overcommit_memory
JF のドキュメントは、これ。
http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.6/sysctl/vm.txt.html
------------------------------------------------------------
overcommit_memory:
このファイルには、メモリ・オーバーコミットを有効にするフラグが含
まれています。
このフラグが 0 の場合、カーネルは、ユーザ空間からメモリ要求があっ
たときに、残っているフリーメモリの量を評価しようとします。
このフラグが 1 の場合、カーネルは、実際にメモリを使い切るまでは
常に十分なメモリがあるかのように振舞います。
このフラグが 2 の場合、カーネルは、どのようなメモリ・オーバー
コミットも許さないように試みる「厳格なオーバーコミット」ポリシー
を使用します。
「もしものときのために」大量のメモリを malloc() するけれども、
それをほとんど使用しないというプログラムがたくさんあるので、
メモリ・オーバーコミットの機能は非常に役に立ちます。
デフォルトの値は 0 です。
詳細情報については、Documentation/vm/overcommit-accounting 及び
security/commoncap.c::cap_vm_enough_memory() を参照してください。
------------------------------------------------------------
しかし、2 は、いいとして、0, 1 の意味がよく分かりません。
ふと検索すると、何年か前の fj にも出てました。
http://groups.google.co.jp/group/fj.os.linux/tree/browse_frm/month/2001-02/45b657e8a32a33fb?rnum=61&hl=ja&_done=%2Fgroup%2Ffj.os.linux%2Fbrowse_frm%2Fmonth%2F2001-02%3Fhl%3Dja%26
Linux の overcommit までは、覚えていたけれど、プロセスを勝手
に kill するまでは忘れてました。
mmap の MAP_NORESERVE だと、overcommit_memory == 2 でも数え
られないって、何ですかそれ。
http://mkosaki.blog46.fc2.com/blog-entry-280.html
\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報 \\
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735