DragonFly BSD
DragonFly commits List (threaded) for 2012-09
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

git: kernel - Implement segment pmap optimizations for x86-64 (6)


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 14 Sep 2012 23:47:39 -0700 (PDT)

commit 9df83100521ca0fada8656eb660477876ab81c58
Author: Matthew Dillon <dillon@apollo.backplane.com>
Date:   Fri Sep 14 23:44:10 2012 -0700

    kernel - Implement segment pmap optimizations for x86-64 (6)
    
    * Improve process exit.  When the last process referencing a shared
      anonymous memory VM object exits the kernel destroys the object
      and its shared pmap.
    
      Removal of pages from the shared pmap was causing the system to IPI
      EVERY cpu for EACH pte.  Needless to say this caused a process to take
      ~2 minutes to remove a ~6GB shared segment.  Optimize this case by
      not bothering the do the IPI/invlpg invalidations since the pmap is not
      actually active.
    
    * This also applies to any exiting process.  When cleaning out the pmap
      we no longer invlpg each pte, since nobody is referencing the pmap except
      the current thread in the kernel doing the exit.  It will simply issue
      a cpu_invltlb() when it is all done.

Summary of changes:
 sys/platform/pc64/x86_64/pmap.c |   74 ++++++++++++++++++++++++++------------
 1 files changed, 50 insertions(+), 24 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/9df83100521ca0fada8656eb660477876ab81c58


-- 
DragonFly BSD source repository



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]