Skip to content

RingDB 2.0.0

Latest
Compare
Choose a tag to compare
@arajni3 arajni3 released this 17 Mar 21:55
· 1 commit to main since this release

Major efficiency updates:

  • We now use hugepages for socket buffers allocation to keep virt-phys memory translations constant (which does not require the MAP_LOCKED flag) to enable DMA. Now that we use memory-locked hugepages for all buffer allocations, this makes io_uring buffer rings useless for us, and all verbal references "buffer ring" now refer to "buffer set".
  • Because hugepages are locked in place, software-defined NUMA cannot bring buffers into a NUMA socket's local memory. Thus, to enable NUMA friendliness, we now allocate the initial SSTable buffer set locally in the worker thread's routine after pinning it to its CPU core instead of in the initialization method in the main thread. Keeping FIFO buffer eviction now ensures that the original buffers (the NUMA-local ones) will get reused first, which is the fairest policy across different request batches with regards to speed since all new request batches must start searching from the top of the SSTable tree.
  • Because initial buffer sets are now allocated locally, we no longer need two buffer alignment constants, only the first one (the one used for I/O).

Also, typos have been fixed.