タグ

2007年11月23日のブックマーク (3件)

  • OOM killer - 兼雑記

    http://mkosaki.blog46.fc2.com/blog-entry-416.html このへん見ててなんか前なんかの拍子に OOM killer をながめたのを思い出しました。場所は mm/oom_kill.c 。 こんなかの badness() で各プロセスのメモリに関しての危険度を調べてるんだけど、さっきの switch でどの最適化使うか、って部分もそうなんですが、こういうヒューリスティックスの塊を見るのは面白いなぁと思いました。 例えば一番最初の /* * swapoff can easily use up all memory, so kill those first. */ if (p->flags & PF_SWAPOFF) return ULONG_MAX; とかはああなるほどねえと。 PF_SWAPOFF ってのは swapoff(2) を発行したプロセスに

    OOM killer - 兼雑記
  • OOM Killer

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

    OOM Killer
    kgbu
    kgbu 2007/11/23
    Out of memoryの状況になったときに誰を殺すか、という話
  • 革命の日々! PF_MEMDIEのあつかいがRHEL4とRHEL5でかなり違っていることに気づいたのでメモ

    PF_MEMDIEのあつかいがRHEL4とRHEL5でかなり違っていることに気づいたのでメモ まずRHEL4(kernel2.6.9ベース) フラグが立つのは以下。 つまり、OOM killで死ぬ事が決定したタスクに立つ static void __oom_kill_task(task_t *p) { (略) p->time_slice = HZ; p->flags |= PF_MEMALLOC | PF_MEMDIE; // ★ /* This process has hardware access, be more careful. */ if (cap_t(p->cap_effective) & CAP_TO_MASK(CAP_SYS_RAWIO)) { force_sig(SIGTERM, p); } else { force_sig(SIGKILL, p); } んで、使っている