100 Commits
Author SHA1 Message Date
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