git: kernel - Improve exec performance

Matthew Dillon dillon at crater.dragonflybsd.org
Wed Feb 22 10:50:26 PST 2017


commit 2519e05d567701aec3b36033b57d37e178e25c22
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Wed Feb 22 10:43:00 2017 -0800

    kernel - Improve exec performance
    
    * Improves non-shared 32-way-concurrent exec performance for a small
      static binary on the xeon from 92KE/s (92000 execs/sec) to 136KE/s.
    
    * Improves single-threaded test performance from ~4.5KE/s to ~6.5KE/s.
      And for reasons I don't entirely understand, sometimes up to ~8KE/s.
    
    * Several changes here, but the only one that matters for the test is
      that the pv_placemarker_wakeup() code removes a spin_lock/spin_unlock
      pair on the pmap.  I adjusted the code so the pmap spinlock is not
      required for placemarker wakeup operations.
    
      What I think might have happened here is that this removal also got
      rid of a spin-lock shared/exclusive ping-pong.  Still, the huge
      improvement in performance was not expected.  Even with the removal
      there is still an atomic_swap_long() in the code path.
    
      My guess is that multiple atomic ops degrade the instruction pipeline
      more than one would otherwise expect due to the multiple memory
      fences.

Summary of changes:
 sys/platform/pc64/x86_64/pmap.c | 54 +++++++++++++++++++++++++++++------------
 1 file changed, 39 insertions(+), 15 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/2519e05d567701aec3b36033b57d37e178e25c22


-- 
DragonFly BSD source repository



More information about the Commits mailing list