Path: ccsf.homeunix.org!CALA-MUZIK!ie.u-ryukyu.ac.jp!gama.is.tsukuba.ac.jp!yas From: yas@is.tsukuba.ac.jp (Yasushi Shinjo) Newsgroups: fj.os.linux Subject: Re: OOM Killer Date: 15 Feb 2007 06:35:15 GMT Organization: Institute of Information Sciences and Electronics, University of Tsukuba Lines: 60 Message-ID: References: <3993504news.pl@leo.ie.u-ryukyu.ac.jp> NNTP-Posting-Host: kirk.hlla.is.tsukuba.ac.jp X-Trace: gama.is.tsukuba.ac.jp 1171521294 21486 130.158.83.129 (15 Feb 2007 06:34:54 GMT) X-Complaints-To: news@gama.is.tsukuba.ac.jp NNTP-Posting-Date: Thu, 15 Feb 2007 06:34:54 +0000 (UTC) In-reply-to: kono@ie.u-ryukyu.ac.jp's message of Wed, 7 Feb 2007 14:25:20 +0900 Xref: ccsf.homeunix.org fj.os.linux:960 新城@筑波大学情報です。こんにちは。 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 \\ 新城 靖 (しんじょう やすし) \\ \\ 筑波大学 電子・情報       \\