bor
bor copied to clipboard
Block-stm optimization
Added tests for executor and two major improvements:
- Add a dependency map during execution. This will prevent aborted tasks from being sent for execution immedaitely after failure.
- Change the key of MVHashMap from string to a byte array. This will reduce time to convert byte slices to strings.
Sample test output:
go test -v -run TestMoreConflicts $(go list ./... | grep blockstm)
=== RUN TestMoreConflicts
=== PAUSE TestMoreConflicts
=== CONT TestMoreConflicts
INFO [08-08|12:59:02.707] Executing block numTx=10 numRead=20 numWrite=20 numNonIO=100
DEBUG[08-08|12:59:02.710] blockstm exec summary execs=27 success=18 aborts=9 validations=18 failures=8 #tasks/#execs=37.04%
exec duration 4.018705ms, serial duration 2.44006ms, time reduced -1.578645ms -64.70%, ❌
INFO [08-08|12:59:02.711] Executing block numTx=10 numRead=20 numWrite=20 numNonIO=500
DEBUG[08-08|12:59:02.719] blockstm exec summary execs=23 success=17 aborts=6 validations=18 failures=7 #tasks/#execs=43.48%
exec duration 8.508673ms, serial duration 9.146504ms, time reduced 637.831µs 6.97%, ✅
INFO [08-08|12:59:02.720] Executing block numTx=10 numRead=20 numWrite=100 numNonIO=100
DEBUG[08-08|12:59:02.725] blockstm exec summary execs=28 success=19 aborts=9 validations=19 failures=9 #tasks/#execs=35.71%
exec duration 7.057344ms, serial duration 2.989481ms, time reduced -4.067863ms -136.07%, ❌
INFO [08-08|12:59:02.727] Executing block numTx=10 numRead=20 numWrite=100 numNonIO=500
DEBUG[08-08|12:59:02.740] blockstm exec summary execs=30 success=18 aborts=12 validations=18 failures=8 #tasks/#execs=33.33%
exec duration 15.895153ms, serial duration 10.234288ms, time reduced -5.660865ms -55.31%, ❌
INFO [08-08|12:59:02.744] Executing block numTx=10 numRead=20 numWrite=200 numNonIO=100
DEBUG[08-08|12:59:02.749] blockstm exec summary execs=26 success=19 aborts=7 validations=19 failures=9 #tasks/#execs=38.46%
exec duration 10.0053ms, serial duration 3.62166ms, time reduced -6.38364ms -176.26%, ❌
Codecov Report
:exclamation: No coverage uploaded for pull request base (
block-stm@98f8b19). Click here to learn what that means. The diff coverage isn/a.
@@ Coverage Diff @@
## block-stm #490 +/- ##
============================================
Coverage ? 56.20%
============================================
Files ? 608
Lines ? 70462
Branches ? 0
============================================
Hits ? 39604
Misses ? 27448
Partials ? 3410
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.