[dpdk-dev] [PATCH v6 0/3] generic spinlock optimization and test case enhancements
gavin.hu at arm.com
Fri Mar 8 08:16:38 CET 2019
V6: Rebase and drop the first patch as a similar fix was already merged.
V5: Remove ChangeId(sorry for that)
1. Drop one patch for the test case to get time precisely as the overhead
of getting time is amortized already in another patch.
2. Drop the ticket lock patch from this series as there are no dependency
between them, the ticket lock patch was submitted separately:
3. Define volatile variable in patch #3 to be more realistic for spinlock
protection(avoid optimization be compiler).
4. Fix typos.
1. Implemented the ticket lock to improve the fairness and predictability.
The locks are obtained in the order of requested.
1. FORCE_INTRINCIS is still an option for ppc/x86, although not is use
by default, so don't remove it from generic file.
2. Fix the clang compiler error on x86 when the above FORCE_INTRINSICS
1. Remove the 1us delay outside of the locked region to really benchmark
the spinlock acquire/release performance, not the delay API.
2. Use the precise version of getting timestamps for more precise
3. Amortize the overhead of getting the timestamp by 10000 loops.
4. Move the arm specific implementation to arm folder to remove the
5. Use atomic primitives, which translate to one-way barriers, instead of
two-way sync primitives, to optimize for performance.
Gavin Hu (3):
test/spinlock: dealy 1 us to create contention
test/spinlock: amortize the cost of getting time
spinlock: reimplement with atomic one-way barrier builtins
app/test/test_spinlock.c | 31 +++++++++++-----------
.../common/include/generic/rte_spinlock.h | 18 +++++++++----
2 files changed, 29 insertions(+), 20 deletions(-)
More information about the dev