svn commit: r290915 - head/sys/vm

Konstantin Belousov kib at FreeBSD.org
Mon Nov 16 05:52:06 UTC 2015


Author: kib
Date: Mon Nov 16 05:52:04 2015
New Revision: 290915
URL: https://svnweb.freebsd.org/changeset/base/290915

Log:
  VM daemon works in parallel with the pagedaemon threads, and, among
  other actions, swaps out kernel stacks of the processes.  On the other
  hand, currentl OOM logic which selects a process to kill in the
  critical condition, skips process with swapped-out thread.  Under some
  loads, this results in the big(gest) process being ignored by OOM.
  
  Do not skip a process which has inhibited thread due to the swap-out,
  in the OOM selection loop.  Note that killing such process requires
  the thread stack page-in, but sometimes this is the only way to
  recover.
  
  Reported and tested by:	pho
  Reviewed by:	alc
  Sponsored by:	The FreeBSD Foundation
  MFC after:	3 weeks

Modified:
  head/sys/vm/vm_pageout.c

Modified: head/sys/vm/vm_pageout.c
==============================================================================
--- head/sys/vm/vm_pageout.c	Mon Nov 16 05:38:40 2015	(r290914)
+++ head/sys/vm/vm_pageout.c	Mon Nov 16 05:52:04 2015	(r290915)
@@ -1554,7 +1554,8 @@ vm_pageout_oom(int shortage)
 			if (!TD_ON_RUNQ(td) &&
 			    !TD_IS_RUNNING(td) &&
 			    !TD_IS_SLEEPING(td) &&
-			    !TD_IS_SUSPENDED(td)) {
+			    !TD_IS_SUSPENDED(td) &&
+			    !TD_IS_SWAPPED(td)) {
 				thread_unlock(td);
 				breakout = 1;
 				break;


More information about the svn-src-all mailing list