Commit Graph
100 Commits
Author SHA1 Message Date
andrew 55e23bafba Update some of the invariant checks to account for leaves 2024-11-22 18:45:50 -08:00
andrew 235938b5aa Update eraseTree to account for leaves 2024-11-22 18:27:45 -08:00
andrew 8b71852495 WIP add leaf types. Not used yet 2024-11-22 17:59:42 -08:00
andrew e5e6402b43 Group read only queries together 2024-11-22 17:35:59 -08:00
andrew 61f5612e1f Remove escape hatch from IteratorBase 2024-11-22 17:21:29 -08:00
andrew 406b27936c Convert interleaved checks to IteratorBase 2024-11-22 17:05:42 -08:00
andrew 7972ed919b Convert checkRangeRead to IteratorBase 2024-11-22 16:03:15 -08:00
andrew 0619b6325c Convert checkPrefixRead to IteratorBase 2024-11-22 15:37:53 -08:00
andrew 7b14c8f9d5 Add static_assert IteratorBase size <= 16 2024-11-22 15:30:41 -08:00
andrew 22632fc9f2 Add IteratorBase::type 2024-11-22 15:29:24 -08:00
andrew 1fccb65bd8 Convert checkPointRead to IteratorBase 2024-11-22 15:25:51 -08:00
andrew ee5972f946 Add IteratorBase stub 2024-11-22 14:54:20 -08:00
andrew 7166811387 Fix condition checking for erasing the root 2024-11-21 17:49:54 -08:00
andrew d68f208d9b Add to corpus 2024-11-21 17:27:14 -08:00
andrew 81323972aa Remove "memcpy common section to next node"
Do it in a simpler, more robust/type safe way
2024-11-21 16:47:05 -08:00
andrew 8694ba8b6a Remove unused field 2024-11-21 16:35:10 -08:00
andrew 0cea5565b5 Add artificial root parent and stop plumbing impl everywhere 2024-11-21 16:32:13 -08:00
andrew 972f16ed8f Remove Node::endOfRange
This should simplify storing leaves directly
2024-11-21 11:55:30 -08:00
andrew 2412684316 childMaxVersion memory needs to be defined
Also remove some dead code, and only memset children to 0 for Node256.
Other nodes detect absence of children other ways.
2024-11-21 10:35:05 -08:00
andrew 8190d2f24e Update README 2024-11-20 21:55:37 -08:00
andrew 8251631087 Fix some unintentional generic usages of getChildAndMaxVersion 2024-11-20 21:50:48 -08:00
andrew 90fb2a9542 Remove some usages of generic getFirstChild 2024-11-20 21:43:47 -08:00
andrew 7c01f8ba0f Remove some usages of maxVersion 2024-11-20 21:24:59 -08:00
andrew 0df2db7f8a Remove some bad unlikely annotations found by -Wmisexpect
Using a profile from server_bench
2024-11-20 19:06:50 -08:00
andrew 5e975f3b2b More writes than reads in ServerBench 2024-11-20 17:49:55 -08:00
andrew bcbae026b2 Update README 2024-11-20 14:53:57 -08:00
andrew e125b599b5 Remove freeList, min/max capacity tracking
The freelist doesn't seem to get a good hit rate. Policies other than
capacity = minCapacity did not improve the rate we were resizing nodes,
but did increase memory usage, so get rid of that too. Add a
nodes_resized_total counter.
2024-11-20 14:45:56 -08:00
andrew 3f4d3b685a More valgrind annotations 2024-11-20 13:36:30 -08:00
andrew 4198b8b090 Some prep for leafs-in-parents 2024-11-20 12:20:11 -08:00
andrew 8757d2387c Call prefetch within TaggedNodePointer::getType
Instead of at every call site
2024-11-20 12:07:32 -08:00
andrew 4a22b95d53 Remove state machine transitions "from" Node0
Those aren't used
2024-11-20 11:46:45 -08:00
andrew 03d6c7e471 Allocate maxCapacity instead of minCapacity 2024-11-19 16:13:57 -08:00
andrew ceecc62a63 Disable freelist for macos
It's faster on my mac m1 without the freelist
2024-11-19 14:28:15 -08:00
andrew 80f0697e79 Fix arm detection on macos 2024-11-19 13:24:13 -08:00
andrew ce23d3995c Fix README 2024-11-19 09:02:16 -08:00
andrew 6f899e063b Update readme 2024-11-18 14:31:56 -08:00
andrew e5b9c03e77 Restore change that hurt codegen
I don't understand, but this is necessary for good codegen somehow
2024-11-18 14:29:55 -08:00
andrew a158d375f5 Add script for updating readme 2024-11-18 14:05:14 -08:00
andrew ee5a84cd7b Remove dead stores 2024-11-15 17:03:29 -08:00
andrew 33f14e3d9b Remove unused header 2024-11-15 16:49:21 -08:00
andrew 77262ee2d3 Fix some grammar in a comment 2024-11-15 16:47:31 -08:00
andrew 9945998e05 Remove unused code in Internal.h 2024-11-15 16:30:20 -08:00
andrew 2777e016ff Be more consistent about TaggedNodePointer vs Node* 2024-11-15 16:30:05 -08:00
andrew 661ffcd843 Explain purpose for prefetches in getFirstChild 2024-11-15 16:29:42 -08:00
andrew 3a34d3cecb Minor style improvements 2024-11-15 16:29:17 -08:00
andrew 189c73e3bd Reduce Node3 size by 8 2024-11-15 15:53:18 -08:00
andrew 35987030fc Add to corpus 2024-11-15 15:47:32 -08:00
andrew 0621741ec3 Update README benchmarks 2024-11-15 13:12:47 -08:00
andrew f5ec9f726a Remove getFirstChildExists
Once we know the type, for Node3 and higher we know the first child
exists anyway
2024-11-15 13:05:11 -08:00
andrew 552fc11c5d Prefetch second child to improve scan performance 2024-11-15 12:45:01 -08:00
andrew 71ace9cc55 Make more range reads commit in server_bench 2024-11-15 11:35:55 -08:00
andrew bcf459304f Improve cpu performance for workload generation in server_bench 2024-11-14 17:16:57 -08:00
andrew f403c78410 Add test that exercises "too large removal buffer" code 2024-11-14 16:40:47 -08:00
andrew 08958d4109 Remove the reverse step for saving scan search path 2024-11-14 16:27:25 -08:00
andrew dcc5275ec9 Isolate conflict-set on one thread in server_bench 2024-11-13 22:46:11 -08:00
andrew c5ef843f9e Add range reads to server_bench 2024-11-13 14:06:50 -08:00
andrew b78e817e24 Only set HAS_AVX for x86_64 2024-11-12 18:16:30 -08:00
andrew 9c82f17e20 Enable valgrind annotations for gcc build in jenkins 2024-11-12 18:13:32 -08:00
andrew 665a9313a4 Valgrind annotations for new free list 2024-11-12 18:11:09 -08:00
andrew 6e66202d5e Add to corpus 2024-11-12 17:50:27 -08:00
andrew a92271a205 Build with -Wunused-variable 2024-11-12 17:50:27 -08:00
andrew 0dbfb4deae Detect simd headers in c++ instead of cmake 2024-11-12 17:50:27 -08:00
andrew 6e229b6b36 Skip sorting if already sorted for skip list 2024-11-12 17:50:27 -08:00
andrew 2200de11c8 Point read/write workload for server_bench 2024-11-12 17:50:27 -08:00
andrew b37feb58dd Require musttail and preserve_none for interleaved 2024-11-12 17:50:27 -08:00
andrew 94a4802824 Don't do hardening check if cross compiling 2024-11-12 17:50:27 -08:00
andrew 707dbdb391 Build binaries compatible with cf-protection 2024-11-12 17:50:27 -08:00
andrew bdd343bb57 Use llvm-objcopy if using clang and it's available
This works around a weird error I was getting when trying to link a
translation unit that included Internal.h with libconflict-set-static.a
with clang + gnu objcopy
2024-11-12 17:50:27 -08:00
andrew 7b31bd5efe Use llvm 19 for macos package 2024-11-10 21:47:26 -08:00
andrew e255e1a926 Add missing symbol imports for macos 2024-11-10 21:05:42 -08:00
andrew f85b92f8db Improve next{Physical,Logical} codegen 2024-11-09 13:21:36 -08:00
andrew 3c44614311 Allocate from freelist with min/max capacity constraints 2024-11-08 21:35:13 -08:00
andrew 9c1ac3702e Move index closer to start of Node{3,16}
This should slightly improve cache hit rate
2024-11-08 20:54:00 -08:00
andrew 224d21648a Make server_bench workload point writes of tuple-encoded keys 2024-11-08 20:50:54 -08:00
andrew 33f9c89328 Try reduceLog: true 2024-11-04 17:03:24 -08:00
andrew 12c2d5eb95 Try not logging ctest output to stdout 2024-11-04 15:36:50 -08:00
andrew db357e747d Add __mem{cpy,set}_chk to allowed symbol imports 2024-11-04 15:08:25 -08:00
andrew 4494359ca2 Make insert_iterations for interleaved writes more closely match 2024-11-04 14:46:30 -08:00
andrew f079d84bda Update README 2024-11-04 14:33:43 -08:00
andrew 724ec09248 Add to corpus 2024-11-04 14:30:12 -08:00
andrew 4eaad39294 Maintain capacity invariant strictly 2024-11-04 13:43:02 -08:00
andrew 891100e649 Add to corpus 2024-11-01 21:32:00 -07:00
andrew 22e55309be Update benchmarks 2024-11-01 17:50:03 -07:00
andrew d6269c5b7c Use interleaved even if preserve_none is missing 2024-11-01 15:12:59 -07:00
andrew faacdff2d9 Add to corpus 2024-11-01 14:11:43 -07:00
andrew 821179b8de Remove dead code 2024-11-01 13:48:32 -07:00
andrew 681a961289 Dispatch on type pairs for end iter 2024-11-01 13:45:41 -07:00
andrew c73a3da14c Dispatch on type pairs for begin iter 2024-11-01 12:46:36 -07:00
andrew 5153d25cce Dispatch on type pairs for common prefix iter 2024-11-01 12:06:48 -07:00
andrew d2ec4e7fae Fix use of wrong member in endIter 2024-11-01 11:17:26 -07:00
andrew c7e2358746 Add memcmp to aarch64 imports 2024-10-31 15:36:19 -07:00
andrew ec1c1cf43f Run gc less frequently
But still run it to account for the version potentially increasing
2024-10-31 15:35:00 -07:00
andrew eaad0c69a7 Store Result* pointer instead of index 2024-10-31 12:59:36 -07:00
andrew 309e6ab816 Dispatch on pair of types 2024-10-30 22:59:00 -07:00
andrew 12b82c1be5 Fix accidentally-checked-in debug change 2024-10-30 16:44:00 -07:00
andrew 0cce9df8a8 Use constexpr int instead of sizeof 2024-10-30 15:36:46 -07:00
andrew 0df09743da Don't assign to nextRangeWrite twice 2024-10-30 15:33:40 -07:00
andrew c4b0aa1085 Skip over point writes in phase 3 2024-10-30 15:08:27 -07:00
andrew 051bfb05fe Fix up DEBUG_VERBOSE 2024-10-30 14:50:34 -07:00
andrew 7e1bcbf9be Follow forwarding pointers for end before addWriteRange 2024-10-30 14:26:37 -07:00