@nxtedition/rocksdb 8.2.8 → 9.0.0
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/deps/rocksdb/rocksdb/CMakeLists.txt +7 -1
- package/deps/rocksdb/rocksdb/Makefile +22 -19
- package/deps/rocksdb/rocksdb/TARGETS +8 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +157 -61
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +43 -92
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +632 -455
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +244 -149
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +41 -13
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +11 -1
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +216 -17
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +7 -5
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +279 -199
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +2 -1
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +159 -8
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +28 -2
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +1 -1
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +8 -0
- package/deps/rocksdb/rocksdb/crash_test.mk +14 -0
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +3 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +18 -21
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +1 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/builder.cc +32 -7
- package/deps/rocksdb/rocksdb/db/c.cc +169 -6
- package/deps/rocksdb/rocksdb/db/c_test.c +104 -6
- package/deps/rocksdb/rocksdb/db/column_family.cc +98 -47
- package/deps/rocksdb/rocksdb/db/column_family.h +25 -2
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +213 -2
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +93 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +33 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +107 -43
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +25 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +13 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +29 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +24 -31
- package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +3 -1
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +19 -19
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +20 -3
- package/deps/rocksdb/rocksdb/db/convenience_impl.h +15 -0
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +17 -0
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +17 -3
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +15 -15
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +666 -44
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +2 -29
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +274 -1
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +40 -19
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +6 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +250 -116
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +51 -23
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +354 -96
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +6 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +50 -21
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +26 -13
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +13 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +61 -21
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +8 -87
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +7 -1
- package/deps/rocksdb/rocksdb/db/db_iter.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_iter.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +4 -11
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +39 -29
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +26 -36
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +106 -0
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +12 -3
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +279 -166
- package/deps/rocksdb/rocksdb/db/db_test.cc +48 -21
- package/deps/rocksdb/rocksdb/db/db_test2.cc +81 -12
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
- package/deps/rocksdb/rocksdb/db/db_test_util.h +40 -0
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +13 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +233 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +143 -0
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/dbformat.cc +36 -0
- package/deps/rocksdb/rocksdb/db/dbformat.h +169 -20
- package/deps/rocksdb/rocksdb/db/dbformat_test.cc +129 -0
- package/deps/rocksdb/rocksdb/db/error_handler.cc +16 -0
- package/deps/rocksdb/rocksdb/db/error_handler.h +6 -3
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +4 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +2 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +17 -8
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +86 -4
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/file_indexer.cc +2 -4
- package/deps/rocksdb/rocksdb/db/flush_job.cc +101 -11
- package/deps/rocksdb/rocksdb/db/flush_job.h +24 -1
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +88 -11
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +2 -3
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +159 -91
- package/deps/rocksdb/rocksdb/db/import_column_family_job.h +19 -10
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +143 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -1
- package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/log_reader.h +3 -2
- package/deps/rocksdb/rocksdb/db/log_test.cc +17 -21
- package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/db/log_writer.h +3 -2
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +4 -3
- package/deps/rocksdb/rocksdb/db/memtable.cc +52 -13
- package/deps/rocksdb/rocksdb/db/memtable.h +45 -1
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +44 -10
- package/deps/rocksdb/rocksdb/db/memtable_list.h +32 -1
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +90 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +21 -4
- package/deps/rocksdb/rocksdb/db/repair_test.cc +143 -2
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/table_cache.cc +44 -35
- package/deps/rocksdb/rocksdb/db/table_cache.h +6 -6
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -2
- package/deps/rocksdb/rocksdb/db/version_builder.cc +0 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +236 -204
- package/deps/rocksdb/rocksdb/db/version_edit.cc +66 -4
- package/deps/rocksdb/rocksdb/db/version_edit.h +48 -6
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +80 -8
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +12 -0
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +86 -17
- package/deps/rocksdb/rocksdb/db/version_set.cc +136 -41
- package/deps/rocksdb/rocksdb/db/version_set.h +28 -7
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +25 -15
- package/deps/rocksdb/rocksdb/db/write_batch.cc +11 -0
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +3 -0
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +16 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +22 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +42 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +32 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +7 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +247 -120
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +9 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +13 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +15 -27
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +264 -69
- package/deps/rocksdb/rocksdb/env/env.cc +1 -2
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +11 -165
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +0 -17
- package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -2
- package/deps/rocksdb/rocksdb/env/env_test.cc +86 -2
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +6 -4
- package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +78 -0
- package/deps/rocksdb/rocksdb/env/unique_id_gen.h +34 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +15 -4
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +52 -43
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +34 -18
- package/deps/rocksdb/rocksdb/file/file_util.cc +10 -5
- package/deps/rocksdb/rocksdb/file/file_util.h +13 -1
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +724 -79
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +64 -33
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -16
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +23 -12
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +153 -88
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +70 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +50 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +16 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +55 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +32 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +9 -109
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +90 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +85 -17
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +13 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +5 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +21 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +7 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +6 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +33 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +33 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +0 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -0
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +18 -11
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +2 -1
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +69 -34
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +16 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +10 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
- package/deps/rocksdb/rocksdb/options/cf_options.h +10 -2
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +2 -1
- package/deps/rocksdb/rocksdb/options/db_options.cc +7 -0
- package/deps/rocksdb/rocksdb/options/db_options.h +1 -0
- package/deps/rocksdb/rocksdb/options/options.cc +15 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +6 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +11 -3
- package/deps/rocksdb/rocksdb/options/options_test.cc +8 -0
- package/deps/rocksdb/rocksdb/port/mmap.h +20 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +27 -12
- package/deps/rocksdb/rocksdb/port/win/env_win.h +1 -1
- package/deps/rocksdb/rocksdb/src.mk +3 -0
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +48 -22
- package/deps/rocksdb/rocksdb/table/block_based/block.h +60 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +115 -42
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +6 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +60 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +62 -44
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +36 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -15
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +219 -51
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +41 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +50 -21
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +11 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +195 -55
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +31 -16
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +97 -58
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +6 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +27 -12
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +114 -70
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +9 -6
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +15 -3
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +6 -3
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +11 -11
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +3 -0
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +1 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +6 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/table/format.cc +175 -33
- package/deps/rocksdb/rocksdb/table/format.h +63 -10
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +10 -2
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +12 -4
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +1 -0
- package/deps/rocksdb/rocksdb/table/mock_table.cc +8 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +10 -5
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +10 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +3 -3
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +12 -3
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +26 -1
- package/deps/rocksdb/rocksdb/table/table_builder.h +6 -2
- package/deps/rocksdb/rocksdb/table/table_properties.cc +6 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +52 -22
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +19 -7
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +3 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +29 -0
- package/deps/rocksdb/rocksdb/test_util/testutil.h +19 -0
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +65 -26
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +8 -5
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -0
- package/deps/rocksdb/rocksdb/unreleased_history/README.txt +73 -0
- package/deps/rocksdb/rocksdb/unreleased_history/add.sh +27 -0
- package/deps/rocksdb/rocksdb/unreleased_history/behavior_changes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/bug_fixes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/new_features/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/performance_improvements/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/public_api_changes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/release.sh +104 -0
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +5 -0
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +3 -3
- package/deps/rocksdb/rocksdb/util/cast_util.h +14 -0
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +29 -7
- package/deps/rocksdb/rocksdb/util/compression.cc +4 -4
- package/deps/rocksdb/rocksdb/util/compression.h +110 -32
- package/deps/rocksdb/rocksdb/util/core_local.h +2 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +4 -4
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -0
- package/deps/rocksdb/rocksdb/util/hash.h +7 -3
- package/deps/rocksdb/rocksdb/util/hash_test.cc +44 -0
- package/deps/rocksdb/rocksdb/util/math.h +58 -6
- package/deps/rocksdb/rocksdb/util/math128.h +29 -7
- package/deps/rocksdb/rocksdb/util/mutexlock.h +35 -27
- package/deps/rocksdb/rocksdb/util/single_thread_executor.h +1 -0
- package/deps/rocksdb/rocksdb/util/stop_watch.h +1 -1
- package/deps/rocksdb/rocksdb/util/thread_operation.h +8 -1
- package/deps/rocksdb/rocksdb/util/udt_util.cc +343 -0
- package/deps/rocksdb/rocksdb/util/udt_util.h +173 -1
- package/deps/rocksdb/rocksdb/util/udt_util_test.cc +447 -0
- package/deps/rocksdb/rocksdb/util/write_batch_util.cc +25 -0
- package/deps/rocksdb/rocksdb/util/write_batch_util.h +80 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +69 -25
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +7 -6
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +6 -11
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +2 -1
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +23 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +9 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +37 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +231 -33
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +76 -20
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +18 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +40 -23
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +13 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +7 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +41 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +71 -24
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +19 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +60 -107
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +39 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +14 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +10 -5
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
- package/deps/rocksdb/rocksdb.gyp +2 -0
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -547,7 +547,7 @@ if(HAVE_SCHED_GETCPU)
|
|
|
547
547
|
add_definitions(-DROCKSDB_SCHED_GETCPU_PRESENT)
|
|
548
548
|
endif()
|
|
549
549
|
|
|
550
|
-
check_cxx_symbol_exists(getauxval
|
|
550
|
+
check_cxx_symbol_exists(getauxval "sys/auxv.h" HAVE_AUXV_GETAUXVAL)
|
|
551
551
|
if(HAVE_AUXV_GETAUXVAL)
|
|
552
552
|
add_definitions(-DROCKSDB_AUXV_GETAUXVAL_PRESENT)
|
|
553
553
|
endif()
|
|
@@ -865,6 +865,8 @@ set(SOURCES
|
|
|
865
865
|
util/string_util.cc
|
|
866
866
|
util/thread_local.cc
|
|
867
867
|
util/threadpool_imp.cc
|
|
868
|
+
util/udt_util.cc
|
|
869
|
+
util/write_batch_util.cc
|
|
868
870
|
util/xxhash.cc
|
|
869
871
|
utilities/agg_merge/agg_merge.cc
|
|
870
872
|
utilities/backup/backup_engine.cc
|
|
@@ -1421,6 +1423,7 @@ if(WITH_TESTS)
|
|
|
1421
1423
|
util/timer_test.cc
|
|
1422
1424
|
util/thread_list_test.cc
|
|
1423
1425
|
util/thread_local_test.cc
|
|
1426
|
+
util/udt_util_test.cc
|
|
1424
1427
|
util/work_queue_test.cc
|
|
1425
1428
|
utilities/agg_merge/agg_merge_test.cc
|
|
1426
1429
|
utilities/backup/backup_engine_test.cc
|
|
@@ -1589,3 +1592,6 @@ option(WITH_BENCHMARK "build benchmark tests" OFF)
|
|
|
1589
1592
|
if(WITH_BENCHMARK)
|
|
1590
1593
|
add_subdirectory(${PROJECT_SOURCE_DIR}/microbench/)
|
|
1591
1594
|
endif()
|
|
1595
|
+
|
|
1596
|
+
target_include_directories(${PROJECT_NAME} PUBLIC
|
|
1597
|
+
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>)
|
|
@@ -88,6 +88,25 @@ endif
|
|
|
88
88
|
|
|
89
89
|
$(info $$DEBUG_LEVEL is $(DEBUG_LEVEL), $$LIB_MODE is $(LIB_MODE))
|
|
90
90
|
|
|
91
|
+
# Detect what platform we're building on.
|
|
92
|
+
# Export some common variables that might have been passed as Make variables
|
|
93
|
+
# instead of environment variables.
|
|
94
|
+
dummy := $(shell (export ROCKSDB_ROOT="$(CURDIR)"; \
|
|
95
|
+
export CXXFLAGS="$(EXTRA_CXXFLAGS)"; \
|
|
96
|
+
export LDFLAGS="$(EXTRA_LDFLAGS)"; \
|
|
97
|
+
export COMPILE_WITH_ASAN="$(COMPILE_WITH_ASAN)"; \
|
|
98
|
+
export COMPILE_WITH_TSAN="$(COMPILE_WITH_TSAN)"; \
|
|
99
|
+
export COMPILE_WITH_UBSAN="$(COMPILE_WITH_UBSAN)"; \
|
|
100
|
+
export PORTABLE="$(PORTABLE)"; \
|
|
101
|
+
export ROCKSDB_NO_FBCODE="$(ROCKSDB_NO_FBCODE)"; \
|
|
102
|
+
export USE_CLANG="$(USE_CLANG)"; \
|
|
103
|
+
export LIB_MODE="$(LIB_MODE)"; \
|
|
104
|
+
export ROCKSDB_CXX_STANDARD="$(ROCKSDB_CXX_STANDARD)"; \
|
|
105
|
+
export USE_FOLLY="$(USE_FOLLY)"; \
|
|
106
|
+
"$(CURDIR)/build_tools/build_detect_platform" "$(CURDIR)/make_config.mk"))
|
|
107
|
+
# this file is generated by the previous line to set build flags and sources
|
|
108
|
+
include make_config.mk
|
|
109
|
+
|
|
91
110
|
# Figure out optimize level.
|
|
92
111
|
ifneq ($(DEBUG_LEVEL), 2)
|
|
93
112
|
OPTIMIZE_LEVEL ?= -O2
|
|
@@ -223,25 +242,6 @@ am__v_AR_1 =
|
|
|
223
242
|
AM_LINK = $(AM_V_CCLD)$(CXX) -L. $(patsubst lib%.a, -l%, $(patsubst lib%.$(PLATFORM_SHARED_EXT), -l%, $^)) $(EXEC_LDFLAGS) -o $@ $(LDFLAGS) $(COVERAGEFLAGS)
|
|
224
243
|
AM_SHARE = $(AM_V_CCLD) $(CXX) $(PLATFORM_SHARED_LDFLAGS)$@ -L. $(patsubst lib%.$(PLATFORM_SHARED_EXT), -l%, $^) $(EXEC_LDFLAGS) $(LDFLAGS) -o $@
|
|
225
244
|
|
|
226
|
-
# Detect what platform we're building on.
|
|
227
|
-
# Export some common variables that might have been passed as Make variables
|
|
228
|
-
# instead of environment variables.
|
|
229
|
-
dummy := $(shell (export ROCKSDB_ROOT="$(CURDIR)"; \
|
|
230
|
-
export CXXFLAGS="$(EXTRA_CXXFLAGS)"; \
|
|
231
|
-
export LDFLAGS="$(EXTRA_LDFLAGS)"; \
|
|
232
|
-
export COMPILE_WITH_ASAN="$(COMPILE_WITH_ASAN)"; \
|
|
233
|
-
export COMPILE_WITH_TSAN="$(COMPILE_WITH_TSAN)"; \
|
|
234
|
-
export COMPILE_WITH_UBSAN="$(COMPILE_WITH_UBSAN)"; \
|
|
235
|
-
export PORTABLE="$(PORTABLE)"; \
|
|
236
|
-
export ROCKSDB_NO_FBCODE="$(ROCKSDB_NO_FBCODE)"; \
|
|
237
|
-
export USE_CLANG="$(USE_CLANG)"; \
|
|
238
|
-
export LIB_MODE="$(LIB_MODE)"; \
|
|
239
|
-
export ROCKSDB_CXX_STANDARD="$(ROCKSDB_CXX_STANDARD)"; \
|
|
240
|
-
export USE_FOLLY="$(USE_FOLLY)"; \
|
|
241
|
-
"$(CURDIR)/build_tools/build_detect_platform" "$(CURDIR)/make_config.mk"))
|
|
242
|
-
# this file is generated by the previous line to set build flags and sources
|
|
243
|
-
include make_config.mk
|
|
244
|
-
|
|
245
245
|
ROCKSDB_PLUGIN_MKS = $(foreach plugin, $(ROCKSDB_PLUGINS), plugin/$(plugin)/*.mk)
|
|
246
246
|
include $(ROCKSDB_PLUGIN_MKS)
|
|
247
247
|
ROCKSDB_PLUGIN_PROTO =ROCKSDB_NAMESPACE::ObjectLibrary\&, const std::string\&
|
|
@@ -1417,6 +1417,9 @@ thread_local_test: $(OBJ_DIR)/util/thread_local_test.o $(TEST_LIBRARY) $(LIBRARY
|
|
|
1417
1417
|
work_queue_test: $(OBJ_DIR)/util/work_queue_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1418
1418
|
$(AM_LINK)
|
|
1419
1419
|
|
|
1420
|
+
udt_util_test: $(OBJ_DIR)/util/udt_util_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1421
|
+
$(AM_LINK)
|
|
1422
|
+
|
|
1420
1423
|
corruption_test: $(OBJ_DIR)/db/corruption_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1421
1424
|
$(AM_LINK)
|
|
1422
1425
|
|
|
@@ -264,6 +264,8 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
|
|
|
264
264
|
"util/string_util.cc",
|
|
265
265
|
"util/thread_local.cc",
|
|
266
266
|
"util/threadpool_imp.cc",
|
|
267
|
+
"util/udt_util.cc",
|
|
268
|
+
"util/write_batch_util.cc",
|
|
267
269
|
"util/xxhash.cc",
|
|
268
270
|
"utilities/agg_merge/agg_merge.cc",
|
|
269
271
|
"utilities/backup/backup_engine.cc",
|
|
@@ -5508,6 +5510,12 @@ cpp_unittest_wrapper(name="ttl_test",
|
|
|
5508
5510
|
extra_compiler_flags=[])
|
|
5509
5511
|
|
|
5510
5512
|
|
|
5513
|
+
cpp_unittest_wrapper(name="udt_util_test",
|
|
5514
|
+
srcs=["util/udt_util_test.cc"],
|
|
5515
|
+
deps=[":rocksdb_test_lib"],
|
|
5516
|
+
extra_compiler_flags=[])
|
|
5517
|
+
|
|
5518
|
+
|
|
5511
5519
|
cpp_unittest_wrapper(name="util_merge_operators_test",
|
|
5512
5520
|
srcs=["utilities/util_merge_operators_test.cc"],
|
|
5513
5521
|
deps=[":rocksdb_test_lib"],
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
#include "util/hash.h"
|
|
32
32
|
#include "util/mutexlock.h"
|
|
33
33
|
#include "util/random.h"
|
|
34
|
+
#include "util/stderr_logger.h"
|
|
34
35
|
#include "util/stop_watch.h"
|
|
35
36
|
#include "util/string_util.h"
|
|
36
37
|
|
|
@@ -49,8 +50,11 @@ DEFINE_double(resident_ratio, 0.25,
|
|
|
49
50
|
"Ratio of keys fitting in cache to keyspace.");
|
|
50
51
|
DEFINE_uint64(ops_per_thread, 2000000U, "Number of operations per thread.");
|
|
51
52
|
DEFINE_uint32(value_bytes, 8 * KiB, "Size of each value added.");
|
|
53
|
+
DEFINE_uint32(value_bytes_estimate, 0,
|
|
54
|
+
"If > 0, overrides estimated_entry_charge or "
|
|
55
|
+
"min_avg_entry_charge depending on cache_type.");
|
|
52
56
|
|
|
53
|
-
DEFINE_uint32(skew, 5, "Degree of skew in key selection");
|
|
57
|
+
DEFINE_uint32(skew, 5, "Degree of skew in key selection. 0 = no skew");
|
|
54
58
|
DEFINE_bool(populate_cache, true, "Populate cache before operations");
|
|
55
59
|
|
|
56
60
|
DEFINE_uint32(lookup_insert_percent, 87,
|
|
@@ -71,12 +75,22 @@ DEFINE_uint32(
|
|
|
71
75
|
|
|
72
76
|
DEFINE_uint32(gather_stats_entries_per_lock, 256,
|
|
73
77
|
"For Cache::ApplyToAllEntries");
|
|
74
|
-
DEFINE_bool(skewed, false, "If true, skew the key access distribution");
|
|
75
78
|
|
|
76
79
|
DEFINE_bool(lean, false,
|
|
77
80
|
"If true, no additional computation is performed besides cache "
|
|
78
81
|
"operations.");
|
|
79
82
|
|
|
83
|
+
DEFINE_bool(early_exit, false,
|
|
84
|
+
"Exit before deallocating most memory. Good for malloc stats, e.g."
|
|
85
|
+
"MALLOC_CONF=\"stats_print:true\"");
|
|
86
|
+
|
|
87
|
+
DEFINE_bool(histograms, true,
|
|
88
|
+
"Whether to track and print histogram statistics.");
|
|
89
|
+
|
|
90
|
+
DEFINE_bool(report_problems, true, "Whether to ReportProblems() at the end.");
|
|
91
|
+
|
|
92
|
+
DEFINE_uint32(seed, 0, "Hashing/random seed to use. 0 = choose at random");
|
|
93
|
+
|
|
80
94
|
DEFINE_string(secondary_cache_uri, "",
|
|
81
95
|
"Full URI for creating a custom secondary cache object");
|
|
82
96
|
static class std::shared_ptr<ROCKSDB_NAMESPACE::SecondaryCache> secondary_cache;
|
|
@@ -145,9 +159,6 @@ class SharedState {
|
|
|
145
159
|
public:
|
|
146
160
|
explicit SharedState(CacheBench* cache_bench)
|
|
147
161
|
: cv_(&mu_),
|
|
148
|
-
num_initialized_(0),
|
|
149
|
-
start_(false),
|
|
150
|
-
num_done_(0),
|
|
151
162
|
cache_bench_(cache_bench) {}
|
|
152
163
|
|
|
153
164
|
~SharedState() {}
|
|
@@ -170,15 +181,27 @@ class SharedState {
|
|
|
170
181
|
|
|
171
182
|
bool Started() const { return start_; }
|
|
172
183
|
|
|
184
|
+
void AddLookupStats(uint64_t hits, uint64_t misses) {
|
|
185
|
+
MutexLock l(&mu_);
|
|
186
|
+
lookup_count_ += hits + misses;
|
|
187
|
+
lookup_hits_ += hits;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
double GetLookupHitRatio() const {
|
|
191
|
+
return 1.0 * lookup_hits_ / lookup_count_;
|
|
192
|
+
}
|
|
193
|
+
|
|
173
194
|
private:
|
|
174
195
|
port::Mutex mu_;
|
|
175
196
|
port::CondVar cv_;
|
|
176
197
|
|
|
177
|
-
uint64_t num_initialized_;
|
|
178
|
-
bool start_;
|
|
179
|
-
uint64_t num_done_;
|
|
180
|
-
|
|
181
198
|
CacheBench* cache_bench_;
|
|
199
|
+
|
|
200
|
+
uint64_t num_initialized_ = 0;
|
|
201
|
+
bool start_ = false;
|
|
202
|
+
uint64_t num_done_ = 0;
|
|
203
|
+
uint64_t lookup_count_ = 0;
|
|
204
|
+
uint64_t lookup_hits_ = 0;
|
|
182
205
|
};
|
|
183
206
|
|
|
184
207
|
// Per-thread state for concurrent executions of the same benchmark.
|
|
@@ -190,27 +213,19 @@ struct ThreadState {
|
|
|
190
213
|
uint64_t duration_us = 0;
|
|
191
214
|
|
|
192
215
|
ThreadState(uint32_t index, SharedState* _shared)
|
|
193
|
-
: tid(index), rnd(
|
|
216
|
+
: tid(index), rnd(FLAGS_seed + 1 + index), shared(_shared) {}
|
|
194
217
|
};
|
|
195
218
|
|
|
196
219
|
struct KeyGen {
|
|
197
220
|
char key_data[27];
|
|
198
221
|
|
|
199
|
-
Slice GetRand(Random64& rnd, uint64_t max_key,
|
|
200
|
-
uint64_t
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
for (uint32_t i = 0; i < FLAGS_skew; ++i) {
|
|
205
|
-
raw = std::min(raw, rnd.Next());
|
|
206
|
-
}
|
|
207
|
-
key = FastRange64(raw, max_key);
|
|
208
|
-
} else {
|
|
209
|
-
key = rnd.Skewed(max_log);
|
|
210
|
-
if (key > max_key) {
|
|
211
|
-
key -= max_key;
|
|
212
|
-
}
|
|
222
|
+
Slice GetRand(Random64& rnd, uint64_t max_key, uint32_t skew) {
|
|
223
|
+
uint64_t raw = rnd.Next();
|
|
224
|
+
// Skew according to setting
|
|
225
|
+
for (uint32_t i = 0; i < skew; ++i) {
|
|
226
|
+
raw = std::min(raw, rnd.Next());
|
|
213
227
|
}
|
|
228
|
+
uint64_t key = FastRange64(raw, max_key);
|
|
214
229
|
// Variable size and alignment
|
|
215
230
|
size_t off = key % 8;
|
|
216
231
|
key_data[0] = char{42};
|
|
@@ -281,31 +296,38 @@ class CacheBench {
|
|
|
281
296
|
lookup_threshold_(insert_threshold_ +
|
|
282
297
|
kHundredthUint64 * FLAGS_lookup_percent),
|
|
283
298
|
erase_threshold_(lookup_threshold_ +
|
|
284
|
-
kHundredthUint64 * FLAGS_erase_percent)
|
|
285
|
-
skewed_(FLAGS_skewed) {
|
|
299
|
+
kHundredthUint64 * FLAGS_erase_percent) {
|
|
286
300
|
if (erase_threshold_ != 100U * kHundredthUint64) {
|
|
287
301
|
fprintf(stderr, "Percentages must add to 100.\n");
|
|
288
302
|
exit(1);
|
|
289
303
|
}
|
|
290
304
|
|
|
291
|
-
max_log_ = 0;
|
|
292
|
-
if (skewed_) {
|
|
293
|
-
uint64_t max_key = max_key_;
|
|
294
|
-
while (max_key >>= 1) max_log_++;
|
|
295
|
-
if (max_key > (static_cast<uint64_t>(1) << max_log_)) max_log_++;
|
|
296
|
-
}
|
|
297
|
-
|
|
298
305
|
if (FLAGS_cache_type == "clock_cache") {
|
|
299
306
|
fprintf(stderr, "Old clock cache implementation has been removed.\n");
|
|
300
307
|
exit(1);
|
|
301
|
-
} else if (FLAGS_cache_type
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
308
|
+
} else if (EndsWith(FLAGS_cache_type, "hyper_clock_cache")) {
|
|
309
|
+
HyperClockCacheOptions opts(
|
|
310
|
+
FLAGS_cache_size, /*estimated_entry_charge=*/0, FLAGS_num_shard_bits);
|
|
311
|
+
opts.hash_seed = BitwiseAnd(FLAGS_seed, INT32_MAX);
|
|
312
|
+
if (FLAGS_cache_type == "fixed_hyper_clock_cache" ||
|
|
313
|
+
FLAGS_cache_type == "hyper_clock_cache") {
|
|
314
|
+
opts.estimated_entry_charge = FLAGS_value_bytes_estimate > 0
|
|
315
|
+
? FLAGS_value_bytes_estimate
|
|
316
|
+
: FLAGS_value_bytes;
|
|
317
|
+
} else if (FLAGS_cache_type == "auto_hyper_clock_cache") {
|
|
318
|
+
if (FLAGS_value_bytes_estimate > 0) {
|
|
319
|
+
opts.min_avg_entry_charge = FLAGS_value_bytes_estimate;
|
|
320
|
+
}
|
|
321
|
+
} else {
|
|
322
|
+
fprintf(stderr, "Cache type not supported.");
|
|
323
|
+
exit(1);
|
|
324
|
+
}
|
|
325
|
+
cache_ = opts.MakeSharedCache();
|
|
305
326
|
} else if (FLAGS_cache_type == "lru_cache") {
|
|
306
327
|
LRUCacheOptions opts(FLAGS_cache_size, FLAGS_num_shard_bits,
|
|
307
328
|
false /* strict_capacity_limit */,
|
|
308
329
|
0.5 /* high_pri_pool_ratio */);
|
|
330
|
+
opts.hash_seed = BitwiseAnd(FLAGS_seed, INT32_MAX);
|
|
309
331
|
if (!FLAGS_secondary_cache_uri.empty()) {
|
|
310
332
|
Status s = SecondaryCache::CreateFromString(
|
|
311
333
|
ConfigOptions(), FLAGS_secondary_cache_uri, &secondary_cache);
|
|
@@ -329,13 +351,50 @@ class CacheBench {
|
|
|
329
351
|
~CacheBench() {}
|
|
330
352
|
|
|
331
353
|
void PopulateCache() {
|
|
332
|
-
Random64 rnd(
|
|
354
|
+
Random64 rnd(FLAGS_seed);
|
|
333
355
|
KeyGen keygen;
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
356
|
+
size_t max_occ = 0;
|
|
357
|
+
size_t inserts_since_max_occ_increase = 0;
|
|
358
|
+
size_t keys_since_last_not_found = 0;
|
|
359
|
+
|
|
360
|
+
// Avoid redundant insertions by checking Lookup before Insert.
|
|
361
|
+
// Loop until insertions consistently fail to increase max occupancy or
|
|
362
|
+
// it becomes difficult to find keys not already inserted.
|
|
363
|
+
while (inserts_since_max_occ_increase < 100 &&
|
|
364
|
+
keys_since_last_not_found < 100) {
|
|
365
|
+
Slice key = keygen.GetRand(rnd, max_key_, FLAGS_skew);
|
|
366
|
+
|
|
367
|
+
Cache::Handle* handle = cache_->Lookup(key);
|
|
368
|
+
if (handle != nullptr) {
|
|
369
|
+
cache_->Release(handle);
|
|
370
|
+
++keys_since_last_not_found;
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
373
|
+
keys_since_last_not_found = 0;
|
|
374
|
+
|
|
375
|
+
Status s =
|
|
376
|
+
cache_->Insert(key, createValue(rnd), &helper1, FLAGS_value_bytes);
|
|
337
377
|
assert(s.ok());
|
|
378
|
+
|
|
379
|
+
handle = cache_->Lookup(key);
|
|
380
|
+
if (!handle) {
|
|
381
|
+
fprintf(stderr, "Failed to lookup key just inserted.\n");
|
|
382
|
+
assert(false);
|
|
383
|
+
exit(42);
|
|
384
|
+
} else {
|
|
385
|
+
cache_->Release(handle);
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
size_t occ = cache_->GetOccupancyCount();
|
|
389
|
+
if (occ > max_occ) {
|
|
390
|
+
max_occ = occ;
|
|
391
|
+
inserts_since_max_occ_increase = 0;
|
|
392
|
+
} else {
|
|
393
|
+
++inserts_since_max_occ_increase;
|
|
394
|
+
}
|
|
338
395
|
}
|
|
396
|
+
printf("Population complete (%zu entries, %g average charge)\n", max_occ,
|
|
397
|
+
1.0 * FLAGS_cache_size / max_occ);
|
|
339
398
|
}
|
|
340
399
|
|
|
341
400
|
bool Run() {
|
|
@@ -394,19 +453,33 @@ class CacheBench {
|
|
|
394
453
|
FLAGS_ops_per_thread / elapsed_secs);
|
|
395
454
|
printf("Thread ops/sec = %u\n", ops_per_sec);
|
|
396
455
|
|
|
397
|
-
printf("
|
|
398
|
-
HistogramImpl combined;
|
|
399
|
-
for (uint32_t i = 0; i < FLAGS_threads; i++) {
|
|
400
|
-
combined.Merge(threads[i]->latency_ns_hist);
|
|
401
|
-
}
|
|
402
|
-
printf("%s", combined.ToString().c_str());
|
|
456
|
+
printf("Lookup hit ratio: %g\n", shared.GetLookupHitRatio());
|
|
403
457
|
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
458
|
+
size_t occ = cache_->GetOccupancyCount();
|
|
459
|
+
size_t slot = cache_->GetTableAddressCount();
|
|
460
|
+
printf("Final load factor: %g (%zu / %zu)\n", 1.0 * occ / slot, occ, slot);
|
|
461
|
+
|
|
462
|
+
if (FLAGS_histograms) {
|
|
463
|
+
printf("\nOperation latency (ns):\n");
|
|
464
|
+
HistogramImpl combined;
|
|
465
|
+
for (uint32_t i = 0; i < FLAGS_threads; i++) {
|
|
466
|
+
combined.Merge(threads[i]->latency_ns_hist);
|
|
467
|
+
}
|
|
468
|
+
printf("%s", combined.ToString().c_str());
|
|
469
|
+
|
|
470
|
+
if (FLAGS_gather_stats) {
|
|
471
|
+
printf("\nGather stats latency (us):\n");
|
|
472
|
+
printf("%s", stats_hist.ToString().c_str());
|
|
473
|
+
}
|
|
407
474
|
}
|
|
408
475
|
|
|
409
|
-
|
|
476
|
+
if (FLAGS_report_problems) {
|
|
477
|
+
printf("\n");
|
|
478
|
+
std::shared_ptr<Logger> logger =
|
|
479
|
+
std::make_shared<StderrLogger>(InfoLogLevel::DEBUG_LEVEL);
|
|
480
|
+
cache_->ReportProblems(logger);
|
|
481
|
+
}
|
|
482
|
+
printf("%s", stats_report.c_str());
|
|
410
483
|
|
|
411
484
|
return true;
|
|
412
485
|
}
|
|
@@ -419,8 +492,6 @@ class CacheBench {
|
|
|
419
492
|
const uint64_t insert_threshold_;
|
|
420
493
|
const uint64_t lookup_threshold_;
|
|
421
494
|
const uint64_t erase_threshold_;
|
|
422
|
-
const bool skewed_;
|
|
423
|
-
int max_log_;
|
|
424
495
|
|
|
425
496
|
// A benchmark version of gathering stats on an active block cache by
|
|
426
497
|
// iterating over it. The primary purpose is to measure the impact of
|
|
@@ -453,7 +524,7 @@ class CacheBench {
|
|
|
453
524
|
for (;;) {
|
|
454
525
|
if (shared->AllDone()) {
|
|
455
526
|
std::ostringstream ostr;
|
|
456
|
-
ostr << "
|
|
527
|
+
ostr << "\nMost recent cache entry stats:\n"
|
|
457
528
|
<< "Number of entries: " << total_entry_count << "\n"
|
|
458
529
|
<< "Table occupancy: " << table_occupancy << " / "
|
|
459
530
|
<< table_size << " = "
|
|
@@ -490,13 +561,17 @@ class CacheBench {
|
|
|
490
561
|
// Something slightly more expensive as in stats by category
|
|
491
562
|
helpers.insert(helper);
|
|
492
563
|
};
|
|
493
|
-
|
|
564
|
+
if (FLAGS_histograms) {
|
|
565
|
+
timer.Start();
|
|
566
|
+
}
|
|
494
567
|
Cache::ApplyToAllEntriesOptions opts;
|
|
495
568
|
opts.average_entries_per_lock = FLAGS_gather_stats_entries_per_lock;
|
|
496
569
|
shared->GetCacheBench()->cache_->ApplyToAllEntries(fn, opts);
|
|
497
570
|
table_occupancy = shared->GetCacheBench()->cache_->GetOccupancyCount();
|
|
498
571
|
table_size = shared->GetCacheBench()->cache_->GetTableAddressCount();
|
|
499
|
-
|
|
572
|
+
if (FLAGS_histograms) {
|
|
573
|
+
stats_hist->Add(timer.ElapsedNanos() / 1000);
|
|
574
|
+
}
|
|
500
575
|
}
|
|
501
576
|
}
|
|
502
577
|
|
|
@@ -527,6 +602,8 @@ class CacheBench {
|
|
|
527
602
|
void OperateCache(ThreadState* thread) {
|
|
528
603
|
// To use looked-up values
|
|
529
604
|
uint64_t result = 0;
|
|
605
|
+
uint64_t lookup_misses = 0;
|
|
606
|
+
uint64_t lookup_hits = 0;
|
|
530
607
|
// To hold handles for a non-trivial amount of time
|
|
531
608
|
Cache::Handle* handle = nullptr;
|
|
532
609
|
KeyGen gen;
|
|
@@ -535,10 +612,12 @@ class CacheBench {
|
|
|
535
612
|
StopWatchNano timer(clock);
|
|
536
613
|
|
|
537
614
|
for (uint64_t i = 0; i < FLAGS_ops_per_thread; i++) {
|
|
538
|
-
Slice key = gen.GetRand(thread->rnd, max_key_,
|
|
615
|
+
Slice key = gen.GetRand(thread->rnd, max_key_, FLAGS_skew);
|
|
539
616
|
uint64_t random_op = thread->rnd.Next();
|
|
540
617
|
|
|
541
|
-
|
|
618
|
+
if (FLAGS_histograms) {
|
|
619
|
+
timer.Start();
|
|
620
|
+
}
|
|
542
621
|
|
|
543
622
|
if (random_op < lookup_insert_threshold_) {
|
|
544
623
|
if (handle) {
|
|
@@ -549,12 +628,14 @@ class CacheBench {
|
|
|
549
628
|
handle = cache_->Lookup(key, &helper2, /*context*/ nullptr,
|
|
550
629
|
Cache::Priority::LOW);
|
|
551
630
|
if (handle) {
|
|
631
|
+
++lookup_hits;
|
|
552
632
|
if (!FLAGS_lean) {
|
|
553
633
|
// do something with the data
|
|
554
634
|
result += NPHash64(static_cast<char*>(cache_->Value(handle)),
|
|
555
635
|
FLAGS_value_bytes);
|
|
556
636
|
}
|
|
557
637
|
} else {
|
|
638
|
+
++lookup_misses;
|
|
558
639
|
// do insert
|
|
559
640
|
Status s = cache_->Insert(key, createValue(thread->rnd), &helper2,
|
|
560
641
|
FLAGS_value_bytes, &handle);
|
|
@@ -578,11 +659,14 @@ class CacheBench {
|
|
|
578
659
|
handle = cache_->Lookup(key, &helper2, /*context*/ nullptr,
|
|
579
660
|
Cache::Priority::LOW);
|
|
580
661
|
if (handle) {
|
|
662
|
+
++lookup_hits;
|
|
581
663
|
if (!FLAGS_lean) {
|
|
582
664
|
// do something with the data
|
|
583
665
|
result += NPHash64(static_cast<char*>(cache_->Value(handle)),
|
|
584
666
|
FLAGS_value_bytes);
|
|
585
667
|
}
|
|
668
|
+
} else {
|
|
669
|
+
++lookup_misses;
|
|
586
670
|
}
|
|
587
671
|
} else if (random_op < erase_threshold_) {
|
|
588
672
|
// do erase
|
|
@@ -591,7 +675,14 @@ class CacheBench {
|
|
|
591
675
|
// Should be extremely unlikely (noop)
|
|
592
676
|
assert(random_op >= kHundredthUint64 * 100U);
|
|
593
677
|
}
|
|
594
|
-
|
|
678
|
+
if (FLAGS_histograms) {
|
|
679
|
+
thread->latency_ns_hist.Add(timer.ElapsedNanos());
|
|
680
|
+
}
|
|
681
|
+
thread->shared->AddLookupStats(lookup_hits, lookup_misses);
|
|
682
|
+
}
|
|
683
|
+
if (FLAGS_early_exit) {
|
|
684
|
+
MutexLock l(thread->shared->GetMutex());
|
|
685
|
+
exit(0);
|
|
595
686
|
}
|
|
596
687
|
if (handle) {
|
|
597
688
|
cache_->Release(handle);
|
|
@@ -613,7 +704,9 @@ class CacheBench {
|
|
|
613
704
|
#ifndef NDEBUG
|
|
614
705
|
printf("WARNING: Assertions are enabled; benchmarks unnecessarily slow\n");
|
|
615
706
|
#endif
|
|
707
|
+
printf("----------------------------\n");
|
|
616
708
|
printf("RocksDB version : %d.%d\n", kMajorVersion, kMinorVersion);
|
|
709
|
+
printf("Cache impl name : %s\n", cache_->Name());
|
|
617
710
|
printf("DMutex impl name : %s\n", DMutex::kName());
|
|
618
711
|
printf("Number of threads : %u\n", FLAGS_threads);
|
|
619
712
|
printf("Ops per thread : %" PRIu64 "\n", FLAGS_ops_per_thread);
|
|
@@ -952,11 +1045,14 @@ int cache_bench_tool(int argc, char** argv) {
|
|
|
952
1045
|
exit(1);
|
|
953
1046
|
}
|
|
954
1047
|
|
|
1048
|
+
if (FLAGS_seed == 0) {
|
|
1049
|
+
FLAGS_seed = static_cast<uint32_t>(port::GetProcessID());
|
|
1050
|
+
printf("Using seed = %" PRIu32 "\n", FLAGS_seed);
|
|
1051
|
+
}
|
|
1052
|
+
|
|
955
1053
|
ROCKSDB_NAMESPACE::CacheBench bench;
|
|
956
1054
|
if (FLAGS_populate_cache) {
|
|
957
1055
|
bench.PopulateCache();
|
|
958
|
-
printf("Population complete\n");
|
|
959
|
-
printf("----------------------------\n");
|
|
960
1056
|
}
|
|
961
1057
|
if (bench.Run()) {
|
|
962
1058
|
return 0;
|