タグ

OOM Killerに関するpitworksのブックマーク (7)

  • Linux Memory Overcommit - memologue

    かなり昔ですが、或日さんのSolaris8におけるmemory over commitの話題に触発され、Linuxの場合について調べた事があります。正しさは保証しませんが当時のメモを貼っておきます。 memory overcommit? メモリ資源の非常に限られた環境でLinuxを使用しているとよく遭遇する現象なのだが、kernel 2.4までのLinuxでは、"mallocが成功を返したにもかかわらず、その確保した筈のメモリ領域にアクセスすると、SIGKILLによってkernelから強制終了させられてしまう" という現象が 発生することがある。これは、「全プロセスがnew/mallocしたメモリの総量」に対して物理メモリ量が少なすぎる瞬間に於いては常に発生し得る。 何に困っているかといえば、C++でオブジェクトをnewした時に、メモリの枯渇をstd::bad_alloc例外送出という形で

    Linux Memory Overcommit - memologue
  • DBサーバ向けLinuxチューニングを考える 〜 メモリオーバーコミット編 : DSAS開発者の部屋

    Cでプログラムを書いていて大量のメモリを確保したくなったとき、大抵は mallocを使うと思いますが、その際には戻り値がNULLかどうかを判断してエラー処理に飛ばすと思います。しかし、Linux のメモリ管理サブシステムには「メモリ・オーバーコミット」という機構があり、実装されているメモリ以上の領域を確保できてしまいます。 #include <stdio.h> #include <stdlib.h> int main() { int i; char *p; for(i=0;i<65536;i++){ p = (char *)malloc(65536); if(0 == (long)p){ break; } } printf("SIZE=%dMB\n",i*65536/1024/1024); return(0); } swapoff したメモリ 1G のマシンでこれを実行するとこんな感じにな

    DBサーバ向けLinuxチューニングを考える 〜 メモリオーバーコミット編 : DSAS開発者の部屋
    pitworks
    pitworks 2011/06/29
    # sysctl -w vm.overcommit_ratio=99 # sysctl -w vm.overcommit_memory=2 でOOM KILLERは停止可能
  • Bug 193542 - Oom killer killing processes with free memory available?

    pitworks
    pitworks 2011/01/04
    OOM Killerの不具合っぽい動作について
  • メモリ10GBも残ってて、oom-killer? - もにっき

    今セットアップしているLinuxサーバで、とあるプログラムを実行したらoom-killerがでました。 当然メモリ不足だろうと思い、/var/log/messages を確認したら、以下の通り10GBも空きメモリがありました。 Dec 12 16:36:49 HOGESERVER kernel: Linux version 2.6.9-34.ELsmp (bhcompile@hs20-bc1-7.build.redhat.com) (gcc version 3.4.5 20051201 (Red Hat 3.4.5-2)) #1 SMP Fri Feb 24 16:54:53 EST 2006 Dec 12 16:52:11 HOGESERVER kernel: Free pages: 10230732kB (10217536kB HighMem) Dec 12 16:52:11 HOGE

    メモリ10GBも残ってて、oom-killer? - もにっき
    pitworks
    pitworks 2011/01/04
    OOM Killerの不具合っぽい動作について
  • OOM Killer

    OOM Killer(Out of Memory Killer)は,システムが実メモリーと仮想メモリー空間(スワップ領域)を使い切り,必要なメモリー領域を新たに確保できない場合に,プロセスを強制終了させて空きメモリーを確保する,Linuxカーネルの仕組みです。OOM Killerは,空きメモリーが確保できないことによりシステム自体が停止するという最悪の事態を避けるために用意されています。 OOM Killerは,空きメモリーを十分確保でき,システム上損失のなるべく少ないプロセスを選んで,強制終了します。また,強制終了するプロセスの数がなるべく少なくなるようにしています。実際に,どのプロセスを強制終了するかは,カーネル内部のbadness()関数が決めます。 ただし,OOM Killerにより,システム上大切なプロセスが強制終了させられることもあります。システム・トラブルの原因に成り得ること

    OOM Killer
    pitworks
    pitworks 2011/01/04
    OOM Killer(Out of Memory Killer)は,システムが実メモリーと仮想メモリー空間(Swap)を使い切り,必要なメモリー領域を新たに確保できない場合に,プロセスを強制終了させて空きメモリーを確保するカーネルの仕組み
  • TeasOne Coffee » Blog Archive » OOMkillerの罠

    ある日、Tomcatにアクセスしてみると、アクセスできない。。。 何ゆえ~ Tomcatのログを調べても何もでていない。 しょうがなく、messagesを調べていたら、なにやら不穏な文言が。。。 kernel: Out of Memory: Killed process 16304 (java). kernel: oom-killer: gfp_mask=0xd0 Javaのプロセスが殺されてるー しかもこの「oom-killer」ってのが怪しげ。 他にプロセスを殺していることも判明。 ウィルスか~!?と恐れおののきググッてみると。。。 ITProに下記のような記事が。。。 http://itpro.nikkeibp.co.jp/article/COLUMN/20061117/254053/ 読んででみて驚愕 「OOM Killer(Out of Memory Kill

    pitworks
    pitworks 2011/01/04
    OOM Killerの不具合対策として、# echo 2 > /proc/sys/vm/overcommit_memory でメモリのオーバコミットを停止。// メモリの少ないサーバではメモリの新規割当が出来ずにフリーズする可能性もある設定なので注意
  • OOM Killer対策

    先日のこの話 、Out Of Memory Killer 、通称OOM Killerのせいらしい。キャッシュとしてshared memoryを贅沢に(^^;)使用するPostgresSQLのWrite processが集中的に狙われてます>_<。 直接的にこの仕組みを切るにはecho 0 > /proc/sys/vm/oom-kill かecho -17 > /proc/(PID)/oom_adj ただし前者はRedHat独自&OOM Killer完全停止、後者はカーネル2.6.11以降&プロセスごとに設定。CentOS 4.4のカーネルは現時点2.6.9なので前者。もうひとつの方法として、OOM Killerが発動する1つの原因を作っているメモリのオーバーコミットをさせない方法。具体的には、 echo 2 > /proc/sys/vm/overcommit_memory echo 90

    pitworks
    pitworks 2011/01/04
    echo 0 > /proc/sys/vm/oom-kill でOOM Killerを無効化
  • 1