Modify the vm.panic_on_oom sysctl to take a count of events.
Currently, the vm.panic_on_oom sysctl is a boolean which controls the behavior of the VM system when it encounters an out-of-memory situation. If set to 0, the VM system kills the largest process. If set to any other value, the VM system will initiate a panic. This change makes the sysctl a count of events. If set to 0, the VM system kills the largest process. If set to any other value, the VM system will kill the largest process until it has seen the specified number of out-of-memory events. Once it reaches the specified number of events, it will initiate a panic. This change is helpful in capturing cores when the system is in a perpetual cycle of out-of-memory events (as opposed to just hitting one or two sporadic out-of-memory events). Reviewed by: kib MFC after: 2 weeks Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D23601
This commit is contained in:
parent
0d3f465b5d
commit
3c200db9d2
@ -158,7 +158,7 @@ static int vm_panic_on_oom = 0;
|
||||
|
||||
SYSCTL_INT(_vm, OID_AUTO, panic_on_oom,
|
||||
CTLFLAG_RWTUN, &vm_panic_on_oom, 0,
|
||||
"panic on out of memory instead of killing the largest process");
|
||||
"Panic on the given number of out-of-memory errors instead of killing the largest process");
|
||||
|
||||
SYSCTL_INT(_vm, OID_AUTO, pageout_update_period,
|
||||
CTLFLAG_RWTUN, &vm_pageout_update_period, 0,
|
||||
@ -1933,7 +1933,7 @@ vm_pageout_oom(int shortage)
|
||||
}
|
||||
sx_sunlock(&allproc_lock);
|
||||
if (bigproc != NULL) {
|
||||
if (vm_panic_on_oom != 0)
|
||||
if (vm_panic_on_oom != 0 && --vm_panic_on_oom == 0)
|
||||
panic("out of swap space");
|
||||
PROC_LOCK(bigproc);
|
||||
killproc(bigproc, "out of swap space");
|
||||
|
Loading…
x
Reference in New Issue
Block a user