git: kernel - Refactor the TSC MP synchronization test
Matthew Dillon
dillon at crater.dragonflybsd.org
Fri Aug 17 16:56:43 PDT 2018
commit 1eb5a42bfcae00196f0a11051408d9e9dca9968d
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Fri Aug 17 16:52:45 2018 -0700
kernel - Refactor the TSC MP synchronization test
* Refactor the TSC MP synchronization test. Do not use cpusync.
Using cpusync results in O(N x N) worth of overhead instead of
O(N) worth of overhead.
Instead, have the per-cpu threads run the test simultaneously using
each other's data.
* We synchronize to the last TSC element that was saved on each cpu.
This probably needs a bit of work to ensure determinism, but at
the moment its good in that it synchronizes all cores off of a
single cache mastership change, instead of having them all compete
for cache mastership.
* Probably needs some fine tuning, at the moment I allow a slop of
10uS which is almost certainly too much. Note, however, that
SMP interactions can create ~1uS latencies on particular memory
accesses.
* Solves serious issues with the old test on 64 cpu threads.
These issues may also have been related to the ipiq fifo size
being too small.
Summary of changes:
sys/platform/pc64/isa/clock.c | 150 ++++++++++++++++++++++++++++--------------
1 file changed, 102 insertions(+), 48 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/1eb5a42bfcae00196f0a11051408d9e9dca9968d
--
DragonFly BSD source repository
More information about the Commits
mailing list