git: kernel - Implement segment pmap optimizations for x86-64 (6)
Matthew Dillon
dillon at crater.dragonflybsd.org
Fri Sep 14 23:47:39 PDT 2012
commit 9df83100521ca0fada8656eb660477876ab81c58
Author: Matthew Dillon <dillon at 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
More information about the Commits
mailing list