新城@筑波大学情報です。こんにちは。

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

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報       \\