git: kernel - Improve tsleep/wakeup queue collisions

Matthew Dillon dillon at crater.dragonflybsd.org
Thu Sep 28 17:39:55 PDT 2017


commit 8acf06173d5e8936de7978fe9d1df471b196bf1f
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Thu Sep 28 17:34:47 2017 -0700

    kernel - Improve tsleep/wakeup queue collisions
    
    * Expand the per-cpu array of TAILQs into an array of structures for
      tsleep/wakeup operation.
    
      The new structure stores up to four idents using a 4-way set-associative
      algorithm (-1 in ident0 handles overflows), allowing the originating cpu
      for a wakeup() to implement a second-level filter after the global array's
      cpumask.
    
    * This filter prevents nearly all possible spurious IPIs that used to occur
      due to ident hash collisions, even when the hash table size is forced to
      be relatively small.  The code isn't the best in the world, but the IPIs
      it saves probably blow away the added overhead.
    
    Testing-by: sephe, dillon

Summary of changes:
 sys/kern/kern_synch.c | 98 ++++++++++++++++++++++++++++++++++++++++++++-------
 sys/sys/globaldata.h  |  2 +-
 sys/sys/vmmeter.h     |  2 +-
 3 files changed, 88 insertions(+), 14 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/8acf06173d5e8936de7978fe9d1df471b196bf1f


-- 
DragonFly BSD source repository


More information about the Commits mailing list