lkml.org 
[lkml]   [2006]   [Apr]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH] support for panic at OOM
    Hi, 

    This is updated version. thank you for suggestions.

    -Kame

    ==
    This patch adds panic_on_oom sysctl under sys.vm.

    When sysctl vm.panic_on_oom = 1, the kernel panics intead of killing
    rogue processes. And if vm.panic_on_oom is 0 the kernel will do
    oom_kill() in the same way as it does today. Of course, the
    default value is 0 and only root can modifies it.

    In general, oom_killer works well and kill rogue processes. So
    the whole system can survive. But there are environments where
    panic is preferable rather than kill some processes.

    Signed-Off-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

    Index: oom_die-2.6.17-rc1-mm2/mm/oom_kill.c
    ===================================================================
    --- oom_die-2.6.17-rc1-mm2.orig/mm/oom_kill.c
    +++ oom_die-2.6.17-rc1-mm2/mm/oom_kill.c
    @@ -22,6 +22,7 @@
    #include <linux/jiffies.h>
    #include <linux/cpuset.h>

    +int sysctl_panic_on_oom;
    /* #define DEBUG */

    /**
    @@ -330,6 +331,8 @@ void out_of_memory(struct zonelist *zone
    break;

    case CONSTRAINT_NONE:
    + if (sysctl_panic_on_oom)
    + panic("out of memory. panic_on_oom is selected\n");
    retry:
    /*
    * Rambo mode: Shoot down a process and hope it solves whatever
    Index: oom_die-2.6.17-rc1-mm2/include/linux/sysctl.h
    ===================================================================
    --- oom_die-2.6.17-rc1-mm2.orig/include/linux/sysctl.h
    +++ oom_die-2.6.17-rc1-mm2/include/linux/sysctl.h
    @@ -188,6 +188,7 @@ enum
    VM_ZONE_RECLAIM_MODE=31, /* reclaim local zone memory before going off node */
    VM_ZONE_RECLAIM_INTERVAL=32, /* time period to wait after reclaim failure */
    VM_SWAP_PREFETCH=33, /* swap prefetch */
    + VM_PANIC_ON_OOM=34, /* panic at out-of-memory */
    };


    Index: oom_die-2.6.17-rc1-mm2/kernel/sysctl.c
    ===================================================================
    --- oom_die-2.6.17-rc1-mm2.orig/kernel/sysctl.c
    +++ oom_die-2.6.17-rc1-mm2/kernel/sysctl.c
    @@ -60,6 +60,7 @@ extern int proc_nr_files(ctl_table *tabl
    extern int C_A_D;
    extern int sysctl_overcommit_memory;
    extern int sysctl_overcommit_ratio;
    +extern int sysctl_panic_on_oom;
    extern int max_threads;
    extern int sysrq_enabled;
    extern int core_uses_pid;
    @@ -718,6 +719,14 @@ static ctl_table vm_table[] = {
    .proc_handler = &proc_dointvec,
    },
    {
    + .ctl_name = VM_PANIC_ON_OOM,
    + .procname = "panic_on_oom",
    + .data = &sysctl_panic_on_oom,
    + .maxlen = sizeof(sysctl_panic_on_oom),
    + .mode = 0644,
    + .proc_handler = &proc_dointvec,
    + },
    + {
    .ctl_name = VM_OVERCOMMIT_RATIO,
    .procname = "overcommit_ratio",
    .data = &sysctl_overcommit_ratio,
    Index: oom_die-2.6.17-rc1-mm2/Documentation/sysctl/vm.txt
    ===================================================================
    --- oom_die-2.6.17-rc1-mm2.orig/Documentation/sysctl/vm.txt
    +++ oom_die-2.6.17-rc1-mm2/Documentation/sysctl/vm.txt
    @@ -30,6 +30,7 @@ Currently, these files are in /proc/sys/
    - zone_reclaim_mode
    - zone_reclaim_interval
    - swap_prefetch
    +- panic_on_oom

    ==============================================================

    @@ -189,3 +190,16 @@ copying back pages from swap into the sw
    practice it can take many minutes before the vm is idle enough.

    The default value is 1.
    +
    +=============================================================
    +
    +panic_on_oom
    +
    +This enables or disables panic on out-of-memory feature. If this is set to 1,
    +the kernel panics when out-of-memory happens. If this is set to 0, the kernel
    +will kill some rogue process, called oom_killer. Usually, oom_killer can kill
    +rogue processes and system will survive. If you want to panic the system rather
    +than killing rogue processes, set this to 1.
    +
    +The default value is 0.
    +
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-04-12 10:25    [W:0.041 / U:141.736 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site