Linuxのファイルシステムを詳解します

FrontPage



OOM Killerとは

Linux kernelがメモリ不足(swapも含め)に陥ったとき、~
このOOM Killerが発動し、縦横無尽にプロセスを駆逐し~
ていきます。その際、無差別ともとれる残虐な行為から~
悪名高いメモリ不足解決器 (OOM killer) と揶揄されて~
今日に至ります。~
~
Linuxを扱うものとして、OOM killer は正義の味方的な~
振る舞いをしてくれるものと望んでおりますが、いかん~
せん、必要が無いときに仕事をしてくれたり、無差別に~
駆逐していくのは、ヒールな存在そのものです。~
~
そんな彼から守るすべは、OOM killerのソースコードを~
変えていくことや、私は善良です、無実ですという目印~
(-17)を掲げなければなりません。~
現在は目印(-17) さえ付けておけば、助かるそうです。~
あと、OOM Killerさん自身を消去することも可能です。~
(ただし、本当に悪いメモリ大量消費プロセスがいた場~
合は、kernelが突然落ちてしまいます。。。)~

カーネルが無実のプロセスをkillし始めるとき (2006/3/28)~
http://www.atmarkit.co.jp/flinux/rensai/watch2006/... ~

Linux カーネルが行う OOM killer に関して

原文。 http://lwn.net/Articles/104179/~
ある航空会社は少ない燃料で飛行機を飛ばす方がより経済的である
ことを発見しました。飛行機は軽くなり燃料の消費が少なく、お金
をセーブできます。
しかし、ごく稀に燃料が不足するようなことがあれば、飛行機は
墜落します。
この問題は、特別な燃料切れ(OOF)メカニズムの開発を行った技術者
により解決されました。緊急時には、旅行者一人が選択され、飛行機
の外に放り出されます。
(もし必要なら、この手続きが繰り返されます)

この理論の主要部は開発され、放り出される犠牲者を適切に選択する
という問題に努力が向けられました。はたして犠牲者はランダムに
選ばれるべきだろうか? それとも、もっとも重い人物?
または、一番の老人? 旅行者は放り出されないようにお金を払うべき
であり、その結果犠牲者はもっとも貧乏な人物であるべき?
そしてもし最も重い人物が選ばれ、それがパイロットだったら?
ファーストクラスの旅行者は免除されるべき?

現在このOOFメカニズムは存在しており、燃料不足が無いときでも、
ときどき作動します。技術者はこの機能不全がどのように発生する
のかを依然として研究しています。

