2011/05/02

oom_score_adjのoomは、out of memoryのこと

こんなログが出ている。

init (1): /proc/1/oom_adj is deprecated, please use /proc/1/oom_score_adj instead.

/proc/1/oom_adjは推奨してない、代わりに/proc/1/oom_score_adjを使いたまえ、ということだ。
しかしそもそもoomとは何だろう?

どうもout of memoryのことらしい。
OOM Killerという言葉で説明があった。
メモリが足りないので殺してしまえ、という対象から除きたいときにoom_adjへ書き込んでおくらしい。

init.rcでは、このように書いていた。

# Set init its forked children's oom_adj.
write /proc/1/oom_adj -16

リンク先では「-17」だったのだが、ここでは「-16」になっている。
数字の意味は何だろう?

ここに、-17はOOM_DISABLEですよ、という説明があった。
grepすると、include/linux/oom.hにあった。

/*
 * /proc//oom_adj is deprecated, see
 * Documentation/feature-removal-schedule.txt.
 *
 * /proc//oom_adj set to -17 protects from the oom-killer
 */
#define OOM_DISABLE (-17)
/* inclusive */
#define OOM_ADJUST_MIN (-16)
#define OOM_ADJUST_MAX 15

feature-removal-schedule.txtは、今後削除するものリストだった(oom_adjは2012年8月)。
-17は、確かにoom-killerから保護するためのものらしい。
で、-16。これは一番小さい値らしい。
これは、殺される優先度を最後に持ってこようとしているのかな?
そうらしい

そんなわけで、ここは動かないこととは関係がないことが分かった。
こうやって1つ1つ潰していくしかないな。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。