cvs commit: src/sys/vm vm_object.c vm_pageout.c

Tor Egge tegge at FreeBSD.org
Wed Aug 10 02:17:51 GMT 2005


tegge       2005-08-10 00:17:36 UTC

  FreeBSD src repository

  Modified files:
    sys/vm               vm_object.c vm_pageout.c 
  Log:
  Don't allow pagedaemon to skip pages while scanning PQ_ACTIVE or PQ_INACTIVE
  due to the vm object being locked.
  
  When a process writes large amounts of data to a file, the vm object associated
  with that file can contain most of the physical pages on the machine.  If the
  process is preempted while holding the lock on the vm object, pagedaemon would
  be able to move very few pages from PQ_INACTIVE to PQ_CACHE or from PQ_ACTIVE
  to PQ_INACTIVE, resulting in unlimited cleaning of dirty pages belonging to
  other vm objects.
  
  Temporarily unlock the page queues lock while locking vm objects to avoid lock
  order violation.  Detect and handle relevant page queue changes.
  
  This change depends on both the lock portion of struct vm_object and normal
  struct vm_page being type stable.
  
  Reviewed by:    alc
  
  Revision  Changes    Path
  1.350     +5 -0      src/sys/vm/vm_object.c
  1.269     +70 -5     src/sys/vm/vm_pageout.c


More information about the cvs-all mailing list