@nxtedition/rocksdb 6.0.1 → 7.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BUILDING.md +12 -4
- package/binding.cc +421 -40
- package/deps/rocksdb/build_version.cc +4 -10
- package/deps/rocksdb/rocksdb/CMakeLists.txt +26 -3
- package/deps/rocksdb/rocksdb/Makefile +73 -91
- package/deps/rocksdb/rocksdb/TARGETS +27 -2
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +29 -17
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +511 -0
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +299 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +3 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +7 -0
- package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +26 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
- package/deps/rocksdb/rocksdb/common.mk +30 -0
- package/deps/rocksdb/rocksdb/crash_test.mk +3 -3
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -3
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/builder.cc +22 -7
- package/deps/rocksdb/rocksdb/db/c.cc +71 -0
- package/deps/rocksdb/rocksdb/db/c_test.c +28 -2
- package/deps/rocksdb/rocksdb/db/column_family.cc +12 -5
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +23 -22
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +11 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +36 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +54 -16
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +14 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +85 -18
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +23 -22
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +151 -32
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +209 -38
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +404 -32
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -25
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +85 -138
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +68 -3
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +38 -13
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +11 -20
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +15 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +12 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +42 -10
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +54 -23
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +3 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +14 -4
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +26 -18
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +8 -7
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +28 -12
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +16 -15
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +6 -4
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +331 -0
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +11 -6
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +68 -7
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -5
- package/deps/rocksdb/rocksdb/db/db_test.cc +60 -42
- package/deps/rocksdb/rocksdb/db/db_test2.cc +244 -111
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +101 -19
- package/deps/rocksdb/rocksdb/db/db_test_util.h +52 -2
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +5 -175
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.cc +96 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.h +126 -0
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/dbformat.h +2 -1
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/experimental.cc +1 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +91 -12
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +16 -2
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +2 -0
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/file_indexer.h +1 -4
- package/deps/rocksdb/rocksdb/db/flush_job.cc +28 -15
- package/deps/rocksdb/rocksdb/db/flush_job.h +4 -0
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +98 -30
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +14 -1
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +6 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -12
- package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -3
- package/deps/rocksdb/rocksdb/db/memtable.cc +2 -2
- package/deps/rocksdb/rocksdb/db/memtable_list.h +1 -1
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +37 -25
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +18 -18
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/repair.cc +13 -2
- package/deps/rocksdb/rocksdb/db/repair_test.cc +37 -15
- package/deps/rocksdb/rocksdb/db/snapshot_checker.h +1 -2
- package/deps/rocksdb/rocksdb/db/snapshot_impl.h +3 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +20 -130
- package/deps/rocksdb/rocksdb/db/table_cache.h +3 -2
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +140 -0
- package/deps/rocksdb/rocksdb/db/version_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +133 -133
- package/deps/rocksdb/rocksdb/db/version_edit.cc +22 -2
- package/deps/rocksdb/rocksdb/db/version_edit.h +13 -4
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +14 -14
- package/deps/rocksdb/rocksdb/db/version_set.cc +207 -214
- package/deps/rocksdb/rocksdb/db/version_set.h +14 -3
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +154 -0
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +10 -9
- package/deps/rocksdb/rocksdb/db/wal_edit.h +2 -1
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +2 -3
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/write_batch.cc +178 -30
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/write_controller.h +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +0 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +2 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +4 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +44 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +4 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +0 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +45 -42
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +374 -275
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +53 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +13 -11
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +276 -109
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +63 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +45 -54
- package/deps/rocksdb/rocksdb/env/composite_env.cc +87 -14
- package/deps/rocksdb/rocksdb/env/env.cc +0 -60
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +9 -0
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
- package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -5
- package/deps/rocksdb/rocksdb/env/env_test.cc +18 -5
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +17 -12
- package/deps/rocksdb/rocksdb/env/io_posix.cc +39 -37
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +9 -9
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +159 -65
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +44 -22
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +142 -17
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -2
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +7 -0
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +60 -40
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +23 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +49 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +59 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +46 -44
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +2 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +45 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +4 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +91 -40
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +22 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +25 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +378 -103
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +18 -4
- package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +1 -5
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -5
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +6 -8
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +5 -3
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +266 -45
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +1 -4
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +4 -4
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +7 -8
- package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +2 -2
- package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -5
- package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -5
- package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +2 -2
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +3 -3
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +47 -38
- package/deps/rocksdb/rocksdb/options/configurable.cc +9 -27
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -1
- package/deps/rocksdb/rocksdb/options/customizable.cc +3 -1
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +379 -318
- package/deps/rocksdb/rocksdb/options/db_options.cc +46 -17
- package/deps/rocksdb/rocksdb/options/db_options.h +2 -0
- package/deps/rocksdb/rocksdb/options/options.cc +7 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +86 -39
- package/deps/rocksdb/rocksdb/options/options_parser.cc +10 -10
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +12 -7
- package/deps/rocksdb/rocksdb/options/options_test.cc +222 -68
- package/deps/rocksdb/rocksdb/port/port_posix.h +0 -15
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +5 -4
- package/deps/rocksdb/rocksdb/port/win/env_win.h +2 -2
- package/deps/rocksdb/rocksdb/port/win/port_win.h +0 -31
- package/deps/rocksdb/rocksdb/rocksdb.pc.in +11 -0
- package/deps/rocksdb/rocksdb/src.mk +6 -1
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/block.h +21 -25
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +23 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +52 -15
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +81 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +94 -726
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +21 -15
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +9 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +754 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +44 -73
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +15 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +2 -11
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +59 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +18 -0
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +33 -17
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +0 -61
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +0 -13
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +8 -4
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +4 -4
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +65 -7
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +2 -0
- package/deps/rocksdb/rocksdb/table/cleanable_test.cc +113 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/format.cc +22 -20
- package/deps/rocksdb/rocksdb/table/iterator.cc +1 -81
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +39 -0
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
- package/deps/rocksdb/rocksdb/table/multiget_context.h +60 -13
- package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +0 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +12 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +4 -4
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +2 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +1 -1
- package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +1 -1
- package/deps/rocksdb/rocksdb/table/table_properties.cc +3 -5
- package/deps/rocksdb/rocksdb/table/table_reader.h +13 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +202 -78
- package/deps/rocksdb/rocksdb/table/unique_id.cc +84 -25
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +37 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.h +11 -8
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +8 -4
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +17 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -9
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +3 -3
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +277 -105
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +4 -4
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +186 -42
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +75 -49
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +9 -8
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +4 -1
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +26 -4
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +1 -1
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +72 -0
- package/deps/rocksdb/rocksdb/util/async_file_reader.h +144 -0
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +4 -4
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +14 -8
- package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -6
- package/deps/rocksdb/rocksdb/util/cleanable.cc +180 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +5 -3
- package/deps/rocksdb/rocksdb/util/compression.h +56 -7
- package/deps/rocksdb/rocksdb/util/coro_utils.h +111 -0
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +148 -0
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +2 -2
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +12 -4
- package/deps/rocksdb/rocksdb/util/heap.h +5 -3
- package/deps/rocksdb/rocksdb/util/random.cc +1 -5
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +12 -9
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1 -1
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +2 -4
- package/deps/rocksdb/rocksdb/util/single_thread_executor.h +55 -0
- package/deps/rocksdb/rocksdb/util/slice.cc +8 -9
- package/deps/rocksdb/rocksdb/util/string_util.cc +3 -2
- package/deps/rocksdb/rocksdb/util/string_util.h +0 -13
- package/deps/rocksdb/rocksdb/util/thread_local.cc +4 -23
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +99 -22
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +7 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +102 -59
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +38 -36
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +28 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +3 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +71 -0
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +71 -0
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +5 -5
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +40 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +10 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +4 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +17 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +7 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +8 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +5 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +21 -15
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +69 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +22 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +26 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +17 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +19 -16
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +7 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
- package/deps/rocksdb/rocksdb.gyp +20 -13
- package/index.js +187 -3
- package/iterator.js +1 -0
- package/package-lock.json +23687 -0
- package/package.json +2 -30
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/snapshot.js +23 -0
- package/deps/liburing/liburing/README +0 -46
- package/deps/liburing/liburing/test/232c93d07b74-test.c +0 -305
- package/deps/liburing/liburing/test/35fa71a030ca-test.c +0 -329
- package/deps/liburing/liburing/test/500f9fbadef8-test.c +0 -89
- package/deps/liburing/liburing/test/7ad0e4b2f83c-test.c +0 -93
- package/deps/liburing/liburing/test/8a9973408177-test.c +0 -106
- package/deps/liburing/liburing/test/917257daa0fe-test.c +0 -53
- package/deps/liburing/liburing/test/Makefile +0 -312
- package/deps/liburing/liburing/test/a0908ae19763-test.c +0 -58
- package/deps/liburing/liburing/test/a4c0b3decb33-test.c +0 -180
- package/deps/liburing/liburing/test/accept-link.c +0 -251
- package/deps/liburing/liburing/test/accept-reuse.c +0 -164
- package/deps/liburing/liburing/test/accept-test.c +0 -79
- package/deps/liburing/liburing/test/accept.c +0 -476
- package/deps/liburing/liburing/test/across-fork.c +0 -283
- package/deps/liburing/liburing/test/b19062a56726-test.c +0 -53
- package/deps/liburing/liburing/test/b5837bd5311d-test.c +0 -77
- package/deps/liburing/liburing/test/ce593a6c480a-test.c +0 -135
- package/deps/liburing/liburing/test/close-opath.c +0 -122
- package/deps/liburing/liburing/test/config +0 -10
- package/deps/liburing/liburing/test/connect.c +0 -398
- package/deps/liburing/liburing/test/cq-full.c +0 -96
- package/deps/liburing/liburing/test/cq-overflow.c +0 -294
- package/deps/liburing/liburing/test/cq-peek-batch.c +0 -102
- package/deps/liburing/liburing/test/cq-ready.c +0 -94
- package/deps/liburing/liburing/test/cq-size.c +0 -58
- package/deps/liburing/liburing/test/d4ae271dfaae-test.c +0 -96
- package/deps/liburing/liburing/test/d77a67ed5f27-test.c +0 -65
- package/deps/liburing/liburing/test/defer.c +0 -307
- package/deps/liburing/liburing/test/double-poll-crash.c +0 -186
- package/deps/liburing/liburing/test/eeed8b54e0df-test.c +0 -114
- package/deps/liburing/liburing/test/empty-eownerdead.c +0 -42
- package/deps/liburing/liburing/test/eventfd-disable.c +0 -151
- package/deps/liburing/liburing/test/eventfd-ring.c +0 -97
- package/deps/liburing/liburing/test/eventfd.c +0 -112
- package/deps/liburing/liburing/test/fadvise.c +0 -202
- package/deps/liburing/liburing/test/fallocate.c +0 -249
- package/deps/liburing/liburing/test/fc2a85cb02ef-test.c +0 -138
- package/deps/liburing/liburing/test/file-register.c +0 -843
- package/deps/liburing/liburing/test/file-update.c +0 -173
- package/deps/liburing/liburing/test/files-exit-hang-poll.c +0 -128
- package/deps/liburing/liburing/test/files-exit-hang-timeout.c +0 -134
- package/deps/liburing/liburing/test/fixed-link.c +0 -90
- package/deps/liburing/liburing/test/fsync.c +0 -224
- package/deps/liburing/liburing/test/hardlink.c +0 -136
- package/deps/liburing/liburing/test/helpers.c +0 -135
- package/deps/liburing/liburing/test/helpers.h +0 -67
- package/deps/liburing/liburing/test/io-cancel.c +0 -537
- package/deps/liburing/liburing/test/io_uring_enter.c +0 -296
- package/deps/liburing/liburing/test/io_uring_register.c +0 -664
- package/deps/liburing/liburing/test/io_uring_setup.c +0 -192
- package/deps/liburing/liburing/test/iopoll.c +0 -366
- package/deps/liburing/liburing/test/lfs-openat-write.c +0 -117
- package/deps/liburing/liburing/test/lfs-openat.c +0 -273
- package/deps/liburing/liburing/test/link-timeout.c +0 -1107
- package/deps/liburing/liburing/test/link.c +0 -496
- package/deps/liburing/liburing/test/link_drain.c +0 -229
- package/deps/liburing/liburing/test/madvise.c +0 -195
- package/deps/liburing/liburing/test/mkdir.c +0 -108
- package/deps/liburing/liburing/test/multicqes_drain.c +0 -383
- package/deps/liburing/liburing/test/nop-all-sizes.c +0 -107
- package/deps/liburing/liburing/test/nop.c +0 -115
- package/deps/liburing/liburing/test/open-close.c +0 -146
- package/deps/liburing/liburing/test/openat2.c +0 -240
- package/deps/liburing/liburing/test/personality.c +0 -204
- package/deps/liburing/liburing/test/pipe-eof.c +0 -81
- package/deps/liburing/liburing/test/pipe-reuse.c +0 -105
- package/deps/liburing/liburing/test/poll-cancel-ton.c +0 -139
- package/deps/liburing/liburing/test/poll-cancel.c +0 -135
- package/deps/liburing/liburing/test/poll-link.c +0 -227
- package/deps/liburing/liburing/test/poll-many.c +0 -208
- package/deps/liburing/liburing/test/poll-mshot-update.c +0 -273
- package/deps/liburing/liburing/test/poll-ring.c +0 -48
- package/deps/liburing/liburing/test/poll-v-poll.c +0 -353
- package/deps/liburing/liburing/test/poll.c +0 -109
- package/deps/liburing/liburing/test/probe.c +0 -137
- package/deps/liburing/liburing/test/read-write.c +0 -876
- package/deps/liburing/liburing/test/register-restrictions.c +0 -633
- package/deps/liburing/liburing/test/rename.c +0 -134
- package/deps/liburing/liburing/test/ring-leak.c +0 -173
- package/deps/liburing/liburing/test/ring-leak2.c +0 -249
- package/deps/liburing/liburing/test/rsrc_tags.c +0 -449
- package/deps/liburing/liburing/test/runtests-loop.sh +0 -16
- package/deps/liburing/liburing/test/runtests.sh +0 -170
- package/deps/liburing/liburing/test/rw_merge_test.c +0 -97
- package/deps/liburing/liburing/test/self.c +0 -91
- package/deps/liburing/liburing/test/send_recv.c +0 -291
- package/deps/liburing/liburing/test/send_recvmsg.c +0 -345
- package/deps/liburing/liburing/test/sendmsg_fs_cve.c +0 -198
- package/deps/liburing/liburing/test/shared-wq.c +0 -84
- package/deps/liburing/liburing/test/short-read.c +0 -75
- package/deps/liburing/liburing/test/shutdown.c +0 -163
- package/deps/liburing/liburing/test/sigfd-deadlock.c +0 -74
- package/deps/liburing/liburing/test/socket-rw-eagain.c +0 -156
- package/deps/liburing/liburing/test/socket-rw.c +0 -147
- package/deps/liburing/liburing/test/splice.c +0 -511
- package/deps/liburing/liburing/test/sq-full-cpp.cc +0 -45
- package/deps/liburing/liburing/test/sq-full.c +0 -45
- package/deps/liburing/liburing/test/sq-poll-dup.c +0 -200
- package/deps/liburing/liburing/test/sq-poll-kthread.c +0 -168
- package/deps/liburing/liburing/test/sq-poll-share.c +0 -137
- package/deps/liburing/liburing/test/sq-space_left.c +0 -159
- package/deps/liburing/liburing/test/sqpoll-cancel-hang.c +0 -159
- package/deps/liburing/liburing/test/sqpoll-disable-exit.c +0 -195
- package/deps/liburing/liburing/test/sqpoll-exit-hang.c +0 -77
- package/deps/liburing/liburing/test/sqpoll-sleep.c +0 -68
- package/deps/liburing/liburing/test/statx.c +0 -172
- package/deps/liburing/liburing/test/stdout.c +0 -232
- package/deps/liburing/liburing/test/submit-link-fail.c +0 -154
- package/deps/liburing/liburing/test/submit-reuse.c +0 -239
- package/deps/liburing/liburing/test/symlink.c +0 -116
- package/deps/liburing/liburing/test/teardowns.c +0 -58
- package/deps/liburing/liburing/test/thread-exit.c +0 -131
- package/deps/liburing/liburing/test/timeout-new.c +0 -246
- package/deps/liburing/liburing/test/timeout-overflow.c +0 -204
- package/deps/liburing/liburing/test/timeout.c +0 -1354
- package/deps/liburing/liburing/test/unlink.c +0 -111
- package/deps/liburing/liburing/test/wakeup-hang.c +0 -162
- package/deps/rocksdb/rocksdb/README.md +0 -32
- package/deps/rocksdb/rocksdb/microbench/README.md +0 -60
- package/deps/rocksdb/rocksdb/plugin/README.md +0 -43
- package/deps/rocksdb/rocksdb/port/README +0 -10
- package/deps/rocksdb/rocksdb/python.mk +0 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +0 -13
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
#include "table/block_based/block.h"
|
|
16
16
|
#include "table/block_based/block_builder.h"
|
|
17
17
|
#include "util/random.h"
|
|
18
|
+
#include "utilities/merge_operators.h"
|
|
18
19
|
|
|
19
20
|
namespace ROCKSDB_NAMESPACE {
|
|
20
21
|
|
|
@@ -32,7 +33,11 @@ class KeyGenerator {
|
|
|
32
33
|
if (is_sequential_) {
|
|
33
34
|
assert(next_sequential_key_ < max_key_);
|
|
34
35
|
k = (next_sequential_key_ % max_key_) * MULTIPLIER + offset;
|
|
35
|
-
next_sequential_key_
|
|
36
|
+
if (next_sequential_key_ + 1 == max_key_) {
|
|
37
|
+
next_sequential_key_ = 0;
|
|
38
|
+
} else {
|
|
39
|
+
next_sequential_key_++;
|
|
40
|
+
}
|
|
36
41
|
} else {
|
|
37
42
|
k = (rnd_->Next() % max_key_) * MULTIPLIER + offset;
|
|
38
43
|
}
|
|
@@ -118,7 +123,8 @@ class KeyGenerator {
|
|
|
118
123
|
}
|
|
119
124
|
};
|
|
120
125
|
|
|
121
|
-
static void SetupDB(benchmark::State& state, Options& options,
|
|
126
|
+
static void SetupDB(benchmark::State& state, Options& options,
|
|
127
|
+
std::unique_ptr<DB>* db,
|
|
122
128
|
const std::string& test_name = "") {
|
|
123
129
|
options.create_if_missing = true;
|
|
124
130
|
auto env = Env::Default();
|
|
@@ -132,15 +138,17 @@ static void SetupDB(benchmark::State& state, Options& options, DB** dpptr,
|
|
|
132
138
|
db_path + kFilePathSeparator + test_name + std::to_string(getpid());
|
|
133
139
|
DestroyDB(db_name, options);
|
|
134
140
|
|
|
135
|
-
|
|
141
|
+
DB* db_ptr = nullptr;
|
|
142
|
+
s = DB::Open(options, db_name, &db_ptr);
|
|
136
143
|
if (!s.ok()) {
|
|
137
144
|
state.SkipWithError(s.ToString().c_str());
|
|
138
145
|
return;
|
|
139
146
|
}
|
|
147
|
+
db->reset(db_ptr);
|
|
140
148
|
}
|
|
141
149
|
|
|
142
|
-
static void TeardownDB(benchmark::State& state, DB
|
|
143
|
-
KeyGenerator& kg) {
|
|
150
|
+
static void TeardownDB(benchmark::State& state, const std::unique_ptr<DB>& db,
|
|
151
|
+
const Options& options, KeyGenerator& kg) {
|
|
144
152
|
char min_buff[256], max_buff[256];
|
|
145
153
|
const Range r(kg.MinKey(min_buff), kg.MaxKey(max_buff));
|
|
146
154
|
uint64_t size;
|
|
@@ -160,7 +168,7 @@ static void TeardownDB(benchmark::State& state, DB* db, const Options& options,
|
|
|
160
168
|
|
|
161
169
|
static void DBOpen(benchmark::State& state) {
|
|
162
170
|
// create DB
|
|
163
|
-
DB
|
|
171
|
+
std::unique_ptr<DB> db;
|
|
164
172
|
Options options;
|
|
165
173
|
SetupDB(state, options, &db, "DBOpen");
|
|
166
174
|
|
|
@@ -172,12 +180,17 @@ static void DBOpen(benchmark::State& state) {
|
|
|
172
180
|
auto rnd = Random(123);
|
|
173
181
|
|
|
174
182
|
for (auto _ : state) {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
183
|
+
{
|
|
184
|
+
DB* db_ptr = nullptr;
|
|
185
|
+
Status s = DB::Open(options, db_name, &db_ptr);
|
|
186
|
+
if (!s.ok()) {
|
|
187
|
+
state.SkipWithError(s.ToString().c_str());
|
|
188
|
+
}
|
|
189
|
+
db.reset(db_ptr);
|
|
178
190
|
}
|
|
179
191
|
state.PauseTiming();
|
|
180
192
|
auto wo = WriteOptions();
|
|
193
|
+
Status s;
|
|
181
194
|
for (int i = 0; i < 2; i++) {
|
|
182
195
|
for (int j = 0; j < 100; j++) {
|
|
183
196
|
s = db->Put(wo, rnd.RandomString(10), rnd.RandomString(100));
|
|
@@ -204,7 +217,7 @@ BENCHMARK(DBOpen)->Iterations(200); // specify iteration number as the db size
|
|
|
204
217
|
|
|
205
218
|
static void DBClose(benchmark::State& state) {
|
|
206
219
|
// create DB
|
|
207
|
-
DB
|
|
220
|
+
std::unique_ptr<DB> db;
|
|
208
221
|
Options options;
|
|
209
222
|
SetupDB(state, options, &db, "DBClose");
|
|
210
223
|
|
|
@@ -217,11 +230,16 @@ static void DBClose(benchmark::State& state) {
|
|
|
217
230
|
|
|
218
231
|
for (auto _ : state) {
|
|
219
232
|
state.PauseTiming();
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
233
|
+
{
|
|
234
|
+
DB* db_ptr = nullptr;
|
|
235
|
+
Status s = DB::Open(options, db_name, &db_ptr);
|
|
236
|
+
if (!s.ok()) {
|
|
237
|
+
state.SkipWithError(s.ToString().c_str());
|
|
238
|
+
}
|
|
239
|
+
db.reset(db_ptr);
|
|
223
240
|
}
|
|
224
241
|
auto wo = WriteOptions();
|
|
242
|
+
Status s;
|
|
225
243
|
for (int i = 0; i < 2; i++) {
|
|
226
244
|
for (int j = 0; j < 100; j++) {
|
|
227
245
|
s = db->Put(wo, rnd.RandomString(10), rnd.RandomString(100));
|
|
@@ -255,7 +273,7 @@ static void DBPut(benchmark::State& state) {
|
|
|
255
273
|
uint64_t key_num = max_data / per_key_size;
|
|
256
274
|
|
|
257
275
|
// setup DB
|
|
258
|
-
static DB
|
|
276
|
+
static std::unique_ptr<DB> db = nullptr;
|
|
259
277
|
Options options;
|
|
260
278
|
if (enable_statistics) {
|
|
261
279
|
options.statistics = CreateDBStatistics();
|
|
@@ -284,7 +302,7 @@ static void DBPut(benchmark::State& state) {
|
|
|
284
302
|
}
|
|
285
303
|
|
|
286
304
|
if (state.thread_index() == 0) {
|
|
287
|
-
auto db_full = static_cast_with_check<DBImpl>(db);
|
|
305
|
+
auto db_full = static_cast_with_check<DBImpl>(db.get());
|
|
288
306
|
Status s = db_full->WaitForCompact(true);
|
|
289
307
|
if (!s.ok()) {
|
|
290
308
|
state.SkipWithError(s.ToString().c_str());
|
|
@@ -332,7 +350,7 @@ static void ManualCompaction(benchmark::State& state) {
|
|
|
332
350
|
uint64_t key_num = max_data / per_key_size;
|
|
333
351
|
|
|
334
352
|
// setup DB
|
|
335
|
-
static DB
|
|
353
|
+
static std::unique_ptr<DB> db;
|
|
336
354
|
Options options;
|
|
337
355
|
if (enable_statistics) {
|
|
338
356
|
options.statistics = CreateDBStatistics();
|
|
@@ -391,7 +409,7 @@ static void ManualCompaction(benchmark::State& state) {
|
|
|
391
409
|
}
|
|
392
410
|
|
|
393
411
|
if (state.thread_index() == 0) {
|
|
394
|
-
auto db_full = static_cast_with_check<DBImpl>(db);
|
|
412
|
+
auto db_full = static_cast_with_check<DBImpl>(db.get());
|
|
395
413
|
s = db_full->WaitForCompact(true);
|
|
396
414
|
if (!s.ok()) {
|
|
397
415
|
state.SkipWithError(s.ToString().c_str());
|
|
@@ -453,7 +471,7 @@ static void ManualFlush(benchmark::State& state) {
|
|
|
453
471
|
bool enable_statistics = true;
|
|
454
472
|
|
|
455
473
|
// setup DB
|
|
456
|
-
static DB
|
|
474
|
+
static std::unique_ptr<DB> db;
|
|
457
475
|
Options options;
|
|
458
476
|
if (enable_statistics) {
|
|
459
477
|
options.statistics = CreateDBStatistics();
|
|
@@ -489,7 +507,7 @@ static void ManualFlush(benchmark::State& state) {
|
|
|
489
507
|
}
|
|
490
508
|
|
|
491
509
|
if (state.thread_index() == 0) {
|
|
492
|
-
auto db_full = static_cast_with_check<DBImpl>(db);
|
|
510
|
+
auto db_full = static_cast_with_check<DBImpl>(db.get());
|
|
493
511
|
Status s = db_full->WaitForCompact(true);
|
|
494
512
|
if (!s.ok()) {
|
|
495
513
|
state.SkipWithError(s.ToString().c_str());
|
|
@@ -525,21 +543,30 @@ static void DBGet(benchmark::State& state) {
|
|
|
525
543
|
bool enable_statistics = state.range(3);
|
|
526
544
|
bool negative_query = state.range(4);
|
|
527
545
|
bool enable_filter = state.range(5);
|
|
546
|
+
bool mmap = state.range(6);
|
|
528
547
|
uint64_t key_num = max_data / per_key_size;
|
|
529
548
|
|
|
530
549
|
// setup DB
|
|
531
|
-
static DB
|
|
550
|
+
static std::unique_ptr<DB> db;
|
|
532
551
|
Options options;
|
|
533
552
|
if (enable_statistics) {
|
|
534
553
|
options.statistics = CreateDBStatistics();
|
|
535
554
|
}
|
|
555
|
+
if (mmap) {
|
|
556
|
+
options.allow_mmap_reads = true;
|
|
557
|
+
options.compression = kNoCompression;
|
|
558
|
+
}
|
|
536
559
|
options.compaction_style = compaction_style;
|
|
537
560
|
|
|
561
|
+
BlockBasedTableOptions table_options;
|
|
538
562
|
if (enable_filter) {
|
|
539
|
-
BlockBasedTableOptions table_options;
|
|
540
563
|
table_options.filter_policy.reset(NewBloomFilterPolicy(10, false));
|
|
541
|
-
options.table_factory.reset(NewBlockBasedTableFactory(table_options));
|
|
542
564
|
}
|
|
565
|
+
if (mmap) {
|
|
566
|
+
table_options.no_block_cache = true;
|
|
567
|
+
table_options.block_restart_interval = 1;
|
|
568
|
+
}
|
|
569
|
+
options.table_factory.reset(NewBlockBasedTableFactory(table_options));
|
|
543
570
|
|
|
544
571
|
auto rnd = Random(301 + state.thread_index());
|
|
545
572
|
KeyGenerator kg(&rnd, key_num);
|
|
@@ -564,7 +591,7 @@ static void DBGet(benchmark::State& state) {
|
|
|
564
591
|
state.SkipWithError(s.ToString().c_str());
|
|
565
592
|
}
|
|
566
593
|
|
|
567
|
-
auto db_full = static_cast_with_check<DBImpl>(db);
|
|
594
|
+
auto db_full = static_cast_with_check<DBImpl>(db.get());
|
|
568
595
|
s = db_full->WaitForCompact(true);
|
|
569
596
|
if (!s.ok()) {
|
|
570
597
|
state.SkipWithError(s.ToString().c_str());
|
|
@@ -573,6 +600,9 @@ static void DBGet(benchmark::State& state) {
|
|
|
573
600
|
}
|
|
574
601
|
|
|
575
602
|
auto ro = ReadOptions();
|
|
603
|
+
if (mmap) {
|
|
604
|
+
ro.verify_checksums = false;
|
|
605
|
+
}
|
|
576
606
|
size_t not_found = 0;
|
|
577
607
|
if (negative_query) {
|
|
578
608
|
for (auto _ : state) {
|
|
@@ -616,8 +646,10 @@ static void DBGetArguments(benchmark::internal::Benchmark* b) {
|
|
|
616
646
|
for (bool enable_statistics : {false, true}) {
|
|
617
647
|
for (bool negative_query : {false, true}) {
|
|
618
648
|
for (bool enable_filter : {false, true}) {
|
|
619
|
-
|
|
620
|
-
|
|
649
|
+
for (bool mmap : {false, true}) {
|
|
650
|
+
b->Args({comp_style, max_data, per_key_size, enable_statistics,
|
|
651
|
+
negative_query, enable_filter, mmap});
|
|
652
|
+
}
|
|
621
653
|
}
|
|
622
654
|
}
|
|
623
655
|
}
|
|
@@ -625,16 +657,16 @@ static void DBGetArguments(benchmark::internal::Benchmark* b) {
|
|
|
625
657
|
}
|
|
626
658
|
}
|
|
627
659
|
b->ArgNames({"comp_style", "max_data", "per_key_size", "enable_statistics",
|
|
628
|
-
"negative_query", "enable_filter"});
|
|
660
|
+
"negative_query", "enable_filter", "mmap"});
|
|
629
661
|
}
|
|
630
662
|
|
|
631
|
-
static constexpr uint64_t kDBGetNum =
|
|
663
|
+
static constexpr uint64_t kDBGetNum = 1l << 20;
|
|
632
664
|
BENCHMARK(DBGet)->Threads(1)->Iterations(kDBGetNum)->Apply(DBGetArguments);
|
|
633
665
|
BENCHMARK(DBGet)->Threads(8)->Iterations(kDBGetNum / 8)->Apply(DBGetArguments);
|
|
634
666
|
|
|
635
667
|
static void SimpleGetWithPerfContext(benchmark::State& state) {
|
|
636
668
|
// setup DB
|
|
637
|
-
static DB
|
|
669
|
+
static std::unique_ptr<DB> db;
|
|
638
670
|
std::string db_name;
|
|
639
671
|
Options options;
|
|
640
672
|
options.create_if_missing = true;
|
|
@@ -654,10 +686,14 @@ static void SimpleGetWithPerfContext(benchmark::State& state) {
|
|
|
654
686
|
db_name = db_path + "/simple_get_" + std::to_string(getpid());
|
|
655
687
|
DestroyDB(db_name, options);
|
|
656
688
|
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
689
|
+
{
|
|
690
|
+
DB* db_ptr = nullptr;
|
|
691
|
+
s = DB::Open(options, db_name, &db_ptr);
|
|
692
|
+
if (!s.ok()) {
|
|
693
|
+
state.SkipWithError(s.ToString().c_str());
|
|
694
|
+
return;
|
|
695
|
+
}
|
|
696
|
+
db.reset(db_ptr);
|
|
661
697
|
}
|
|
662
698
|
// load db
|
|
663
699
|
auto wo = WriteOptions();
|
|
@@ -668,7 +704,7 @@ static void SimpleGetWithPerfContext(benchmark::State& state) {
|
|
|
668
704
|
state.SkipWithError(s.ToString().c_str());
|
|
669
705
|
}
|
|
670
706
|
}
|
|
671
|
-
auto db_full = static_cast_with_check<DBImpl>(db);
|
|
707
|
+
auto db_full = static_cast_with_check<DBImpl>(db.get());
|
|
672
708
|
s = db_full->WaitForCompact(true);
|
|
673
709
|
if (!s.ok()) {
|
|
674
710
|
state.SkipWithError(s.ToString().c_str());
|
|
@@ -755,6 +791,191 @@ static void SimpleGetWithPerfContext(benchmark::State& state) {
|
|
|
755
791
|
|
|
756
792
|
BENCHMARK(SimpleGetWithPerfContext)->Iterations(1000000);
|
|
757
793
|
|
|
794
|
+
static void DBGetMergeOperandsInMemtable(benchmark::State& state) {
|
|
795
|
+
const uint64_t kDataLen = 16 << 20; // 16MB
|
|
796
|
+
const uint64_t kValueLen = 64;
|
|
797
|
+
const uint64_t kNumEntries = kDataLen / kValueLen;
|
|
798
|
+
const uint64_t kNumEntriesPerKey = state.range(0);
|
|
799
|
+
const uint64_t kNumKeys = kNumEntries / kNumEntriesPerKey;
|
|
800
|
+
|
|
801
|
+
// setup DB
|
|
802
|
+
static std::unique_ptr<DB> db;
|
|
803
|
+
|
|
804
|
+
Options options;
|
|
805
|
+
options.merge_operator = MergeOperators::CreateStringAppendOperator();
|
|
806
|
+
// Make memtable large enough that automatic flush will not be triggered.
|
|
807
|
+
options.write_buffer_size = 2 * kDataLen;
|
|
808
|
+
|
|
809
|
+
KeyGenerator sequential_key_gen(kNumKeys);
|
|
810
|
+
auto rnd = Random(301 + state.thread_index());
|
|
811
|
+
|
|
812
|
+
if (state.thread_index() == 0) {
|
|
813
|
+
SetupDB(state, options, &db, "DBGetMergeOperandsInMemtable");
|
|
814
|
+
|
|
815
|
+
// load db
|
|
816
|
+
auto write_opts = WriteOptions();
|
|
817
|
+
write_opts.disableWAL = true;
|
|
818
|
+
for (uint64_t i = 0; i < kNumEntries; i++) {
|
|
819
|
+
Status s = db->Merge(write_opts, sequential_key_gen.Next(),
|
|
820
|
+
rnd.RandomString(static_cast<int>(kValueLen)));
|
|
821
|
+
if (!s.ok()) {
|
|
822
|
+
state.SkipWithError(s.ToString().c_str());
|
|
823
|
+
}
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
KeyGenerator random_key_gen(kNumKeys);
|
|
828
|
+
std::vector<PinnableSlice> value_operands;
|
|
829
|
+
value_operands.resize(kNumEntriesPerKey);
|
|
830
|
+
GetMergeOperandsOptions get_merge_ops_opts;
|
|
831
|
+
get_merge_ops_opts.expected_max_number_of_operands =
|
|
832
|
+
static_cast<int>(kNumEntriesPerKey);
|
|
833
|
+
for (auto _ : state) {
|
|
834
|
+
int num_value_operands = 0;
|
|
835
|
+
Status s = db->GetMergeOperands(
|
|
836
|
+
ReadOptions(), db->DefaultColumnFamily(), random_key_gen.Next(),
|
|
837
|
+
value_operands.data(), &get_merge_ops_opts, &num_value_operands);
|
|
838
|
+
if (!s.ok()) {
|
|
839
|
+
state.SkipWithError(s.ToString().c_str());
|
|
840
|
+
}
|
|
841
|
+
if (num_value_operands != static_cast<int>(kNumEntriesPerKey)) {
|
|
842
|
+
state.SkipWithError("Unexpected number of merge operands found for key");
|
|
843
|
+
}
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
if (state.thread_index() == 0) {
|
|
847
|
+
TeardownDB(state, db, options, random_key_gen);
|
|
848
|
+
}
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
static void DBGetMergeOperandsInSstFile(benchmark::State& state) {
|
|
852
|
+
const uint64_t kDataLen = 16 << 20; // 16MB
|
|
853
|
+
const uint64_t kValueLen = 64;
|
|
854
|
+
const uint64_t kNumEntries = kDataLen / kValueLen;
|
|
855
|
+
const uint64_t kNumEntriesPerKey = state.range(0);
|
|
856
|
+
const uint64_t kNumKeys = kNumEntries / kNumEntriesPerKey;
|
|
857
|
+
const bool kMmap = state.range(1);
|
|
858
|
+
|
|
859
|
+
// setup DB
|
|
860
|
+
static std::unique_ptr<DB> db;
|
|
861
|
+
|
|
862
|
+
BlockBasedTableOptions table_options;
|
|
863
|
+
if (kMmap) {
|
|
864
|
+
table_options.no_block_cache = true;
|
|
865
|
+
} else {
|
|
866
|
+
// Make block cache large enough that eviction will not be triggered.
|
|
867
|
+
table_options.block_cache = NewLRUCache(2 * kDataLen);
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
Options options;
|
|
871
|
+
if (kMmap) {
|
|
872
|
+
options.allow_mmap_reads = true;
|
|
873
|
+
}
|
|
874
|
+
options.compression = kNoCompression;
|
|
875
|
+
options.merge_operator = MergeOperators::CreateStringAppendOperator();
|
|
876
|
+
options.table_factory.reset(NewBlockBasedTableFactory(table_options));
|
|
877
|
+
// Make memtable large enough that automatic flush will not be triggered.
|
|
878
|
+
options.write_buffer_size = 2 * kDataLen;
|
|
879
|
+
|
|
880
|
+
KeyGenerator sequential_key_gen(kNumKeys);
|
|
881
|
+
auto rnd = Random(301 + state.thread_index());
|
|
882
|
+
|
|
883
|
+
if (state.thread_index() == 0) {
|
|
884
|
+
SetupDB(state, options, &db, "DBGetMergeOperandsInBlockCache");
|
|
885
|
+
|
|
886
|
+
// load db
|
|
887
|
+
//
|
|
888
|
+
// Take a snapshot after each cycle of merges to ensure flush cannot
|
|
889
|
+
// merge any entries.
|
|
890
|
+
std::vector<const Snapshot*> snapshots;
|
|
891
|
+
snapshots.resize(kNumEntriesPerKey);
|
|
892
|
+
auto write_opts = WriteOptions();
|
|
893
|
+
write_opts.disableWAL = true;
|
|
894
|
+
for (uint64_t i = 0; i < kNumEntriesPerKey; i++) {
|
|
895
|
+
for (uint64_t j = 0; j < kNumKeys; j++) {
|
|
896
|
+
Status s = db->Merge(write_opts, sequential_key_gen.Next(),
|
|
897
|
+
rnd.RandomString(static_cast<int>(kValueLen)));
|
|
898
|
+
if (!s.ok()) {
|
|
899
|
+
state.SkipWithError(s.ToString().c_str());
|
|
900
|
+
}
|
|
901
|
+
}
|
|
902
|
+
snapshots[i] = db->GetSnapshot();
|
|
903
|
+
}
|
|
904
|
+
|
|
905
|
+
// Flush to an L0 file; read back to prime the cache/mapped memory.
|
|
906
|
+
db->Flush(FlushOptions());
|
|
907
|
+
for (uint64_t i = 0; i < kNumKeys; ++i) {
|
|
908
|
+
std::string value;
|
|
909
|
+
Status s = db->Get(ReadOptions(), sequential_key_gen.Next(), &value);
|
|
910
|
+
if (!s.ok()) {
|
|
911
|
+
state.SkipWithError(s.ToString().c_str());
|
|
912
|
+
}
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
if (state.thread_index() == 0) {
|
|
916
|
+
for (uint64_t i = 0; i < kNumEntriesPerKey; ++i) {
|
|
917
|
+
db->ReleaseSnapshot(snapshots[i]);
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
KeyGenerator random_key_gen(kNumKeys);
|
|
923
|
+
std::vector<PinnableSlice> value_operands;
|
|
924
|
+
value_operands.resize(kNumEntriesPerKey);
|
|
925
|
+
GetMergeOperandsOptions get_merge_ops_opts;
|
|
926
|
+
get_merge_ops_opts.expected_max_number_of_operands =
|
|
927
|
+
static_cast<int>(kNumEntriesPerKey);
|
|
928
|
+
for (auto _ : state) {
|
|
929
|
+
int num_value_operands = 0;
|
|
930
|
+
ReadOptions read_opts;
|
|
931
|
+
read_opts.verify_checksums = false;
|
|
932
|
+
Status s = db->GetMergeOperands(
|
|
933
|
+
read_opts, db->DefaultColumnFamily(), random_key_gen.Next(),
|
|
934
|
+
value_operands.data(), &get_merge_ops_opts, &num_value_operands);
|
|
935
|
+
if (!s.ok()) {
|
|
936
|
+
state.SkipWithError(s.ToString().c_str());
|
|
937
|
+
}
|
|
938
|
+
if (num_value_operands != static_cast<int>(kNumEntriesPerKey)) {
|
|
939
|
+
state.SkipWithError("Unexpected number of merge operands found for key");
|
|
940
|
+
}
|
|
941
|
+
}
|
|
942
|
+
|
|
943
|
+
if (state.thread_index() == 0) {
|
|
944
|
+
TeardownDB(state, db, options, random_key_gen);
|
|
945
|
+
}
|
|
946
|
+
}
|
|
947
|
+
|
|
948
|
+
static void DBGetMergeOperandsInMemtableArguments(
|
|
949
|
+
benchmark::internal::Benchmark* b) {
|
|
950
|
+
for (int entries_per_key : {1, 32, 1024}) {
|
|
951
|
+
b->Args({entries_per_key});
|
|
952
|
+
}
|
|
953
|
+
b->ArgNames({"entries_per_key"});
|
|
954
|
+
}
|
|
955
|
+
|
|
956
|
+
static void DBGetMergeOperandsInSstFileArguments(
|
|
957
|
+
benchmark::internal::Benchmark* b) {
|
|
958
|
+
for (int entries_per_key : {1, 32, 1024}) {
|
|
959
|
+
for (bool mmap : {false, true}) {
|
|
960
|
+
b->Args({entries_per_key, mmap});
|
|
961
|
+
}
|
|
962
|
+
}
|
|
963
|
+
b->ArgNames({"entries_per_key", "mmap"});
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
BENCHMARK(DBGetMergeOperandsInMemtable)
|
|
967
|
+
->Threads(1)
|
|
968
|
+
->Apply(DBGetMergeOperandsInMemtableArguments);
|
|
969
|
+
BENCHMARK(DBGetMergeOperandsInMemtable)
|
|
970
|
+
->Threads(8)
|
|
971
|
+
->Apply(DBGetMergeOperandsInMemtableArguments);
|
|
972
|
+
BENCHMARK(DBGetMergeOperandsInSstFile)
|
|
973
|
+
->Threads(1)
|
|
974
|
+
->Apply(DBGetMergeOperandsInSstFileArguments);
|
|
975
|
+
BENCHMARK(DBGetMergeOperandsInSstFile)
|
|
976
|
+
->Threads(8)
|
|
977
|
+
->Apply(DBGetMergeOperandsInSstFileArguments);
|
|
978
|
+
|
|
758
979
|
std::string GenerateKey(int primary_key, int secondary_key, int padding_size,
|
|
759
980
|
Random* rnd) {
|
|
760
981
|
char buf[50];
|
|
@@ -844,7 +1065,7 @@ static void IteratorSeek(benchmark::State& state) {
|
|
|
844
1065
|
uint64_t key_num = max_data / per_key_size;
|
|
845
1066
|
|
|
846
1067
|
// setup DB
|
|
847
|
-
static DB
|
|
1068
|
+
static std::unique_ptr<DB> db;
|
|
848
1069
|
Options options;
|
|
849
1070
|
if (enable_statistics) {
|
|
850
1071
|
options.statistics = CreateDBStatistics();
|
|
@@ -880,7 +1101,7 @@ static void IteratorSeek(benchmark::State& state) {
|
|
|
880
1101
|
state.SkipWithError(s.ToString().c_str());
|
|
881
1102
|
}
|
|
882
1103
|
|
|
883
|
-
auto db_full = static_cast_with_check<DBImpl>(db);
|
|
1104
|
+
auto db_full = static_cast_with_check<DBImpl>(db.get());
|
|
884
1105
|
s = db_full->WaitForCompact(true);
|
|
885
1106
|
if (!s.ok()) {
|
|
886
1107
|
state.SkipWithError(s.ToString().c_str());
|
|
@@ -947,7 +1168,7 @@ static void IteratorNext(benchmark::State& state) {
|
|
|
947
1168
|
uint64_t key_num = max_data / per_key_size;
|
|
948
1169
|
|
|
949
1170
|
// setup DB
|
|
950
|
-
static DB
|
|
1171
|
+
static std::unique_ptr<DB> db;
|
|
951
1172
|
Options options;
|
|
952
1173
|
options.compaction_style = compaction_style;
|
|
953
1174
|
|
|
@@ -973,7 +1194,7 @@ static void IteratorNext(benchmark::State& state) {
|
|
|
973
1194
|
state.SkipWithError(s.ToString().c_str());
|
|
974
1195
|
}
|
|
975
1196
|
|
|
976
|
-
auto db_full = static_cast_with_check<DBImpl>(db);
|
|
1197
|
+
auto db_full = static_cast_with_check<DBImpl>(db.get());
|
|
977
1198
|
s = db_full->WaitForCompact(true);
|
|
978
1199
|
if (!s.ok()) {
|
|
979
1200
|
state.SkipWithError(s.ToString().c_str());
|
|
@@ -1022,7 +1243,7 @@ BENCHMARK(IteratorNext)
|
|
|
1022
1243
|
|
|
1023
1244
|
static void IteratorNextWithPerfContext(benchmark::State& state) {
|
|
1024
1245
|
// setup DB
|
|
1025
|
-
static DB
|
|
1246
|
+
static std::unique_ptr<DB> db;
|
|
1026
1247
|
Options options;
|
|
1027
1248
|
|
|
1028
1249
|
auto rnd = Random(301 + state.thread_index());
|
|
@@ -1039,7 +1260,7 @@ static void IteratorNextWithPerfContext(benchmark::State& state) {
|
|
|
1039
1260
|
state.SkipWithError(s.ToString().c_str());
|
|
1040
1261
|
}
|
|
1041
1262
|
}
|
|
1042
|
-
auto db_full = static_cast_with_check<DBImpl>(db);
|
|
1263
|
+
auto db_full = static_cast_with_check<DBImpl>(db.get());
|
|
1043
1264
|
Status s = db_full->WaitForCompact(true);
|
|
1044
1265
|
if (!s.ok()) {
|
|
1045
1266
|
state.SkipWithError(s.ToString().c_str());
|
|
@@ -1114,7 +1335,7 @@ static void IteratorPrev(benchmark::State& state) {
|
|
|
1114
1335
|
uint64_t key_num = max_data / per_key_size;
|
|
1115
1336
|
|
|
1116
1337
|
// setup DB
|
|
1117
|
-
static DB
|
|
1338
|
+
static std::unique_ptr<DB> db;
|
|
1118
1339
|
std::string db_name;
|
|
1119
1340
|
Options options;
|
|
1120
1341
|
options.compaction_style = compaction_style;
|
|
@@ -1141,7 +1362,7 @@ static void IteratorPrev(benchmark::State& state) {
|
|
|
1141
1362
|
state.SkipWithError(s.ToString().c_str());
|
|
1142
1363
|
}
|
|
1143
1364
|
|
|
1144
|
-
auto db_full = static_cast_with_check<DBImpl>(db);
|
|
1365
|
+
auto db_full = static_cast_with_check<DBImpl>(db.get());
|
|
1145
1366
|
s = db_full->WaitForCompact(true);
|
|
1146
1367
|
if (!s.ok()) {
|
|
1147
1368
|
state.SkipWithError(s.ToString().c_str());
|
|
@@ -1198,7 +1419,7 @@ static void PrefixSeek(benchmark::State& state) {
|
|
|
1198
1419
|
uint64_t key_num = max_data / per_key_size;
|
|
1199
1420
|
|
|
1200
1421
|
// setup DB
|
|
1201
|
-
static DB
|
|
1422
|
+
static std::unique_ptr<DB> db;
|
|
1202
1423
|
Options options;
|
|
1203
1424
|
if (enable_statistics) {
|
|
1204
1425
|
options.statistics = CreateDBStatistics();
|
|
@@ -1235,7 +1456,7 @@ static void PrefixSeek(benchmark::State& state) {
|
|
|
1235
1456
|
state.SkipWithError(s.ToString().c_str());
|
|
1236
1457
|
}
|
|
1237
1458
|
|
|
1238
|
-
auto db_full = static_cast_with_check<DBImpl>(db);
|
|
1459
|
+
auto db_full = static_cast_with_check<DBImpl>(db.get());
|
|
1239
1460
|
s = db_full->WaitForCompact(true);
|
|
1240
1461
|
if (!s.ok()) {
|
|
1241
1462
|
state.SkipWithError(s.ToString().c_str());
|
|
@@ -1311,7 +1532,7 @@ static void RandomAccessFileReaderRead(benchmark::State& state) {
|
|
|
1311
1532
|
auto statistics_share = CreateDBStatistics();
|
|
1312
1533
|
Statistics* statistics = enable_statistics ? statistics_share.get() : nullptr;
|
|
1313
1534
|
for (int i = 0; i < kFileNum; i++) {
|
|
1314
|
-
std::string fname = fname_base +
|
|
1535
|
+
std::string fname = fname_base + std::to_string(i);
|
|
1315
1536
|
std::string content = rand.RandomString(kDefaultPageSize);
|
|
1316
1537
|
std::unique_ptr<WritableFile> tgt_file;
|
|
1317
1538
|
env->NewWritableFile(fname, &tgt_file, EnvOptions());
|
|
@@ -1344,7 +1565,7 @@ static void RandomAccessFileReaderRead(benchmark::State& state) {
|
|
|
1344
1565
|
|
|
1345
1566
|
// clean up
|
|
1346
1567
|
for (int i = 0; i < kFileNum; i++) {
|
|
1347
|
-
std::string fname = fname_base +
|
|
1568
|
+
std::string fname = fname_base + std::to_string(i);
|
|
1348
1569
|
env->DeleteFile(fname); // ignore return, okay to fail cleanup
|
|
1349
1570
|
}
|
|
1350
1571
|
}
|
|
@@ -26,7 +26,8 @@ HistogramBucketMapper::HistogramBucketMapper() {
|
|
|
26
26
|
// size of array buckets_ in HistogramImpl
|
|
27
27
|
bucketValues_ = {1, 2};
|
|
28
28
|
double bucket_val = static_cast<double>(bucketValues_.back());
|
|
29
|
-
while ((bucket_val = 1.5 * bucket_val) <=
|
|
29
|
+
while ((bucket_val = 1.5 * bucket_val) <=
|
|
30
|
+
static_cast<double>(std::numeric_limits<uint64_t>::max())) {
|
|
30
31
|
bucketValues_.push_back(static_cast<uint64_t>(bucket_val));
|
|
31
32
|
// Extracts two most significant digits to make histogram buckets more
|
|
32
33
|
// human-readable. E.g., 172 becomes 170.
|
|
@@ -13,11 +13,8 @@ namespace ROCKSDB_NAMESPACE {
|
|
|
13
13
|
// Should not be used because the counters are not thread-safe.
|
|
14
14
|
// Put here just to make get_iostats_context() simple without ifdef.
|
|
15
15
|
static IOStatsContext iostats_context;
|
|
16
|
-
#elif defined(ROCKSDB_SUPPORT_THREAD_LOCAL)
|
|
17
|
-
__thread IOStatsContext iostats_context;
|
|
18
16
|
#else
|
|
19
|
-
|
|
20
|
-
"No thread-local support. Disable iostats context with -DNIOSTATS_CONTEXT."
|
|
17
|
+
thread_local IOStatsContext iostats_context;
|
|
21
18
|
#endif
|
|
22
19
|
|
|
23
20
|
IOStatsContext* get_iostats_context() {
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
#include "monitoring/perf_step_timer.h"
|
|
8
8
|
#include "rocksdb/iostats_context.h"
|
|
9
9
|
|
|
10
|
-
#if
|
|
10
|
+
#if !defined(NIOSTATS_CONTEXT)
|
|
11
11
|
namespace ROCKSDB_NAMESPACE {
|
|
12
|
-
extern
|
|
12
|
+
extern thread_local IOStatsContext iostats_context;
|
|
13
13
|
} // namespace ROCKSDB_NAMESPACE
|
|
14
14
|
|
|
15
15
|
// increment a specific counter by the specified value
|
|
@@ -40,7 +40,7 @@ extern __thread IOStatsContext iostats_context;
|
|
|
40
40
|
PerfLevel::kEnableTimeAndCPUTimeExceptForMutex); \
|
|
41
41
|
iostats_step_timer_##metric.Start();
|
|
42
42
|
|
|
43
|
-
#else //
|
|
43
|
+
#else // !NIOSTATS_CONTEXT
|
|
44
44
|
|
|
45
45
|
#define IOSTATS_ADD(metric, value)
|
|
46
46
|
#define IOSTATS_ADD_IF_POSITIVE(metric, value)
|
|
@@ -53,4 +53,4 @@ extern __thread IOStatsContext iostats_context;
|
|
|
53
53
|
#define IOSTATS_TIMER_GUARD(metric)
|
|
54
54
|
#define IOSTATS_CPU_TIMER_GUARD(metric, clock) static_cast<void>(clock)
|
|
55
55
|
|
|
56
|
-
#endif //
|
|
56
|
+
#endif // !NIOSTATS_CONTEXT
|
|
@@ -13,14 +13,8 @@ namespace ROCKSDB_NAMESPACE {
|
|
|
13
13
|
// Should not be used because the counters are not thread-safe.
|
|
14
14
|
// Put here just to make get_perf_context() simple without ifdef.
|
|
15
15
|
PerfContext perf_context;
|
|
16
|
-
#elif defined(ROCKSDB_SUPPORT_THREAD_LOCAL)
|
|
17
|
-
#if defined(OS_SOLARIS)
|
|
18
|
-
__thread PerfContext perf_context;
|
|
19
|
-
#else // OS_SOLARIS
|
|
20
|
-
thread_local PerfContext perf_context;
|
|
21
|
-
#endif // OS_SOLARIS
|
|
22
16
|
#else
|
|
23
|
-
|
|
17
|
+
thread_local PerfContext perf_context;
|
|
24
18
|
#endif
|
|
25
19
|
|
|
26
20
|
PerfContext* get_perf_context() {
|
|
@@ -28,7 +22,7 @@ PerfContext* get_perf_context() {
|
|
|
28
22
|
}
|
|
29
23
|
|
|
30
24
|
PerfContext::~PerfContext() {
|
|
31
|
-
#if !defined(NPERF_CONTEXT) &&
|
|
25
|
+
#if !defined(NPERF_CONTEXT) && !defined(OS_SOLARIS)
|
|
32
26
|
ClearPerLevelPerfContext();
|
|
33
27
|
#endif
|
|
34
28
|
}
|
|
@@ -120,6 +114,7 @@ PerfContext::PerfContext(const PerfContext& other) {
|
|
|
120
114
|
iter_next_cpu_nanos = other.iter_next_cpu_nanos;
|
|
121
115
|
iter_prev_cpu_nanos = other.iter_prev_cpu_nanos;
|
|
122
116
|
iter_seek_cpu_nanos = other.iter_seek_cpu_nanos;
|
|
117
|
+
number_async_seek = other.number_async_seek;
|
|
123
118
|
if (per_level_perf_context_enabled && level_to_perf_context != nullptr) {
|
|
124
119
|
ClearPerLevelPerfContext();
|
|
125
120
|
}
|
|
@@ -218,6 +213,7 @@ PerfContext::PerfContext(PerfContext&& other) noexcept {
|
|
|
218
213
|
iter_next_cpu_nanos = other.iter_next_cpu_nanos;
|
|
219
214
|
iter_prev_cpu_nanos = other.iter_prev_cpu_nanos;
|
|
220
215
|
iter_seek_cpu_nanos = other.iter_seek_cpu_nanos;
|
|
216
|
+
number_async_seek = other.number_async_seek;
|
|
221
217
|
if (per_level_perf_context_enabled && level_to_perf_context != nullptr) {
|
|
222
218
|
ClearPerLevelPerfContext();
|
|
223
219
|
}
|
|
@@ -318,6 +314,7 @@ PerfContext& PerfContext::operator=(const PerfContext& other) {
|
|
|
318
314
|
iter_next_cpu_nanos = other.iter_next_cpu_nanos;
|
|
319
315
|
iter_prev_cpu_nanos = other.iter_prev_cpu_nanos;
|
|
320
316
|
iter_seek_cpu_nanos = other.iter_seek_cpu_nanos;
|
|
317
|
+
number_async_seek = other.number_async_seek;
|
|
321
318
|
if (per_level_perf_context_enabled && level_to_perf_context != nullptr) {
|
|
322
319
|
ClearPerLevelPerfContext();
|
|
323
320
|
}
|
|
@@ -413,6 +410,7 @@ void PerfContext::Reset() {
|
|
|
413
410
|
iter_next_cpu_nanos = 0;
|
|
414
411
|
iter_prev_cpu_nanos = 0;
|
|
415
412
|
iter_seek_cpu_nanos = 0;
|
|
413
|
+
number_async_seek = 0;
|
|
416
414
|
if (per_level_perf_context_enabled && level_to_perf_context) {
|
|
417
415
|
for (auto& kv : *level_to_perf_context) {
|
|
418
416
|
kv.second.Reset();
|
|
@@ -532,6 +530,7 @@ std::string PerfContext::ToString(bool exclude_zero_counters) const {
|
|
|
532
530
|
PERF_CONTEXT_OUTPUT(iter_next_cpu_nanos);
|
|
533
531
|
PERF_CONTEXT_OUTPUT(iter_prev_cpu_nanos);
|
|
534
532
|
PERF_CONTEXT_OUTPUT(iter_seek_cpu_nanos);
|
|
533
|
+
PERF_CONTEXT_OUTPUT(number_async_seek);
|
|
535
534
|
PERF_CONTEXT_BY_LEVEL_OUTPUT_ONE_COUNTER(bloom_filter_useful);
|
|
536
535
|
PERF_CONTEXT_BY_LEVEL_OUTPUT_ONE_COUNTER(bloom_filter_full_positive);
|
|
537
536
|
PERF_CONTEXT_BY_LEVEL_OUTPUT_ONE_COUNTER(bloom_filter_full_true_positive);
|