Speed up translog writes by moving buffers where possible #127836
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.
From all the investigating of indexing as of late :) this serves two purposes:
Save allocation of pages under the lock for low write-rate translogs and also make copying large documents a little less likely. Also it removes a dependency on
BigArrays
which is always nice :)This really is just one small step though, there's a lot more cleanup that can (and should) happen here to avoid more copies. The current implementation literally copies each written byte at least 3 times (from the
Operation
to the first buffer, first buffer to second buffer inadd
, and then another round to the direct IO buffer when writing), that's just a needless waste of cycles and memory bandwidth.