1. 06 12月, 2016 1 次提交
  2. 02 12月, 2016 6 次提交
  3. 01 12月, 2016 3 次提交
  4. 30 11月, 2016 6 次提交
  5. 29 11月, 2016 9 次提交
  6. 24 11月, 2016 1 次提交
    • S
      Improve Write Stalling System · cd7c4143
      Siying Dong 提交于
      Summary:
      Current write stalling system has the problem of lacking of positive feedback if the restricted rate is already too low. Users sometimes stack in very low slowdown value. With the diff, we add a positive feedback (increasing the slowdown value) if we recover from slowdown state back to normal. To avoid the positive feedback to keep the slowdown value to be to high, we add issue a negative feedback every time we are close to the stop condition. Experiments show it is easier to reach a relative balance than before.
      
      Also increase level0_stop_writes_trigger default from 24 to 32. Since level0_slowdown_writes_trigger default is 20, stop trigger 24 only gives four files as the buffer time to slowdown writes. In order to avoid stop in four files while 20 files have been accumulated, the slowdown value must be very low, which is amost the same as stop. It also doesn't give enough time for the slowdown value to converge. Increase it to 32 will smooth out the system.
      Closes https://github.com/facebook/rocksdb/pull/1562
      
      Differential Revision: D4218519
      
      Pulled By: siying
      
      fbshipit-source-id: 95e4088
      cd7c4143
  7. 23 11月, 2016 2 次提交
    • Y
      Unified InlineSkipList::Insert algorithm with hinting · dfb6fe67
      Yi Wu 提交于
      Summary:
      This PR is based on nbronson's diff with small
      modifications to wire it up with existing interface. Comparing to
      previous version, this approach works better for inserting keys in
      decreasing order or updating the same key, and impose less restriction
      to the prefix extractor.
      
      ---- Summary from original diff ----
      
      This diff introduces a single InlineSkipList::Insert that unifies
      the existing sequential insert optimization (prev_), concurrent insertion,
      and insertion using externally-managed insertion point hints.
      
      There's a deep symmetry between insertion hints (cursors) and the
      concurrent algorithm.  In both cases we have partial information from
      the recent past that is likely but not certain to be accurate.  This diff
      introduces the struct InlineSkipList::Splice, which encodes predecessor
      and successor information in the same form that was previously only used
      within a single call to InsertConcurrently.  Splice holds information
      about an insertion point that can be used to levera
      Closes https://github.com/facebook/rocksdb/pull/1561
      
      Differential Revision: D4217283
      
      Pulled By: yiwu-arbug
      
      fbshipit-source-id: 33ee437
      dfb6fe67
    • K
      Making persistent cache more resilient to filesystem failures · 3068870c
      Karthikeyan Radhakrishnan 提交于
      Summary:
      The persistent cache is designed to hop over errors and return key not found. So far, it has shown resilience to write errors, encoding errors, data corruption etc. It is not resilient against disappearing files/directories. This was exposed during testing when multiple instances of persistence cache was started sharing the same directory simulating an unpredictable filesystem environment.
      
      This patch
      
      - makes the write code path more resilient to errors while creating files
      - makes the read code path more resilient to handle situation where files are not found
      - added a test that does negative write/read testing by removing the directory while writes are in progress
      Closes https://github.com/facebook/rocksdb/pull/1472
      
      Differential Revision: D4143413
      
      Pulled By: kradhakrishnan
      
      fbshipit-source-id: fd25e9b
      3068870c
  8. 22 11月, 2016 9 次提交
  9. 21 11月, 2016 1 次提交
    • C
      Fix deadlock when calling getMergedHistogram · a0deec96
      Changli Gao 提交于
      Summary:
      When calling StatisticsImpl::HistogramInfo::getMergedHistogram(), if
      there is a dying thread, which is calling
      ThreadLocalPtr::StaticMeta::OnThreadExit() to merge its thread values to
      HistogramInfo, deadlock will occur. Because the former try to hold
      merge_lock then ThreadMeta::mutex_, but the later try to hold
      ThreadMeta::mutex_ then merge_lock. In short, the locking order isn't
      the same.
      
      This patch addressed this issue by releasing merge_lock before folding
      thread values.
      Closes https://github.com/facebook/rocksdb/pull/1552
      
      Differential Revision: D4211942
      
      Pulled By: ajkr
      
      fbshipit-source-id: ef89bcb
      a0deec96
  10. 20 11月, 2016 2 次提交
    • A
      Remove Arena in RangeDelAggregator · fe349db5
      Andrew Kryczka 提交于
      Summary:
      The Arena construction/destruction introduced significant overhead to read-heavy workload just by creating empty vectors for its blocks, so avoid it in RangeDelAggregator.
      Closes https://github.com/facebook/rocksdb/pull/1547
      
      Differential Revision: D4207781
      
      Pulled By: ajkr
      
      fbshipit-source-id: 9d1c130
      fe349db5
    • M
      Use more efficient hash map for deadlock detection · e63350e7
      Manuel Ung 提交于
      Summary:
      Currently, deadlock cycles are held in std::unordered_map. The problem with it is that it allocates/deallocates memory on every insertion/deletion. This limits throughput since we're doing this expensive operation while holding a global mutex. Fix this by using a vector which caches memory instead.
      
      Running the deadlock stress test, this change increased throughput from 39k txns/s -> 49k txns/s. The effect is more noticeable in MyRocks.
      Closes https://github.com/facebook/rocksdb/pull/1545
      
      Differential Revision: D4205662
      
      Pulled By: lth
      
      fbshipit-source-id: ff990e4
      e63350e7