Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

OOM Killer

207 views
Skip to first unread message

Shinji KONO

unread,
Feb 7, 2007, 12:25:20 AM2/7/07
to
河野真治 @ 琉球大学情報工学です。

なんか、OSの課題で、malloc_test が強制終了されるかかレポー
トに書いて来る奴がいる。そんな風にプログラム組んでないんだ
けどなぁ。

とか思ったら、

 http://dsas.blog.klab.org/archives/50706324.html

とかいう話が。Linux は、メモリが足りなくなると、勝手に kill
するのかよ!

Mach 系は、Swap が足りなくなると、メモリをリクエストしたプ
ロセスがsuspendする、のが普通。で、Swap を増やしたり、他の
プロセスを終了させてSwapを空けると、実行が再開されます。Mac
OS X でも、そういう仕様らしい。

そう言われてみると、授業中に実行して「あれ?!」とか思ったこ
とがあったっけ。今年もメモリを使い切るのを実演したら、いき
なり、X Server が止まって、変だと思ったんだよな。なんかが殺
されたんだろうなぁ。

実は知りませんでした~ Mach/Mac OS X 使いだったもので。

---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科

Yasushi Shinjo

unread,
Feb 15, 2007, 1:35:15 AM2/15/07
to
新城@筑波大学情報です。こんにちは。

In article <3993504...@leo.ie.u-ryukyu.ac.jp>


ko...@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

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

0 new messages