1. 25 11月, 2015 5 次提交
    • N
      InlineSkipList part 3/3 - new skiplist type that colocates key and node · 9a9d4759
      Nathan Bronson 提交于
      Summary:
      This diff completes the creation of InlineSkipList<Cmp>, which is like
      SkipList<const char*, Cmp> but it always allocates the key contiguously
      with the node.  This allows us to remove the pointer from the node
      to the key.  As a result the memory usage of the skip list is reduced
      (by 1 to sizeof(void*) bytes depending on the padding required to align
      the key storage), cache locality is improved, and we halve the number
      of calls to the allocator.
      
      For skip lists whose keys are freshly-allocated const char*,
      InlineSkipList is stricly preferrable to SkipList.  This diff doesn't
      replace SkipList, however, because some of the use cases of SkipList in
      RocksDB are either character sequences that are not allocated at the
      same time as the skip list node allocation (for example
      hash_linklist_rep) or have different key types (for example
      write_batch_with_index).  Taking advantage of inline allocation for
      those cases is left to future work.
      
      The perf win is biggest for small values.  For single-threaded CPU-bound
      (32M fillrandom operations with no WAL log) with 16 byte keys and 0 byte
      values, the db_bench perf goes from ~310k ops/sec to ~410k ops/sec.  For
      large values the improvement is less pronounced, but seems to be between
      5% and 10% on the same configuration.
      
      Test Plan: make check
      
      Reviewers: igor, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D51123
      9a9d4759
    • N
      InlineSkipList - part 2/3 · 52017295
      Nathan Bronson 提交于
      Summary:
      This diff is 2/3 in a sequence that introduces a skip list optimized
      for a key that is a freshly-allocated const char*.  The change is broken
      into pieces to make it easier to review.  This piece removes the Key
      template type, introduces the AllocateKey interface, and changes the
      unit test from using uint64_t as the Key type to using pointers to an 8
      byte blob.
      
      Test Plan: unit test
      
      Reviewers: igor, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D51285
      52017295
    • N
      InlineSkipList - part 1/3 · 78812ec6
      Nathan Bronson 提交于
      Summary:
      This diff is 1/3 in a sequence that introduces a skip list optimized for
      a key that is a freshly-allocated const char*.  The diff is broken into
      pieces to make it easier to review.  This piece only introduces the new
      type by copying the existing SkipList, with mechanical naming changes
      and reformatting.
      
      Test Plan: new unit test
      
      Reviewers: igor, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D51279
      78812ec6
    • I
      Merge pull request #855 from yuslepukhin/enable_3rdparty_override · ffb466da
      Igor Canadi 提交于
      Enable override to 3rd party linkage
      ffb466da
    • D
      Enable override to 3rd party linkage · 10d257d6
      Dmitri Smirnov 提交于
      10d257d6
  2. 21 11月, 2015 4 次提交
  3. 20 11月, 2015 1 次提交
    • I
      Reduce moving memory in LDB::ScanCommand · 88e05277
      Islam AbdelRahman 提交于
      Summary:
      Based on https://github.com/facebook/rocksdb/issues/843
      It looks that when the data is hot we spend significant amount of time moving data out of RocksDB blocks. This patch reduce moving memory when possible
      
      Original performance
      ```
      $ time ./ldb --db=/home/tec/local/ellina_test/testdb scan > /dev/null
      real	0m16.736s
      user	0m11.993s
      sys	0m4.725s
      ```
      
      Performance after reducing memcpy
      ```
      $ time ./ldb --db=/home/tec/local/ellina_test/testdb scan > /dev/null
      real	0m11.590s
      user	0m6.983s
      sys	0m4.595s
      ```
      
      Test Plan:
      dump the output of the scan into 2 files and verifying the are exactly the same
      make check
      
      Reviewers: sdong, yhchiang, anthony, rven, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D51093
      88e05277
  4. 19 11月, 2015 5 次提交
  5. 18 11月, 2015 15 次提交
  6. 17 11月, 2015 10 次提交