現在はパイロットも余裕で放り出されます。~
パイロットがいなくなった飛行機は誰が操縦するのでしょうか。。~
ちなみにこの飛行機にはパイロットは一人であり、乗客の中には~
パイロットはいません。~
((;゜Д゜)ガクガクブルブル

oom-killerの止め方

oom Killerさんにお帰り頂く方法。~
Redhatオリジナル?~
echo 0 > /proc/sys/vm/oom-kill

oom Killerさんに自分は無実ですと目印を付けて回避する方法~
2.6.11以降有効~
echo -17 > /proc/〈PID〉/oom_adj
oom-killer disable gitlog(2005-04-17)
Signed-off-by: Andrea Arcangeli <andrea @ suse.de>
Signed-off-by: Andrew Morton <akpm @ osdl.org>
Signed-off-by: Linus Torvalds <torvalds @ osdl.org>
コメントgitlog(2006-09-30)
Signed-off-by: Jan-Frode Myklebust <mykleb @ no.ibm.com>
Signed-off-by: Andrew Morton <akpm @ osdl.org>
Signed-off-by: Linus Torvalds <torvalds @ osdl.org>
2.12 /proc/<pid>/oom_adj - Adjust the oom-killer score
------------------------------------------------------
This file can be used to adjust the score used to select
which processes should be killed in an out-of-memory
situation. Giving it a high score will increase the
likelihood of this process being killed by the oom-killer.
Valid values are in the range -16 to +15, plus the special
value -17, which disables oom-killing altogether for this
process.

2.13 /proc/<pid>/oom_score - Display current oom-killer score
-------------------------------------------------------------
This file can be used to check the current score used by the
oom-killer is for any given <pid>. Use it together with
/proc/<pid>/oom_adj to tune which process should be killed
in an out-of-memory situation.


Out Of Memory Killer(2006/11/20)(日経Linux) ~
http://itpro.nikkeibp.co.jp/article/COLUMN/2006111... ~

Number -17(2006/6/8)(路地裏 ソース解読研究所 ミラクルブログ MIRACLE LINUX) ~
http://blog.miraclelinux.com/uraura/2006/06/number... ~

OOM Killerのログの例

kernel: oom-killer: gfp_mask=0x200d2, order=0
kernel:
kernel: Call Trace: <ffffffff801519ea>{out_of_memory+51} <ffffffff80152aee>{__alloc_pages+534}
kernel: <ffffffff8016326e>{read_swap_cache_async+70} <ffffffff8015bd14>{swapin_readahead+97}
kernel: <ffffffff8015c3ae>{__handle_mm_fault+1576} <ffffffff80306523>{thread_return+100}
kernel: <ffffffff8011bb40>{do_page_fault+941} <ffffffff803082b3>{_spin_lock_irqsave+11}
kernel: <ffffffff801815e7>{poll_freewait+64} <ffffffff80181a97>{do_select+1007}
kernel: <ffffffff8010b899>{error_exit+0} <ffffffff801d8412>{copy_user_generic_c+8}
kernel: <ffffffff80181d79>{sys_select+718} <ffffffff8010a916>{system_call+126}
kernel: Mem-info:
kernel: Node 0 DMA per-cpu:
kernel: cpu 0 hot: high 0, batch 1 used:0
kernel: cpu 0 cold: high 0, batch 1 used:0
kernel: cpu 1 hot: high 0, batch 1 used:0
kernel: cpu 1 cold: high 0, batch 1 used:0
kernel: Node 0 DMA32 per-cpu:
kernel: cpu 0 hot: high 186, batch 31 used:26
kernel: cpu 0 cold: high 62, batch 15 used:42
kernel: cpu 1 hot: high 186, batch 31 used:15
kernel: cpu 1 cold: high 62, batch 15 used:50
kernel: Node 0 Normal per-cpu: empty
kernel: Node 0 HighMem per-cpu: empty
kernel: Free pages: 8436kB (0kB HighMem)
kernel: Active:110811 inactive:109883 dirty:0 writeback:0 unstable:0 free:2109 slab:29393 mapped:1333 pagetables:766
kernel: Node 0 DMA free:4012kB min:44kB low:52kB high:64kB active:4188kB inactive:3228kB present:11872kB pages_scanned:7445 all_unreclaimable? yes
kernel: lowmem_reserve[]: 0 992 992 992
kernel: Node 0 DMA32 free:4424kB min:4004kB low:5004kB high:6004kB active:439056kB inactive:436432kB present:1016004kB pages_scanned:323100 all_unreclaimable? no
kernel: lowmem_reserve[]: 0 0 0 0
kernel: Node 0 Normal free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no
kernel: lowmem_reserve[]: 0 0 0 0
kernel: Node 0 HighMem free:0kB min:128kB low:128kB high:128kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no
kernel: lowmem_reserve[]: 0 0 0 0
kernel: Node 0 DMA: 1*4kB 1*8kB 0*16kB 1*32kB 0*64kB 1*128kB 1*256kB 1*512kB 1*1024kB 1*2048kB 0*4096kB = 4012kB
kernel: Node 0 DMA32: 196*4kB 59*8kB 12*16kB 3*32kB 1*64kB 0*128kB 1*256kB 1*512kB 0*1024kB 1*2048kB 0*4096kB = 4424kB
kernel: Node 0 Normal: empty
kernel: Node 0 HighMem: empty
kernel: Swap cache: add 18346, delete 18056, find 1077/1599, race 1+1
kernel: Free swap = 2290132kB
kernel: Total swap = 2349608kB
kernel: Free swap: 2290132kB
kernel: 262128 pages of RAM
kernel: 5651 reserved pages
kernel: 225765 pages shared
kernel: 294 pages swap cached
kernel: Out of Memory: Killed process 4802 (su).

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

関連ソフト/文書

Firefox3 Meter  Use OpenOffice.org

管理人/副管理人のみ編集できます