git: kernel - Use different cache_rover for emergency pager

Matthew Dillon dillon at crater.dragonflybsd.org
Sat Oct 21 23:24:01 PDT 2017


commit cf2880a210f08c9d519d06c9161d7fd9af4a4085
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Sat Oct 21 23:17:26 2017 -0700

    kernel - Use different cache_rover for emergency pager
    
    * Fix an issue where the same cache_rover index was being used for both
      pageout threads.  This could result in a great deal of contention
      and cache line bouncing between the threads due to the vm pagerq
      spinlock.
    
    * Fix by changing cache_rover to an array[2].  In addition, the
      one pageout thread iterates its rover forwards while the other
      runs its rover backwards, plus a little more code, to minimize
      conflicts.

Summary of changes:
 sys/vm/vm_pageout.c | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/cf2880a210f08c9d519d06c9161d7fd9af4a4085


-- 
DragonFly BSD source repository



More information about the Commits mailing list