kernel - Address excessive stall in pageout during deadlock avoidance
authorMatthew Dillon <dillon@apollo.backplane.com>
Thu, 1 Apr 2010 18:06:07 +0000 (11:06 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Thu, 1 Apr 2010 18:09:55 +0000 (11:09 -0700)
commitfa1ae1e3421842b6f64e4530930b91d6fda254e5
treea4f6bc68c26e947b00fa68717ce9035c3bb11cf3
parentde38603c0183a45608d9741eaf559ccea71a3716
kernel - Address excessive stall in pageout during deadlock avoidance

* The pageout daemon uses LK_TIMELOCK to avoid deadlocking on a vnode
  that might be held locked during a pfault, which waits up to 1/10 of
  a second.

  If the vnode has a large number of pageable pages each page may go
  through the timeout.  This can result in the pageout daemon stalling
  for an excessive amount of time.

  Reduce instances of the problem by remembering the last vnode which
  failed its timelock and using LK_NOWAIT for later pages.  A single
  vnode is remembered for now.

Reported-by: Francois Tigeot <ftigeot@wolfpond.org>
sys/vm/vm_pageout.c