1. 12 8月, 2015 2 次提交
    • N
      reduce comparisons by skiplist · 1ae27113
      Nathan Bronson 提交于
      Summary:
      Key comparison is the single largest CPU user for CPU-bound
      workloads. This diff reduces the number of comparisons in two ways.
      
      The first is that it moves predecessor array gathering from
      FindGreaterOrEqual to FindLessThan, so that FindGreaterOrEqual can
      return immediately if compare_ returns 0.  As part of this change I
      moved the sequential insertion optimization into Insert, to remove the
      undocumented (and smelly) requirement that prev must be equal to prev_
      if it is non-null.
      
      The second optimization is that all of the search functions skip calling
      compare_ when moving to a lower level that has the same Next pointer.
      With a branching factor of 4 we would expect this to happen 1/4 of
      the time.
      
      On a single-threaded CPU-bound workload (-benchmarks=fillrandom -threads=1
      -batch_size=1 -memtablerep=skip_list -value_size=0 --num=1600000
      -level0_slowdown_writes_trigger=9999 -level0_stop_writes_trigger=9999
      -disable_auto_compactions --max_write_buffer_number=8
      -max_background_flushes=8 --disable_wal --write_buffer_size=160000000)
      on my dev server this is good for a 7% perf win.
      
      Test Plan: unit tests
      
      Reviewers: rven, ljin, yhchiang, sdong, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D43233
      1ae27113
    • Y
      Fixed Segmentation Fault in db_stress on OSX. · b47d65b3
      Yueh-Hsuan Chiang 提交于
      Summary:
      This patch provides a simplier solution to the memory leak
      issue identified in patch https://reviews.facebook.net/D43677,
      where a static function local variable can be used instead of
      using a global static unique_ptr.
      
      Test Plan: run db_stress on mac
      
      Reviewers: igor, sdong, anthony, IslamAbdelRahman, maykov
      
      Reviewed By: maykov
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D43995
      b47d65b3
  2. 11 8月, 2015 3 次提交
  3. 08 8月, 2015 5 次提交
    • A
      Better CompactionJob testing · 68f93435
      Andres Notzli 提交于
      Summary:
      Changed compaction_job_test to support better/more thorough
      tests and added two tests. Also changed MockFileContents
      to order using InternalKeyComparator.
      
      Test Plan: make compaction_job_test && ./compaction_job_test; make all && make check
      
      Reviewers: sdong, rven, igor, yhchiang, anthony
      
      Reviewed By: anthony
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D42837
      68f93435
    • I
      More accurate time measurement for delete_scheduler_test · 22dcaaff
      Islam AbdelRahman 提交于
      Summary: Start measuring time spent before BackgroundEmptyTrash starts
      
      Test Plan: delete_scheduler_test
      
      Reviewers: yhchiang, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D43857
      22dcaaff
    • S
      Add auto-build manifest for appveyor · 0a7ea582
      sdong 提交于
      Summary: Check in a simple auto-build manfiest so that developers can issue ad-hoc build for Windows in Appveyor.
      
      Test Plan: Run it in test branch test_appveyor and it works well.
      
      Reviewers: kradhakrishnan, rven, anthony, IslamAbdelRahman, yhchiang
      
      Reviewed By: yhchiang
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D43839
      0a7ea582
    • S
      Merge pull request #685 from flandr/fix-tls-build · 0093271e
      Siying Dong 提交于
      Fix OSX + Windows build
      0093271e
    • N
      Fix OSX + Windows build · ac04a6cf
      Nate Rosenblum 提交于
      Commit 257ee895 added a static destruction helper to avoid notional
      "leaks" of TLS on main thread exit. This helper fails to compile on
      OS X (and presumably Windows, though I haven't checked), which lacks
      the __thread storage class StaticMeta::tls_ member.
      
      This patch fixes the builds. Do note that the static cleanup mechanism
      may be somewhat brittle and atexit(3) may be a more suitable approach
      to releasing the main thread's TLS if it's highly desirable for this
      memory to not be reported "reachable" by Valgrind at exit.
      ac04a6cf
  4. 07 8月, 2015 6 次提交
    • A
      simple ManagedSnapshot wrapper · 16ea1c7d
      agiardullo 提交于
      Summary: Implemented this simple wrapper for something else I was working on.  Seemed like it makes sense to expose it instead of burying it in some random code.
      
      Test Plan: added test
      
      Reviewers: rven, kradhakrishnan, sdong, yhchiang
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D43293
      16ea1c7d
    • A
      Fixed memory leaks · 257ee895
      Alexey Maykov 提交于
      Summary:
      MyRocks valgrind run was showing memory leaks. The fixes are mostly self-explaining.
      There is only a single usage of ThreadLocalPtr. Potentially, we may think about replacing this use with thread_local, but it will be a bigger change. Another option to consider is using thread_local instead of __thread in ThreadLocalPtr implementation. This way, tls_ can be stored using std::unique_ptr and no destructor would be required.
      
      Test Plan:
       - make check
       - MyRocks valgrind run doesn't report leaks
      
      Reviewers: rven, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D43677
      257ee895
    • S
      In HISTORY.md Switch unreleased notes to 3.13 · 254c4fb8
      sdong 提交于
      Summary: Prepare release notes for 3.13.
      
      Test Plan: Text only
      
      Reviewers: yhchiang, IslamAbdelRahman, rven, anthony
      
      Reviewed By: anthony
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D43665
      254c4fb8
    • I
      Fix delete_scheduler_test valgrind error · 40f893f4
      Islam AbdelRahman 提交于
      Summary: Use shared_ptr instead of deleting in destructor
      
      Test Plan: DISABLE_JEMALLOC=1 make delete_scheduler_test -j64 && valgrind --error-exitcode=2 --leak-check=full ./delete_scheduler_test
      
      Reviewers: yhchiang, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D43659
      40f893f4
    • S
      Avoid type unique_ptr in LogWriterNumber::writer for Windows build break · 6a4aaadc
      sdong 提交于
      Summary:
      Visual Studio complains about deque<LogWriterNumber> because LogWriterNumber is non-copyable for its unique_ptr member writer. Move away from it, and do explit free.
      It is less safe but I can't think of a better way to unblock it.
      
      Test Plan: valgrind check test
      
      Reviewers: anthony, IslamAbdelRahman, kolmike, rven, yhchiang
      
      Reviewed By: yhchiang
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D43647
      6a4aaadc
    • A
      Fixing endless loop if seeking to end of key with seq num 0 · d7314ba7
      Andres Noetzli 提交于
      Summary:
      When seeking to the last occurrence of a key with sequence number 0, db_iter
      ends up in an endless loop because it seeks to type kValueTypeForSeek
      which is larger than kTypeDeletion/kTypeValue. Added test case that triggers
      the behavior.
      
      Test Plan: make clean all check
      
      Reviewers: igor, rven, anthony, yhchiang, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D43653
      d7314ba7
  5. 06 8月, 2015 12 次提交
    • S
      Add util/delete_scheduler_impl.cc to CMakeLists.txt · 48e6e9aa
      sdong 提交于
      Summary: util/delete_scheduler_impl.cc is missing CMakeLists.txt, which fails Windows build. Add it.
      
      Test Plan: Build in both of Windows and Linux
      
      Reviewers: anthony, rven, yhchiang, IslamAbdelRahman
      
      Reviewed By: IslamAbdelRahman
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D43641
      48e6e9aa
    • S
      Add Statistics.getHistogramString() to print more detailed outputs of a histogram · c7742452
      sdong 提交于
      Summary:
      Provide a way for users to know more detailed ditribution of a histogram metrics. Example outputs:
      
      Manually add statement
        fprintf(stdout, "%s\n", dbstats->getHistogramString(SST_READ_MICROS).c_str());
      Will print out something like:
      
      Count: 989151  Average: 1.7659  StdDev: 1.52
      Min: 0.0000  Median: 1.2071  Max: 860.0000
      Percentiles: P50: 1.21 P75: 1.70 P99: 5.12 P99.9: 13.67 P99.99: 21.70
      ------------------------------------------------------
      [       0,       1 )   390839  39.513%  39.513% ########
      [       1,       2 )   500918  50.641%  90.154% ##########
      [       2,       3 )    79358   8.023%  98.177% ##
      [       3,       4 )     6297   0.637%  98.813%
      [       4,       5 )     1712   0.173%  98.986%
      [       5,       6 )     1134   0.115%  99.101%
      [       6,       7 )     1222   0.124%  99.224%
      [       7,       8 )     1529   0.155%  99.379%
      [       8,       9 )     1264   0.128%  99.507%
      [       9,      10 )      988   0.100%  99.607%
      [      10,      12 )     1378   0.139%  99.746%
      [      12,      14 )     1828   0.185%  99.931%
      [      14,      16 )      410   0.041%  99.972%
      [      16,      18 )       72   0.007%  99.980%
      [      18,      20 )       67   0.007%  99.986%
      [      20,      25 )      106   0.011%  99.997%
      [      25,      30 )       24   0.002%  99.999%
      [      30,      35 )        1   0.000% 100.000%
      [     250,     300 )        2   0.000% 100.000%
      [     300,     350 )        1   0.000% 100.000%
      [     800,     900 )        1   0.000% 100.000%
      
      Test Plan: Manually add a print in db_bench and make sure it prints out as expected. Will add some codes to cover the function
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D43611
      c7742452
    • I
      Make DeleteScheduler tests more reliable · 29b028b0
      Islam AbdelRahman 提交于
      Summary: Update DeleteScheduler tests so that they verify the used penalties for waiting instead of measuring the time spent which is not reliable
      
      Test Plan:
      make -j64 delete_scheduler_test && ./delete_scheduler_test
      COMPILE_WITH_TSAN=1 make -j64 delete_scheduler_test && ./delete_scheduler_test
      COMPILE_WITH_ASAN=1 make -j64 delete_scheduler_test && ./delete_scheduler_test
      
      make -j64 db_test && ./db_test --gtest_filter="DBTest.RateLimitedDelete:DBTest.DeleteSchedulerMultipleDBPaths"
      COMPILE_WITH_TSAN=1 make -j64 db_test && ./db_test --gtest_filter="DBTest.RateLimitedDelete:DBTest.DeleteSchedulerMultipleDBPaths"
      COMPILE_WITH_ASAN=1 make -j64 db_test && ./db_test --gtest_filter="DBTest.RateLimitedDelete:DBTest.DeleteSchedulerMultipleDBPaths"
      
      Reviewers: yhchiang, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D43635
      29b028b0
    • S
      valgrind_check to exit on test failures · fca88f8e
      sdong 提交于
      Summary: Currently, valgrind_check doesn't fail on test failures, which creates confusion. valgrind_check should fail if test fails.
      
      Test Plan: Manually change tests to return test failure or cause memory leak and see valgrind_check has the correct behavior.
      
      Reviewers: anthony, yhchiang, IslamAbdelRahman, igor, kradhakrishnan, rven
      
      Reviewed By: rven
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D43629
      fca88f8e
    • P
      Fix build failure · 7d364d0d
      Poornima Chozhiyath Raman 提交于
      Summary: fix the build failure
      
      Test Plan: make all
      
      Reviewers: sdong, IslamAbdelRahman
      
      Reviewed By: IslamAbdelRahman
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D43623
      7d364d0d
    • P
      Add function 'GetInfoLogList()' · 960d936e
      Poornima Chozhiyath Raman 提交于
      Summary: The list of info log files of a db can be obtained using the new function.
      
      Test Plan: New test in db_test.cc passed.
      
      Reviewers: yhchiang, IslamAbdelRahman, sdong
      
      Reviewed By: sdong
      
      Subscribers: IslamAbdelRahman, leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D41715
      960d936e
    • S
      Add two unit tests for SyncWAL() · 7ccd1c80
      sdong 提交于
      Summary:
      Add two unit tests for SyncWAL(). One makes sure SyncWAL() doesn't block writes in the other thread. Another one makes sure SyncWAL() doesn't wait ongoing writes to finish before being executed.
      
      Create a new test file db_wal_test and move two WAL related tests from db_test to here.
      
      Test Plan: Run the new tests
      
      Reviewers: IslamAbdelRahman, rven, kradhakrishnan, kolmike, tnovak, yhchiang
      
      Reviewed By: yhchiang
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D43605
      7ccd1c80
    • S
      Add statistic histogram "rocksdb.sst.read.micros" · 3ae386ea
      sdong 提交于
      Summary: Measure read latency histogram and put in statistics. Compaction inputs are excluded from it when possible (unfortunately usually no possible as we usually take table reader from table cache.
      
      Test Plan:
      Run db_bench and it shows the stats, like:
      
      rocksdb.sst.read.micros statistics Percentiles :=> 50 : 1.238522 95 : 2.529740 99 : 3.912180
      
      Reviewers: kradhakrishnan, rven, anthony, IslamAbdelRahman, MarkCallaghan, yhchiang
      
      Reviewed By: yhchiang
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D43275
      3ae386ea
    • S
      "make commit-prereq" should clean up rocksjava properly · 8ecb51a7
      sdong 提交于
      Summary: "make commit-prereq" fails to clean up java, which can cause rocksjava failure.
      
      Test Plan: Run commit-prepreq
      
      Reviewers: IslamAbdelRahman, rven, kradhakrishnan, yhchiang
      
      Reviewed By: yhchiang
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D43575
      8ecb51a7
    • I
      Enable DBTest.FlushSchedule under TSAN · 9aec75fb
      Islam AbdelRahman 提交于
      Summary: This patch will fix the false positive of DBTest.FlushSchedule under TSAN, we dont need to disable this test
      
      Test Plan: COMPILE_WITH_TSAN=1 make -j64 db_test && ./db_test --gtest_filter="DBTest.FlushSchedule"
      
      Reviewers: yhchiang, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D43599
      9aec75fb
    • I
      Fix TSAN for delete_scheduler_test · bd2fc5f5
      Islam AbdelRahman 提交于
      Summary: Fixing TSAN false positive and relaxing the conditions when we are running under TSAN
      
      Test Plan: COMPILE_WITH_TSAN=1 make -j64 delete_scheduler_test && ./delete_scheduler_test
      
      Reviewers: yhchiang, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D43593
      bd2fc5f5
    • S
      Fix misplaced position for reversing iterator direction while current key is a merge · 8e01bd11
      sdong 提交于
      Summary:
      While doing forward iterating, if current key is merge, internal iterator position is placed to the next key. If Prev() is called now, needs to do extra Prev() to recover the location.
      This is second attempt of fixing after reverting ec70fea4. This time shrink the fix to only merge key is the current key and avoid the reseeking logic for max_iterating skipping
      
      Test Plan: enable the two disabled tests and make sure they pass
      
      Reviewers: rven, IslamAbdelRahman, kradhakrishnan, tnovak, yhchiang
      
      Reviewed By: yhchiang
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D43557
      8e01bd11
  6. 05 8月, 2015 12 次提交