server/book: automatic book reallocation #794
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This hides the notion of capacity from
Book
consumers by creating a book with modestly-sized buy/sell priority queues instead of the mammoth defaults of before, and the underlyingOrderPQ
s automatically reallocate into a larger queue whenInsert
s push the queue to capacity.The queue increases by the larger of
minCapIncrement
(4096) or 1/8th of the current utilization (note that utilization is the same as capacity when realloc is triggered byInsert
->Push
).The queue will also automatically reallocate to a smaller capacity when
Extract*
/Remove*
/Pop
reduces the utilization of the queue to a point where the ideal capacity is significantly below the current capacity, specificallysavings > deallocThresh && savings > pq.capacity/3
wheredeallocThresh = 10 * minCapIncrement
.