Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fasterlog lowmem #178

Merged
merged 7 commits into from Sep 26, 2019
Merged

Fasterlog lowmem #178

merged 7 commits into from Sep 26, 2019

Conversation

badrishc
Copy link
Contributor

  • Adding support for low memory footprint (4 pages)
  • Added support for odd-sized payloads in presence of holes in log
  • Fixed concurrency issue that occurs with low num of pages
  • Improved max throughput by eliminating a 10ms sleep in BlockAllocate
  • Misc cleanup of logic to track flush and close addresses in log

@badrishc badrishc merged commit 2cd85e3 into fasterlog Sep 26, 2019
badrishc added a commit that referenced this pull request Oct 30, 2019
* Initial checkin
* Cleaned up epochs, improved fine grain scalability.
* Added commit and recovery support.
* Added TryAppend so users can implement log throttling.
* Fasterlog lowmem (#178)
Adding support for low memory footprint (4 pages)
Added support for odd-sized payloads in presence of holes in log
Fixed concurrency issue that occurs with low num of pages
Improved max throughput by eliminating a 10ms sleep in BlockAllocate
Misc cleanup of logic to track flush and close addresses in log
* Fasterlog TryAppend (#179)
Adding truly non-blocking TryAppend functionality. See sample for how this is used.
* Fasterlog async (#180)
* Added support for TryAppend. Removed List-based batch support.
* Added non-blocking TryAppend
* Added span variant
* Fix definition of SecondChanceFraction for read cache, to be 1 - MutableFraction of the log.
* Added async FlushAndCommit
* Added batched version by separating out in-memory append and wait for commit - gives better perf as the first operation is usually sync
* Tweak async sample to get back to 2GB/sec
* Other updates:
1) Allocations can handle thousands of parallel tasks
2) Removed concept of negative address - allocations are always over available pages
3) Improved scan interface to allow user memory pooling
4) Exposed commit task
5) Cleaned up sample
* Added check for entry fitting on single page
* Added batch interface (sync and async) to log append.
* Added tailing iterator WaitAsync to wait for iteration to proceed.
* Convert Span to ReadOnlySpan for appends
* Added MemoryPool/IMemoryOwner variant of iterator
* Updated way to pin pooled memory
* Update azure-pipelines.yml
* Support minimum buffer size of just 1 page!
* Actually checking in support for 1 page in memory, added initial draft of disposing task
* Added a test
* Improved sample, changed GetMemory to use byte[] instead of Span<byte>
* Update next address of iterator if GetNext fails early.
* Added random read functionality (ReadAsync) for FasterLog. Moved GetMemory to FasterLogSettings instead of Scan. Speed up TruncateUntil. Updated nuspec.
* Ensure begin addresses commit if needed, even when tail addresses do not change. Added CommittedBeginAddress metric.
* changed test project target
* Updated random read example
* Use TrySetResult instead of SetResult, since log closure moves the task to completed state.
* Added simple version/checksum to commit info.
* Added opt-in support for per-entry 8-byte checksum (xor) in header of entry.
* Fixing issue with async enqueue.
* Fixed testcase since thread abort not supported on some platforms.
* Fixing concurrency issue with contiguous partial flush requests. Removed spin-wait for adjacent flush completion.
* Fasterlog exceptions (#189)
* Added storage exception handling, connecting to tasks.
* Cleanup of error handling, control when exception is bubbled up to user.
* Added yield in NeedToWait
* Improved iterator support in case of exception
* Added async iterator support
* Added support for persistent/recoverable named iterators.
@badrishc badrishc deleted the fasterlog-lowmem branch September 7, 2020 02:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant