git: kernel - Add usched_dfly algorith, set as default for now (3)

Matthew Dillon dillon at crater.dragonflybsd.org
Tue Sep 18 11:09:43 PDT 2012


commit c75e41b70db3548a580791be81447d2d22e74aaf
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Tue Sep 18 11:01:35 2012 -0700

    kernel - Add usched_dfly algorith, set as default for now (3)
    
    * Add a field to the thread structure, td_wakefromcpu.  All wakeup()
      family calls will load this field with the cpu the thread was woken
      up FROM.
    
    * Use this field in usched_dfly to weight scheduling such that pairs
      of synchronously-dependent threads (for example, a pgbench thread
      and a postgres server process) are placed closer to each other in
      the cpu topology.
    
    * Weighting:
    
      - Load matters the most
      - Current cpu thread is scheduled on is next
      - Synchronous wait/wakeup weighting is last
    
    * Tests on monster yield better all-around results with a new all-time
      high w/ pgbench -j 40 -c 40 -T 60 -S bench:
    
      25% idle at 40:40 tps = 215293.173300 (excluding connections establishing)
    
      Without the wait/wakeup weighting (but with allwload and current cpu
      weighting):
    
      41% idle at 40:40 tps = 162352.813046 (excluding connections establishing)
    
      Without wait/wakeup or current-cpu weighting.  Load balancing only:
    
      43% idle at 40:40 tps = 159047.440641 (excluding connections establishing)

Summary of changes:
 sys/kern/kern_synch.c  |   33 ++++++++++++++++------
 sys/kern/usched_dfly.c |   71 +++++++++++++++++++++++++++++-------------------
 sys/sys/thread.h       |    3 +-
 3 files changed, 69 insertions(+), 38 deletions(-)

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


-- 
DragonFly BSD source repository



More information about the Commits mailing list