andrew
fb9f5ce6f4
Update InternalVersionT::zero in addWrite call
...
There can be other conflict sets in the same thread
2024-07-22 16:14:25 -07:00
andrew
2b1c710953
Add noop getMetricsV1 to HashTable.cpp
2024-07-19 11:25:12 -07:00
andrew
ebf281220b
Add NOLINT for new clangd warning about sizeof pointer
2024-07-19 11:24:37 -07:00
andrew
6051b2fb2e
Remove benchMetrics
...
It's not all that interesting in the end
2024-07-19 11:24:01 -07:00
andrew
11c3ca6766
Add oldest_extant_version metric
2024-07-18 14:19:11 -07:00
andrew
b45dec2f1f
Add point_writes_total and range_writes_total
2024-07-18 14:00:57 -07:00
andrew
c5e9f18c47
Remove some unnecessary std::exchange's
2024-07-17 18:57:12 -07:00
andrew
cebbf89cbe
Fix build for x86
2024-07-17 18:47:12 -07:00
andrew
abb791d86b
Just use a normal && in a place where being branch-free isn't a big deal
2024-07-17 18:21:33 -07:00
andrew
12f361f33a
Don't plumb impl and ReadContext
2024-07-17 18:20:08 -07:00
andrew
640c1ca9dd
Fix issue with thread_local performance
2024-07-17 17:54:39 -07:00
andrew
b7d54d44e1
Add oldest version and newest version metrics
2024-07-17 16:42:46 -07:00
andrew
95596f831f
Add some metrics for addWrites and setOldestVersion
2024-07-17 16:35:29 -07:00
andrew
542371d562
Build TestDriver for perf testing too
2024-07-17 15:48:32 -07:00
andrew
958a4e2d0e
Strengthen metric name structure according to Prometheus guidance
2024-07-16 18:59:42 -07:00
andrew
8ce14c58a4
Print metrics for blackbox tests
2024-07-16 16:46:57 -07:00
andrew
56e847b63c
Experiment with CLOCK_THREAD_CPUTIME_ID
2024-07-15 21:34:22 -07:00
andrew
7fd1c9e140
Make range_read_iterations_total consistent with others
2024-07-15 17:23:48 -07:00
andrew
ebaac253e2
Don't count loop entry as an "iteration"
2024-07-15 14:46:57 -07:00
andrew
9b470a367c
Add check_bytes_total counter
2024-07-15 14:40:22 -07:00
andrew
e7806a36d1
Fix range_read_total counter
...
It was overcounting
2024-07-15 14:09:31 -07:00
andrew
ffd1dfe74d
Rework check metrics
...
{point,prefix,range} x {count,iterations,short_circuits} + node scans
2024-07-15 14:02:39 -07:00
andrew
c39af9117f
Remove nodes allocated/released metrics
2024-07-15 13:34:13 -07:00
andrew
ed274c24d7
Just output metrics in the order declared
2024-07-12 16:10:28 -07:00
andrew
cecfcc0da7
Fix build
2024-07-12 14:52:42 -07:00
andrew
f6edde0e50
Fix data race
2024-07-12 14:49:46 -07:00
andrew
04ac41a7e7
Add memory usage and some "check" metrics
2024-07-12 14:22:16 -07:00
andrew
354920f86f
Add newly-imported symbol for arm64 build
2024-07-12 13:55:41 -07:00
andrew
bfd02503e7
Remove duplicate clang compiler warning action
2024-07-12 13:44:51 -07:00
andrew
d0bd293f8d
Try to fix Jenkins
2024-07-12 13:38:11 -07:00
andrew
41e887c358
Try to fix symbol tests in CI
2024-07-12 13:34:00 -07:00
andrew
e394e3d96a
Adapt comments from prometheus data model better
2024-07-12 13:29:10 -07:00
andrew
3288c583e4
Make metrics thread-safe
...
Even concurrently with calling non-const methods on the associated
ConflictSet
2024-07-12 13:22:02 -07:00
andrew
ef14003781
Try to fix symbol tests in CI
2024-07-12 12:24:23 -07:00
andrew
3ac16bc966
Propose a metrics interface
2024-07-12 12:00:46 -07:00
andrew
1e82f7fe22
Fix compiler warnings
2024-07-11 19:33:57 -07:00
andrew
4182d904c5
Fix an issue where gc wasn't outpacing writes
2024-07-11 16:40:18 -07:00
andrew
bd8ed4e7bd
Bump version
2024-07-10 18:57:44 -07:00
andrew
60cb274a15
Update corpus
2024-07-10 18:49:41 -07:00
andrew
687bc9c935
Explicitly say that begin must be < end in interface
2024-07-10 17:05:08 -07:00
andrew
d50bb8bc80
Add missing header
2024-07-10 16:59:31 -07:00
andrew
f19b403f19
Remove "writes are canonical" precondition from addWrites
2024-07-10 16:42:53 -07:00
andrew
34cd210907
Update README benchmarks
2024-07-09 16:06:44 -07:00
andrew
1a5da9e899
Bump version
2024-07-08 16:12:23 -07:00
andrew
8ba9b04d8c
Remove "32-bit versions" jenkins stage
...
This is the default now
2024-07-08 15:45:10 -07:00
andrew
d895be36d2
Declare dependency on version.txt in Makefile
2024-07-08 15:41:51 -07:00
andrew
65f8462e88
Remove dead code
2024-07-08 11:14:30 -07:00
andrew
46e01af027
Specialize scan16 for Node16 in checkMaxBetweenExclusive
2024-07-08 11:01:17 -07:00
andrew
c9d0d72684
Remove some branches for Node3 in checkMaxBetweenExclusive
2024-07-07 20:45:20 -07:00
andrew
9046dc5a8f
Only switch on type once in checkMaxBetweenExclusive
2024-07-07 17:28:45 -07:00
andrew
e2927bf0fa
Simplify condition for TooOld in check
2024-07-03 16:39:22 -07:00
andrew
75a2b8d06c
Remove bogus assert
...
It's bogus since we mess with oldestVersionFullPrecision in addWrites
2024-07-03 14:47:50 -07:00
andrew
76df63a9d7
Allow writeVersion, oldestVersion, and readVersion to span 2e9
2024-07-03 14:19:50 -07:00
andrew
9c5b38b09a
Revert setOldestVersion interface change
2024-07-03 11:27:09 -07:00
andrew
7142dab7ae
Update c api documentation for ConflictSet_setOldestVersion
2024-07-03 10:53:45 -07:00
andrew
3db3d975fc
Interface change! Allow decreasing setOldestVersion
2024-07-03 10:31:57 -07:00
andrew
982b31af34
Explicitly convert uint32x4_t to int32x4_t
2024-07-03 10:01:00 -07:00
andrew
cc716ef16b
Attempt to fix memory leak
2024-07-03 09:48:02 -07:00
andrew
88bcc7b75c
Update corpus
2024-07-03 09:36:03 -07:00
andrew
3e6be6bd83
Allow write version to jump by more than 2e9
2024-07-03 09:07:09 -07:00
andrew
e59fee39c7
Start versions at zero in fuzz test for now
2024-07-03 07:55:07 -07:00
andrew
3e2c8310bb
Fix several bugs related to extant versions too old
2024-07-03 07:53:03 -07:00
andrew
8264f1342d
Fix some precision issues
2024-07-02 13:55:05 -07:00
andrew
5d7e9c6f85
Compare against oldestVersionFullPrecision at full precision
2024-07-02 13:53:56 -07:00
andrew
cdf42fcb34
Add gcScanStep
...
Also remove oldestVersion arg in write call tree
2024-07-02 13:06:53 -07:00
andrew
cbe40b5dba
Fix missing debug verbose guard
2024-07-02 12:48:00 -07:00
andrew
a04e81b3ff
Add version window constants
2024-07-02 12:45:35 -07:00
andrew
0be97a34b6
Add new version window requirement to reference impl
2024-07-02 12:42:03 -07:00
andrew
68ab9a9f08
Commit to 32-bit versions
2024-07-02 10:30:22 -07:00
andrew
01488880ef
Fix outdated comment
2024-07-01 17:27:04 -07:00
andrew
bb84792cff
Use avx512f across entire checkRangeRead call tree
...
Keeping the avx fallback
2024-07-01 13:07:34 -07:00
andrew
1f421e95ff
Resuppress coverage
2024-06-30 21:48:43 -07:00
andrew
66bd799f05
Fix hasty change about end invariants
...
`end` is allowed to be <= 0 at the beginning of
checkMaxBetweenExclusive, but not later after checking for the first
range version.
2024-06-30 21:20:05 -07:00
andrew
2646d5eaf1
Get back to 100% coverage
...
Closes #30
This is achieved by running libfuzzer with USE_32_BIT_VERSIONS={OFF,ON},
and then combining the corpora. I suspect that the problem earlier was
that we only had the 32 bit corpus but were measuring coverage for 64
bit in jenkins.
2024-06-30 21:15:42 -07:00
andrew
0367ba9856
Fast path for prefix reads
2024-06-30 20:33:54 -07:00
andrew
9dec45317e
Try to fix code coverage in Jenkins
2024-06-30 15:38:06 -07:00
andrew
a68ad5dd17
Interface change! Return TooOld after 2e9 versions
...
Event if setOldestVersion wasn't called
2024-06-30 15:28:51 -07:00
andrew
8e3eacb54f
Apply function multi versioning higher in call stack to save branches
2024-06-30 13:30:44 -07:00
andrew
0184e1d7f6
Remove incorrect comma in CMakeLists.txt
2024-06-30 11:34:50 -07:00
andrew
c52d50f4f9
Remove bounds from forEachInRange
2024-06-29 22:53:51 -07:00
andrew
447da11d59
Remove obsolete optimizations
...
These are a relic of when we used forEachInRange for checkMaxBetween
2024-06-29 22:47:42 -07:00
andrew
daa8e02d4f
Fixes from testing on an avx512f-capable machine
2024-06-29 22:41:39 -07:00
andrew
fd3ea2c2a8
clang-format fixes
2024-06-29 22:21:50 -07:00
andrew
0b839b9d7e
Fixes for symbol multi-versioning with avx512f
2024-06-29 22:20:50 -07:00
andrew
11a022dcf7
Attempt at avx512f 32bit compare
2024-06-29 21:56:21 -07:00
andrew
94da4c72a5
Fix clang-format
2024-06-29 15:11:40 -07:00
andrew
461e07822a
32-bit x86 simd for the other scan16 too
2024-06-29 15:10:36 -07:00
andrew
75499543e7
Fix clang-format
2024-06-29 15:03:44 -07:00
andrew
81f44d352f
SIMD scan16 for x86 + 32-bit versions
2024-06-29 15:01:18 -07:00
andrew
45da8fb996
Use the faster unvectorized implementation for Node3
2024-06-28 22:52:39 -07:00
andrew
4958a4cced
Make always_inline function inline
...
Try to fix warning in jenkins
2024-06-28 22:42:01 -07:00
andrew
587874841f
Fix test that had a decreasing write version
2024-06-28 19:57:25 -07:00
andrew
648b0b9238
Add an always_inline, with explanatory comment
2024-06-28 19:55:33 -07:00
andrew
d3f4afa167
More SIMD for scanning Node256 with 32-bit versions
2024-06-28 19:48:06 -07:00
andrew
f762add4d6
Write vectorized 32-bit compare by hand for arm in scan16
2024-06-28 17:28:59 -07:00
andrew
b311e5f1f0
Add an experimental, disabled 32 bit internal version
...
I think it's only missing detection for full-precision versions more
than 2e9 apart
2024-06-28 15:53:35 -07:00
andrew
ff81890921
Rename MaxVersionT to InternalVersionT
2024-06-28 14:34:48 -07:00
andrew
0e96177f5c
Allow to easily experiment with 32 bit "max version" type
2024-06-28 13:54:12 -07:00
andrew
efb0e52a0a
SIMD implementation of scan16 for x86
...
Closes #29
2024-06-27 22:21:41 -07:00
andrew
2df7000090
Remove switch on phase from Stepwise left/right step
2024-06-27 20:51:35 -07:00