1. 14 3月, 2015 2 次提交
    • I
      Include chrono · 2623b2cf
      Igor Canadi 提交于
      2623b2cf
    • I
      EventLogger · 52d8347a
      Igor Canadi 提交于
      Summary:
      Here's my proposal for making our LOGs easier to read by machines.
      
      The idea is to dump all events as JSON objects. JSON is easy to read by humans, but more importantly, it's easy to read by machines. That way, we can parse this, load into SQLite/mongo and then query or visualize.
      
      I started with table_create and table_delete events, but if everybody agrees, I'll continue by adding more events (flush/compaction/etc etc)
      
      Test Plan:
      Ran db_bench. Observed:
      2015/01/15-14:13:25.788019 1105ef000 EVENT_LOG_v1 {"time_micros": 1421360005788015, "event": "table_file_creation", "file_number": 12, "file_size": 1909699}
      2015/01/15-14:13:25.956500 110740000 EVENT_LOG_v1 {"time_micros": 1421360005956498, "event": "table_file_deletion", "file_number": 12}
      
      Reviewers: yhchiang, rven, dhruba, MarkCallaghan, lgalanis, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D31647
      52d8347a
  2. 13 3月, 2015 9 次提交
  3. 12 3月, 2015 7 次提交
    • I
      Fixing segmentation fault in db_bench · 1d43bc41
      Islam AbdelRahman 提交于
      Summary:
      Fixing segmentation fault when running db_bench
      
      This seg fault happens because num_created is used without being initialized
      
      Test Plan:
      running db_bench using these arguments
      bpl=10485760;overlap=10;mcz=2;del=300000000;levels=6;ctrig=4; delay=8; stop=12; wbn=3; mbc=20; mb=67108864;wbs=134217728; dds=0; sync=0; r=1000000; t=1; vs=800; bs=65536; cs=1048576; of=500000; si=1000000; ./db_bench --benchmarks=overwrite --disable_seek_compaction=1 --mmap_read=0 --statistics=1 --histogram=1 --num=$r --threads=$t --value_size=$vs --block_size=$bs --cache_size=$cs --bloom_bits=10 --cache_numshardbits=4 --open_files=$of --verify_checksum=1 --db=/home/tec/koko/ --sync=$sync --disable_wal=1 --compression_type=zlib --stats_interval=$si --compression_ratio=0.5 --disable_data_sync=$dds --write_buffer_size=$wbs --target_file_size_base=$mb --max_write_buffer_number=$wbn --max_background_compactions=$mbc --level0_file_num_compaction_trigger=$ctrig --level0_slowdown_writes_trigger=$delay --level0_stop_writes_trigger=$stop --num_levels=$levels --delete_obsolete_files_period_micros=$del --min_level_to_compress=$mcz --max_grandparent_overlap_factor=$overlap --stats_per_interval=1 --max_bytes_for_level_base=$bpl --use_existing_db=1
      
      Reviewers: sdong, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D34881
      1d43bc41
    • S
      Change the way options.compression_per_level is used when... · e9de8b65
      sdong 提交于
      Change the way options.compression_per_level is used when options.level_compaction_dynamic_level_bytes=true
      
      Summary:
      Change the way options.compression_per_level is used when options.level_compaction_dynamic_level_bytes=true so that options.compression_per_level[1] determines compression for the level L0 is merged to, options.compression_per_level[2] to the level after that, etc.
      
      Test Plan: run all tests
      
      Reviewers: rven, yhchiang, kradhakrishnan, igor
      
      Reviewed By: igor
      
      Subscribers: yoshinorim, leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D34431
      e9de8b65
    • Y
      Fixed a bug where CompactFiles won't delete obsolete files until flush. · 2b785d76
      Yueh-Hsuan Chiang 提交于
      Summary: Fixed a bug where CompactFiles won't delete obsolete files until flush.
      
      Test Plan:
      ./compact_files_test
      export ROCKSDB_TESTS=CompactFiles
      ./db_test
      
      Reviewers: rven, sdong, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D34671
      2b785d76
    • Y
      Fixed a compile error in db_bench in mac. · 6f557986
      Yueh-Hsuan Chiang 提交于
      Summary:
      Fixed a compile error in db_bench in mac.
      
      Test Plan:
      make db_bench
      6f557986
    • V
      Add convenience.cc to src.mk · 05d92efa
      Venkatesh Radhakrishnan 提交于
      Summary:
      The build process now requires new source files to be added to
      src.mk. Adding convenience.cc to src.mk
      
      Test Plan: Build rocksdb
      
      Reviewers: igor, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D34815
      05d92efa
    • S
      db_bench: Better way to randomize repeated read keys in -read_random_exp_range · 2884b100
      sdong 提交于
      Summary: Use a better way to map from a key with locality to a random location. Now with the same -read_random_exp_range setting, hit rate drops, which it is expected.
      
      Test Plan: ./db_bench --benchmarks=readrandom -statistics -use_existing_db -cache_size=5000000 --read_random_exp_range=<multiple_values>
      
      Reviewers: MarkCallaghan, kradhakrishnan, igor
      
      Reviewed By: igor
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D34761
      2884b100
    • V
      Provide a mechanism to inform Rocksdb that it is shutting down · 284be570
      Venkatesh Radhakrishnan 提交于
      Summary:
      Provide an API which enables users to infor Rocksdb that it is
      shutting down.
      
      Test Plan: db_test
      
      Reviewers: sdong, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D34617
      284be570
  4. 11 3月, 2015 3 次提交
    • I
      Get OptimizeFilterForHits work on Mac · 2ddf53b2
      Igor Canadi 提交于
      Summary: Got it working by some voodoo programming
      
      Test Plan: works!
      
      Reviewers: sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D34611
      2ddf53b2
    • V
      Fix make_new_version.sh · 480b2847
      Venkatesh Radhakrishnan 提交于
      Summary:
      One of the commands in the script make_new_version.sh was
      incorrect. Fixed it.
      
      Test Plan: Try the script out to verify that it works.
      
      Reviewers: igor, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D34791
      480b2847
    • Y
      Allow GetThreadList() to report the start time of the current operation. · 89597bb6
      Yueh-Hsuan Chiang 提交于
      Summary: Allow GetThreadList() to report the start time of the current operation.
      
      Test Plan:
      ./db_bench --benchmarks=fillrandom --num=100000 --threads=40 \
        --max_background_compactions=10 --max_background_flushes=3 \
        --thread_status_per_interval=1000 --key_size=16 --value_size=1000 \
        --num_column_families=10
      
      Sample output:
                ThreadID ThreadType                    cfName    Operation        OP_StartTime         State
         140338840797248   High Pri column_family_name_000003        Flush 2015/03/09-17:49:59
         140338844991552   High Pri column_family_name_000004        Flush 2015/03/09-17:49:59
         140338849185856    Low Pri
         140338983403584    Low Pri
         140339008569408    Low Pri
         140338861768768    Low Pri
         140338924683328    Low Pri
         140338899517504    Low Pri
         140338853380160    Low Pri
         140338882740288    Low Pri
         140338865963072   High Pri column_family_name_000006        Flush 2015/03/09-17:49:59
         140338954043456    Low Pri
         140338857574464    Low Pri
      
      Reviewers: igor, rven, sdong
      
      Reviewed By: sdong
      
      Subscribers: lgalanis, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D34689
      89597bb6
  5. 10 3月, 2015 1 次提交
    • S
      db_bench: Add Option -read_random_exp_range to allow read skewness. · 37921b49
      sdong 提交于
      Summary: Introduce parameter -read_random_exp_range in db_bench to provide some key skewness in readrandom and multireadrandom benchmarks. It will helpful to cover block cache better.
      
      Test Plan:
      Run benchmarks with this new parameter. I can clearly see block cache hit rate change while I increase this value (DB size is about 66MB):
      
      ./db_bench --benchmarks=readrandom -statistics -use_existing_db -cache_size=5000000 --read_random_exp_range=0.0
      rocksdb.block.cache.data.miss COUNT : 958418
      rocksdb.block.cache.data.hit COUNT : 41582
      
      ./db_bench --benchmarks=readrandom -statistics -use_existing_db -cache_size=5000000 --read_random_exp_range=5.0
      rocksdb.block.cache.data.miss COUNT : 819518
      rocksdb.block.cache.data.hit COUNT : 180482
      
      ./db_bench --benchmarks=readrandom -statistics -use_existing_db -cache_size=5000000 --read_random_exp_range=10.0
      rocksdb.block.cache.data.miss COUNT : 450479
      rocksdb.block.cache.data.hit COUNT : 549521
      
      ./db_bench --benchmarks=readrandom -statistics -use_existing_db -cache_size=5000000 --read_random_exp_range=20.0
      rocksdb.block.cache.data.miss COUNT : 223192
      rocksdb.block.cache.data.hit COUNT : 776808
      
      Reviewers: MarkCallaghan, kradhakrishnan, yhchiang, rven, igor
      
      Reviewed By: igor
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D34629
      37921b49
  6. 07 3月, 2015 6 次提交
    • I
      Add rate_limiter to string options · 485ac0db
      Igor Canadi 提交于
      Summary: I want to be able to set this through mongo config.
      
      Test Plan: added unit test
      
      Reviewers: sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D34599
      485ac0db
    • L
      Single threaded tests -> sync=0 Multi threaded tests -> sync=1 by default... · e126e0da
      Leonidas Galanis 提交于
      Single threaded tests -> sync=0 Multi threaded tests -> sync=1 by default unless DB_BENCH_NO_SYNC is defined
      
      Summary:
      Single threaded tests -> sync=0 Multi threaded tests -> sync=1 by default unless DB_BENCH_NO_SYNC is defined.
      
      Also added updaterandom and mergerandom with putOperator. I am waiting for some results from udb on this.
      
      Test Plan:
      DB_BENCH_NO_SYNC=1 WAL_DIR=/tmp OUTPUT_DIR=/tmp/b DB_DIR=/tmp ./tools/benchmark.sh debug,bulkload,fillseq,overwrite,filluniquerandom,readrandom,readwhilewriting,updaterandom,mergerandom
      
      WAL_DIR=/tmp OUTPUT_DIR=/tmp/b DB_DIR=/tmp ./tools/benchmark.sh debug,bulkload,fillseq,overwrite,filluniquerandom,readrandom,readwhilewriting,updaterandom,mergerandom
      
      Verify sync settings
      
      Reviewers: sdong, MarkCallaghan, igor, rven
      
      Reviewed By: igor, rven
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D34185
      e126e0da
    • Y
      Add --thread_status_per_interval to db_bench · dc4532c4
      Yueh-Hsuan Chiang 提交于
      Summary:
      Add --thread_status_per_interval to db_bench, which allows
      db_bench to optionally enable print the current thread status
      periodically.
      
      Test Plan:
      ./db_bench --benchmarks=fillrandom --num=100000 --threads=40 --max_background_compactions=10 --max_background_flushes=3 --thread_status_per_interval=1000 --key_size=16 --value_size=1000 --num_column_families=10
      
      Sample output:
                ThreadID ThreadType                         dbName                     cfName       Operation           State
         140281571770432    Low Pri
         140281575964736   High Pri  /tmp/rocksdbtest-5297/dbbench  column_family_name_000001           Flush
         140281710182464    Low Pri  /tmp/rocksdbtest-5297/dbbench  column_family_name_000008      Compaction
         140281638879296    Low Pri  /tmp/rocksdbtest-5297/dbbench  column_family_name_000007      Compaction
         140281592741952    Low Pri
         140281580159040   High Pri  /tmp/rocksdbtest-5297/dbbench  column_family_name_000002           Flush
         140281676628032    Low Pri  /tmp/rocksdbtest-5297/dbbench  column_family_name_000006      Compaction
         140281584353344    Low Pri
         140281622102080    Low Pri  /tmp/rocksdbtest-5297/dbbench  column_family_name_000009      Compaction
         140281605324864    Low Pri  /tmp/rocksdbtest-5297/dbbench  column_family_name_000004      Compaction
         140281601130560   High Pri  /tmp/rocksdbtest-5297/dbbench                    default           Flush
         140281596936256    Low Pri
         140281588547648    Low Pri
      
      Reviewers: igor, rven, sdong
      
      Reviewed By: rven
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D34515
      dc4532c4
    • J
      fix-up patch: avoid new link error · 34c75e98
      Jim Meyering 提交于
      Summary:
      * src.mk (LIB_SOURCES): Add this file:
      utilities/document/json_document_builder.cc
      to avoid link errors.
      
      Blame Rev: D33849
      
      Test Plan: run "make"
      
      Reviewers: ljin, igor.sugak, rven, sdong, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D34593
      34c75e98
    • J
      build: fix missing dependency problems · ebc647de
      Jim Meyering 提交于
      Summary:
      Any time one would modify a dependent of any *test*.cc file,
      "make" would fail to rebuild the affected test binaries,
      e.g., db_test.  That was due to the fact that we deliberately
      excluded those test-related files from the definition of SOURCES
      and only $(SOURCES) was used to create the automatically-generated
      .d dependency files.  The fix is to generate a .d file for every
      source file.
      * src.mk: New file.  Defines LIB_SOURCES, MOCK_SOURCES
      and TEST_BENCH_SOURCES.
      * Makefile: Include src.mk.
      Reflect s/SOURCES/LIB_SOURCES/ renaming.
      * build_tools/build_detect_platform: Remove the code
      that was used to generate SOURCES= and MOCK_SOURCES=
      definitions in make_config.mk. Those lists of files
      are now hard-coded in src.mk. Hard-coding this list of
      sources is desirable, because without that, one risks
      including stray .cc files in a build.  Not reproducible.
      
      Test Plan:
      Touch a file used by db_test's dependent .o files and ensure that
      they are all recompiled.  Before, none would be:
      
        $ touch db/db_impl.h && make db_test
          CC       db/db_test.o
          CC       db/column_family.o
          CC       db/db_filesnapshot.o
          CC       db/db_impl.o
          CC       db/db_impl_debug.o
          CC       db/db_impl_readonly.o
          CC       db/forward_iterator.o
          CC       db/internal_stats.o
          CC       db/managed_iterator.o
          CC       db/repair.o
          CC       db/write_batch.o
          CC       utilities/compacted_db/compacted_db_impl.o
          CC       utilities/ttl/db_ttl_impl.o
          CC       util/ldb_cmd.o
          CC       util/ldb_tool.o
          CC       util/sst_dump_tool.o
          CC       util/xfunc.o
          CCLD     db_test
      
      Reviewers: ljin, igor.sugak, igor, rven, sdong
      
      Reviewed By: sdong
      
      Subscribers: yhchiang, adamretter, fyrz, dhruba
      
      Differential Revision: https://reviews.facebook.net/D33849
      ebc647de
    • T
      Fix a segfault in fbson under Mac OS X compiler · 492f6d27
      Tian Xia 提交于
      Summary:
      The problem appears to be caused by a bug in Mac OS X compiler
      (http://llvm.org/bugs/show_bug.cgi?id=15337). We need explicitly construct the
      base object std::ostream(std::streambuf*) with nullptr. Otherwise, ostream will
      try to delete the underlying streambuf* which apparently is undefined in the
      Mac OS X compiler.
      
      https://github.com/facebook/rocksdb/issues/525
      
      Test Plan:
      unit test in fbson
      make all check
      document_db_test (on mac)
      
      Reviewers: IslamAbdelRahman, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D34587
      492f6d27
  7. 06 3月, 2015 1 次提交
    • F
      RocksJava] Fix ColumnFamily tests · 0d13bbe2
      fyrz 提交于
      Summary:
      Cleaned up some tests regarding disposal order and tests
      which were failing when C++ assertions were enabled.
      
      Test Plan:
      - Enable C++ Assertions (remove e.g. -DNDebug in rocksdbjava target)
      - make rocksdbjava jtest
      
      Reviewers: adamretter, ankgup87, yhchiang
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D34569
      0d13bbe2
  8. 05 3月, 2015 5 次提交
  9. 04 3月, 2015 2 次提交
    • Y
      Fix a bug in stall time counter. Improve its output format. · 694988b6
      Yueh-Hsuan Chiang 提交于
      Summary: Fix a bug in stall time counter.  Improve its output format.
      
      Test Plan:
      export ROCKSDB_TESTS=Timeout
      ./db_test
      
      ./db_bench --benchmarks=fillrandom --stats_interval=10000 --statistics=true --stats_per_interval=1 --num=1000000 --threads=4 --level0_stop_writes_trigger=3 --level0_slowdown_writes_trigger=2
      
      sample output:
          Uptime(secs): 35.8 total, 0.0 interval
          Cumulative writes: 359590 writes, 359589 keys, 183047 batches, 2.0 writes per batch, 0.04 GB user ingest, stall seconds: 1786.008 ms
          Cumulative WAL: 359591 writes, 183046 syncs, 1.96 writes per sync, 0.04 GB written
          Interval writes: 253 writes, 253 keys, 128 batches, 2.0 writes per batch, 0.0 MB user ingest, stall time: 0 us
          Interval WAL: 253 writes, 128 syncs, 1.96 writes per sync, 0.00 MB written
      
      Reviewers: MarkCallaghan, igor, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D34275
      694988b6
    • I
      Revert chrono use · b8d23cdc
      Igor Canadi 提交于
      Summary:
      For some reason, libstdc++ implements steady_clock::now() using syscall instead of VDSO optimized clock_gettime() when using glibc 2.16 and earlier. This leads to significant performance degradation for users with older glibcs. See bug reported here: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59177
      
      We observed this behavior when testing mongo on AWS hosts. Facebook hosts are unaffected since we use glibc2.17 and 2.20.
      
      Revert "Fix timing"
      This reverts commit 965d9d50.
      
      Revert "Use chrono for timing"
      This reverts commit 001ce64d.
      
      Test Plan: make check
      
      Reviewers: MarkCallaghan, yhchiang, rven, meyering, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D34371
      b8d23cdc
  10. 03 3月, 2015 3 次提交
    • I
      options.level_compaction_dynamic_level_bytes to allow RocksDB to pick size... · db037393
      Igor Canadi 提交于
      options.level_compaction_dynamic_level_bytes to allow RocksDB to pick size bases of levels dynamically.
      
      Summary:
      When having fixed max_bytes_for_level_base, the ratio of size of largest level and the second one can range from 0 to the multiplier. This makes LSM tree frequently irregular and unpredictable. It can also cause poor space amplification in some cases.
      
      In this improvement (proposed by Igor Kabiljo), we introduce a parameter option.level_compaction_use_dynamic_max_bytes. When turning it on, RocksDB is free to pick a level base in the range of (options.max_bytes_for_level_base/options.max_bytes_for_level_multiplier, options.max_bytes_for_level_base] so that real level ratios are close to options.max_bytes_for_level_multiplier.
      
      Test Plan: New unit tests and pass tests suites including valgrind.
      
      Reviewers: MarkCallaghan, rven, yhchiang, igor, ikabiljo
      
      Reviewed By: ikabiljo
      
      Subscribers: yoshinorim, ikabiljo, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D31437
      db037393
    • K
      Add functionality to pre-fetch blocks specified by a key range to BlockBasedTable implementation. · f29b33c7
      krad 提交于
      Summary:
      Pre-fetching is a common operation performed by data stores for
      disk/flash based systems as part of database startup.
      
      This is part of task 5197184.
      
      Test Plan: Run the newly added unit test
      
      Reviewers: rven, igor, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D33933
      f29b33c7
    • M
      Fix typo in log message · c4bd03a9
      Mark Callaghan 提交于
      Summary:
      fix typo
      
      Task ID: #
      
      Blame Rev:
      
      Test Plan:
      Revert Plan:
      
      Database Impact:
      
      Memcache Impact:
      
      Other Notes:
      
      EImportant:
      
      - begin *PUBLIC* platform impact section -
      Bugzilla: #
      - end platform impact -
      
      Reviewers: igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D34251
      c4bd03a9
  11. 28 2月, 2015 1 次提交