kernel_optimize_test/mm
Luis Claudio R. Goncalves 93b43fa550 oom: give the dying task a higher priority
In a system under heavy load it was observed that even after the
oom-killer selects a task to die, the task may take a long time to die.

Right after sending a SIGKILL to the task selected by the oom-killer this
task has its priority increased so that it can exit() soon, freeing
memory.  That is accomplished by:

        /*
         * We give our sacrificial lamb high priority and access to
         * all the memory it needs. That way it should be able to
         * exit() and clear out its resources quickly...
         */
 	p->rt.time_slice = HZ;
 	set_tsk_thread_flag(p, TIF_MEMDIE);

It sounds plausible giving the dying task an even higher priority to be
sure it will be scheduled sooner and free the desired memory.  It was
suggested on LKML using SCHED_FIFO:1, the lowest RT priority so that this
task won't interfere with any running RT task.

If the dying task is already an RT task, leave it untouched.  Another good
suggestion, implemented here, was to avoid boosting the dying task
priority in case of mem_cgroup OOM.

Signed-off-by: Luis Claudio R. Goncalves <lclaudio@uudg.org>
Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Reviewed-by: Minchan Kim <minchan.kim@gmail.com>
Cc: David Rientjes <rientjes@google.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-08-09 20:45:02 -07:00
..
backing-dev.c Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2010-08-06 09:23:07 -07:00
bootmem.c
bounce.c
compaction.c
debug-pagealloc.c
dmapool.c
fadvise.c
failslab.c
filemap_xip.c
filemap.c gcc-4.6: mm: fix unused but set warnings 2010-08-09 20:44:58 -07:00
fremap.c
highmem.c
hugetlb.c hugetlb: call mmu notifiers on hugepage cow 2010-08-09 20:44:54 -07:00
hwpoison-inject.c
init-mm.c mm: provide init_mm mm_context initializer 2010-08-09 20:44:54 -07:00
internal.h
Kconfig
Kconfig.debug
kmemcheck.c
kmemleak-test.c
kmemleak.c
ksm.c mm: extend KSM refcounts to the anon_vma root 2010-08-09 20:44:55 -07:00
maccess.c
madvise.c
Makefile
memblock.c
memcontrol.c vmscan: kill prev_priority completely 2010-08-09 20:45:00 -07:00
memory_hotplug.c
memory-failure.c
memory.c gcc-4.6: mm: fix unused but set warnings 2010-08-09 20:44:58 -07:00
mempolicy.c mempolicy: reduce stack size of migrate_pages() 2010-08-09 20:44:58 -07:00
mempool.c
migrate.c mm: extend KSM refcounts to the anon_vma root 2010-08-09 20:44:55 -07:00
mincore.c
mlock.c
mm_init.c
mmap.c mmap: remove unnecessary lock from __vma_link 2010-08-09 20:44:58 -07:00
mmu_context.c
mmu_notifier.c
mmzone.c
mprotect.c
mremap.c
msync.c
nommu.c
oom_kill.c oom: give the dying task a higher priority 2010-08-09 20:45:02 -07:00
page_alloc.c vmscan: kill prev_priority completely 2010-08-09 20:45:00 -07:00
page_cgroup.c
page_io.c
page_isolation.c
page-writeback.c mm: implement writeback livelock avoidance using page tagging 2010-08-09 20:44:59 -07:00
pagewalk.c
percpu_up.c
percpu-km.c
percpu-vm.c
percpu.c
prio_tree.c
quicklist.c
readahead.c
rmap.c rmap: add anon_vma bug checks 2010-08-09 20:44:59 -07:00
shmem.c shmem: reduce pagefault lock contention 2010-08-09 20:44:58 -07:00
slab.c gcc-4.6: mm: fix unused but set warnings 2010-08-09 20:44:58 -07:00
slob.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 2010-08-06 11:44:08 -07:00
slub.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6 2010-08-06 11:44:08 -07:00
sparse-vmemmap.c
sparse.c
swap_state.c
swap.c
swapfile.c
thrash.c
truncate.c
util.c mm: use memdup_user 2010-08-09 20:44:54 -07:00
vmalloc.c mm: use ERR_CAST 2010-08-09 20:44:54 -07:00
vmscan.c vmscan: update isolated page counters outside of main path in shrink_inactive_list() 2010-08-09 20:45:00 -07:00
vmstat.c vmscan: kill prev_priority completely 2010-08-09 20:45:00 -07:00