@nxtedition/rocksdb 8.2.0 → 8.2.2
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/binding.cc +3 -3
- package/deps/rocksdb/rocksdb/CMakeLists.txt +16 -52
- package/deps/rocksdb/rocksdb/Makefile +10 -5
- package/deps/rocksdb/rocksdb/TARGETS +8 -345
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +92 -0
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +32 -32
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +12 -9
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +6 -43
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +3 -13
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +8 -5
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +21 -47
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +3 -8
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -1
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +1 -2
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +44 -7
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +13 -14
- package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +17 -8
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +40 -21
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +41 -42
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +5 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_source.h +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +5 -3
- package/deps/rocksdb/rocksdb/db/builder.cc +7 -6
- package/deps/rocksdb/rocksdb/db/builder.h +2 -2
- package/deps/rocksdb/rocksdb/db/c.cc +76 -5
- package/deps/rocksdb/rocksdb/db/c_test.c +141 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +32 -0
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +5 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +8 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +12 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +21 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +3 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +77 -50
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +4 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +55 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +142 -56
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +1 -2
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +21 -20
- package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +260 -220
- package/deps/rocksdb/rocksdb/db/db_clip_test.cc +142 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +333 -27
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +7 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +189 -27
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +23 -10
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +134 -90
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +124 -16
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +10 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +7 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +15 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +11 -5
- package/deps/rocksdb/rocksdb/db/db_iter.cc +7 -8
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +54 -3
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +42 -0
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +116 -1
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +9 -8
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +142 -63
- package/deps/rocksdb/rocksdb/db/db_test.cc +28 -7
- package/deps/rocksdb/rocksdb/db/db_test2.cc +71 -131
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +18 -0
- package/deps/rocksdb/rocksdb/db/db_test_util.h +6 -0
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +10 -10
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +25 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +88 -0
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +67 -0
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +5 -0
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/experimental.cc +4 -2
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +86 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +15 -2
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -2
- package/deps/rocksdb/rocksdb/db/flush_job.cc +21 -14
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +14 -7
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +31 -8
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +21 -19
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +42 -12
- package/deps/rocksdb/rocksdb/db/internal_stats.h +1 -0
- package/deps/rocksdb/rocksdb/db/kv_checksum.h +92 -6
- package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/log_format.h +8 -4
- package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -51
- package/deps/rocksdb/rocksdb/db/log_reader.h +16 -0
- package/deps/rocksdb/rocksdb/db/log_test.cc +125 -4
- package/deps/rocksdb/rocksdb/db/log_writer.cc +32 -2
- package/deps/rocksdb/rocksdb/db/log_writer.h +16 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +17 -46
- package/deps/rocksdb/rocksdb/db/memtable.h +1 -1
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +8 -4
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +1 -1
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/repair.cc +38 -11
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/table_cache.cc +68 -51
- package/deps/rocksdb/rocksdb/db/table_cache.h +20 -10
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -1
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/version_builder.cc +9 -5
- package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +140 -120
- package/deps/rocksdb/rocksdb/db/version_edit.cc +14 -0
- package/deps/rocksdb/rocksdb/db/version_edit.h +12 -4
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +21 -13
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +26 -16
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +9 -9
- package/deps/rocksdb/rocksdb/db/version_set.cc +292 -96
- package/deps/rocksdb/rocksdb/db/version_set.h +53 -28
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +1 -0
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +62 -22
- package/deps/rocksdb/rocksdb/db/version_util.h +5 -4
- package/deps/rocksdb/rocksdb/db/write_batch.cc +3 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +119 -27
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +123 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +4 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +7 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +34 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +13 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +43 -33
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +29 -17
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +5 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +6 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +85 -50
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +96 -54
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.cc +122 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +206 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +9 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +9 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +322 -92
- package/deps/rocksdb/rocksdb/env/env_posix.cc +12 -8
- package/deps/rocksdb/rocksdb/env/env_test.cc +31 -0
- package/deps/rocksdb/rocksdb/env/mock_env.cc +1 -1
- package/deps/rocksdb/rocksdb/env/unique_id_gen.h +14 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +1 -1
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +5 -1
- package/deps/rocksdb/rocksdb/file/file_util.cc +3 -3
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +89 -0
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +22 -7
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -2
- package/deps/rocksdb/rocksdb/file/readahead_raf.cc +1 -1
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +154 -74
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +27 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +107 -28
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +19 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +7 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +137 -152
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +61 -26
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +30 -26
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +33 -16
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +87 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +9 -2
- package/deps/rocksdb/rocksdb/logging/env_logger.h +2 -0
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +78 -42
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +14 -9
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +4 -9
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +19 -11
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +211 -555
- package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +36 -2
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +17 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +10 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +19 -18
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +10 -2
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +14 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +35 -2
- package/deps/rocksdb/rocksdb/options/cf_options.h +5 -0
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +1 -1
- package/deps/rocksdb/rocksdb/options/options.cc +12 -53
- package/deps/rocksdb/rocksdb/options/options_helper.cc +4 -0
- package/deps/rocksdb/rocksdb/options/options_parser.cc +11 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +32 -4
- package/deps/rocksdb/rocksdb/options/options_test.cc +89 -5
- package/deps/rocksdb/rocksdb/port/lang.h +27 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +67 -24
- package/deps/rocksdb/rocksdb/src.mk +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +195 -35
- package/deps/rocksdb/rocksdb/table/block_based/block.h +197 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +71 -51
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +7 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +4 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +3 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +43 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +36 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +266 -166
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +44 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +63 -56
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +10 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +14 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +918 -2
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +10 -9
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -8
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +18 -23
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +8 -8
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +16 -32
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +7 -8
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +4 -5
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +46 -53
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +12 -12
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +7 -9
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +26 -23
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +3 -0
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +3 -2
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +7 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +3 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +5 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +4 -2
- package/deps/rocksdb/rocksdb/table/format.cc +4 -4
- package/deps/rocksdb/rocksdb/table/format.h +1 -1
- package/deps/rocksdb/rocksdb/table/get_context.cc +1 -1
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +33 -22
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +4 -0
- package/deps/rocksdb/rocksdb/table/mock_table.cc +4 -2
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.h +1 -1
- package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +18 -10
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -3
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +10 -7
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +4 -2
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +11 -0
- package/deps/rocksdb/rocksdb/table/table_builder.h +14 -5
- package/deps/rocksdb/rocksdb/table/table_properties.cc +2 -0
- package/deps/rocksdb/rocksdb/table/table_reader.h +6 -3
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/table/table_test.cc +291 -34
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +3 -1
- package/deps/rocksdb/rocksdb/test_util/testharness.h +5 -0
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +33 -17
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +3 -1
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +2 -2
- package/deps/rocksdb/rocksdb/util/compression.h +1 -1
- package/deps/rocksdb/rocksdb/util/crc32c.cc +24 -83
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +7 -9
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +4 -1
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +9 -10
- package/deps/rocksdb/rocksdb/util/math.h +12 -7
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +16 -18
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +46 -2
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +6 -6
- package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +12 -7
- package/deps/rocksdb/rocksdb/util/stop_watch.h +31 -13
- package/deps/rocksdb/rocksdb/util/thread_list_test.cc +2 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
- package/deps/rocksdb/rocksdb/util/udt_util.h +77 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +11 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +34 -1
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +15 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +5 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +29 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +6 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +10 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +6 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +5 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +5 -0
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- /package/deps/rocksdb/rocksdb/memory/{memory_allocator.h → memory_allocator_impl.h} +0 -0
- /package/deps/rocksdb/rocksdb/monitoring/{statistics.h → statistics_impl.h} +0 -0
- /package/deps/rocksdb/rocksdb/table/block_based/{flush_block_policy.h → flush_block_policy_impl.h} +0 -0
- /package/deps/rocksdb/rocksdb/util/{rate_limiter.h → rate_limiter_impl.h} +0 -0
- /package/deps/rocksdb/rocksdb/utilities/agg_merge/{agg_merge.h → agg_merge_impl.h} +0 -0
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
#include <iostream>
|
|
34
34
|
#include <memory>
|
|
35
35
|
#include <mutex>
|
|
36
|
+
#include <optional>
|
|
36
37
|
#include <queue>
|
|
37
38
|
#include <thread>
|
|
38
39
|
#include <unordered_map>
|
|
@@ -41,7 +42,7 @@
|
|
|
41
42
|
#include "db/malloc_stats.h"
|
|
42
43
|
#include "db/version_set.h"
|
|
43
44
|
#include "monitoring/histogram.h"
|
|
44
|
-
#include "monitoring/
|
|
45
|
+
#include "monitoring/statistics_impl.h"
|
|
45
46
|
#include "options/cf_options.h"
|
|
46
47
|
#include "port/port.h"
|
|
47
48
|
#include "port/stack_trace.h"
|
|
@@ -287,7 +288,7 @@ DEFINE_int32(bloom_locality, 0, "Control bloom filter probes locality");
|
|
|
287
288
|
DEFINE_int64(seed, 0,
|
|
288
289
|
"Seed base for random number generators. "
|
|
289
290
|
"When 0 it is derived from the current time.");
|
|
290
|
-
static int64_t seed_base;
|
|
291
|
+
static std::optional<int64_t> seed_base;
|
|
291
292
|
|
|
292
293
|
DEFINE_int32(threads, 1, "Number of concurrent threads to run.");
|
|
293
294
|
|
|
@@ -548,7 +549,7 @@ DEFINE_bool(universal_allow_trivial_move, false,
|
|
|
548
549
|
DEFINE_bool(universal_incremental, false,
|
|
549
550
|
"Enable incremental compactions in universal compaction.");
|
|
550
551
|
|
|
551
|
-
DEFINE_int64(cache_size,
|
|
552
|
+
DEFINE_int64(cache_size, 32 << 20, // 32MB
|
|
552
553
|
"Number of bytes to use as a cache of uncompressed data");
|
|
553
554
|
|
|
554
555
|
DEFINE_int32(cache_numshardbits, -1,
|
|
@@ -569,7 +570,7 @@ DEFINE_string(cache_type, "lru_cache", "Type of block cache.");
|
|
|
569
570
|
DEFINE_bool(use_compressed_secondary_cache, false,
|
|
570
571
|
"Use the CompressedSecondaryCache as the secondary cache.");
|
|
571
572
|
|
|
572
|
-
DEFINE_int64(compressed_secondary_cache_size,
|
|
573
|
+
DEFINE_int64(compressed_secondary_cache_size, 32 << 20, // 32MB
|
|
573
574
|
"Number of bytes to use as a cache of data");
|
|
574
575
|
|
|
575
576
|
DEFINE_int32(compressed_secondary_cache_numshardbits, 6,
|
|
@@ -1725,6 +1726,10 @@ DEFINE_uint32(
|
|
|
1725
1726
|
"This options determines the size of such checksums. "
|
|
1726
1727
|
"Supported values: 0, 1, 2, 4, 8.");
|
|
1727
1728
|
|
|
1729
|
+
DEFINE_uint32(block_protection_bytes_per_key, 0,
|
|
1730
|
+
"Enable block per key-value checksum protection. "
|
|
1731
|
+
"Supported values: 0, 1, 2, 4, 8.");
|
|
1732
|
+
|
|
1728
1733
|
DEFINE_bool(build_info, false,
|
|
1729
1734
|
"Print the build info via GetRocksBuildInfoAsString");
|
|
1730
1735
|
|
|
@@ -2602,7 +2607,7 @@ struct ThreadState {
|
|
|
2602
2607
|
SharedState* shared;
|
|
2603
2608
|
|
|
2604
2609
|
explicit ThreadState(int index, int my_seed)
|
|
2605
|
-
: tid(index), rand(seed_base + my_seed) {}
|
|
2610
|
+
: tid(index), rand(*seed_base + my_seed) {}
|
|
2606
2611
|
};
|
|
2607
2612
|
|
|
2608
2613
|
class Duration {
|
|
@@ -2998,6 +3003,11 @@ class Benchmark {
|
|
|
2998
3003
|
return allocator;
|
|
2999
3004
|
}
|
|
3000
3005
|
|
|
3006
|
+
static int32_t GetCacheHashSeed() {
|
|
3007
|
+
// For a fixed Cache seed, need a non-negative int32
|
|
3008
|
+
return static_cast<int32_t>(*seed_base) & 0x7fffffff;
|
|
3009
|
+
}
|
|
3010
|
+
|
|
3001
3011
|
static std::shared_ptr<Cache> NewCache(int64_t capacity) {
|
|
3002
3012
|
if (capacity <= 0) {
|
|
3003
3013
|
return nullptr;
|
|
@@ -3006,17 +3016,19 @@ class Benchmark {
|
|
|
3006
3016
|
fprintf(stderr, "Old clock cache implementation has been removed.\n");
|
|
3007
3017
|
exit(1);
|
|
3008
3018
|
} else if (FLAGS_cache_type == "hyper_clock_cache") {
|
|
3009
|
-
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
|
|
3019
|
+
HyperClockCacheOptions hcco{
|
|
3020
|
+
static_cast<size_t>(capacity),
|
|
3021
|
+
static_cast<size_t>(FLAGS_block_size) /*estimated_entry_charge*/,
|
|
3022
|
+
FLAGS_cache_numshardbits};
|
|
3023
|
+
hcco.hash_seed = GetCacheHashSeed();
|
|
3024
|
+
return hcco.MakeSharedCache();
|
|
3013
3025
|
} else if (FLAGS_cache_type == "lru_cache") {
|
|
3014
3026
|
LRUCacheOptions opts(
|
|
3015
3027
|
static_cast<size_t>(capacity), FLAGS_cache_numshardbits,
|
|
3016
3028
|
false /*strict_capacity_limit*/, FLAGS_cache_high_pri_pool_ratio,
|
|
3017
3029
|
GetCacheAllocator(), kDefaultToAdaptiveMutex,
|
|
3018
3030
|
kDefaultCacheMetadataChargePolicy, FLAGS_cache_low_pri_pool_ratio);
|
|
3019
|
-
|
|
3031
|
+
opts.hash_seed = GetCacheHashSeed();
|
|
3020
3032
|
if (!FLAGS_secondary_cache_uri.empty()) {
|
|
3021
3033
|
Status s = SecondaryCache::CreateFromString(
|
|
3022
3034
|
ConfigOptions(), FLAGS_secondary_cache_uri, &secondary_cache);
|
|
@@ -3047,7 +3059,7 @@ class Benchmark {
|
|
|
3047
3059
|
NewCompressedSecondaryCache(secondary_cache_opts);
|
|
3048
3060
|
}
|
|
3049
3061
|
|
|
3050
|
-
return
|
|
3062
|
+
return opts.MakeSharedCache();
|
|
3051
3063
|
} else {
|
|
3052
3064
|
fprintf(stderr, "Cache type not supported.");
|
|
3053
3065
|
exit(1);
|
|
@@ -4565,6 +4577,8 @@ class Benchmark {
|
|
|
4565
4577
|
}
|
|
4566
4578
|
options.memtable_protection_bytes_per_key =
|
|
4567
4579
|
FLAGS_memtable_protection_bytes_per_key;
|
|
4580
|
+
options.block_protection_bytes_per_key =
|
|
4581
|
+
FLAGS_block_protection_bytes_per_key;
|
|
4568
4582
|
}
|
|
4569
4583
|
|
|
4570
4584
|
void InitializeOptionsGeneral(Options* opts) {
|
|
@@ -4590,7 +4604,7 @@ class Benchmark {
|
|
|
4590
4604
|
if (FLAGS_cache_size > 0) {
|
|
4591
4605
|
// This violates this function's rules on when to set options. But we
|
|
4592
4606
|
// have to do it because the case of unconfigured block cache in OPTIONS
|
|
4593
|
-
// file is indistinguishable (it is sanitized to
|
|
4607
|
+
// file is indistinguishable (it is sanitized to 32MB by this point, not
|
|
4594
4608
|
// nullptr), and our regression tests assume this will be the shared
|
|
4595
4609
|
// block cache, even with OPTIONS file provided.
|
|
4596
4610
|
table_options->block_cache = cache_;
|
|
@@ -4885,7 +4899,7 @@ class Benchmark {
|
|
|
4885
4899
|
values_[i] = i;
|
|
4886
4900
|
}
|
|
4887
4901
|
RandomShuffle(values_.begin(), values_.end(),
|
|
4888
|
-
static_cast<uint32_t>(seed_base));
|
|
4902
|
+
static_cast<uint32_t>(*seed_base));
|
|
4889
4903
|
}
|
|
4890
4904
|
}
|
|
4891
4905
|
|
|
@@ -4997,7 +5011,7 @@ class Benchmark {
|
|
|
4997
5011
|
// Default_random_engine provides slightly
|
|
4998
5012
|
// improved throughput over mt19937.
|
|
4999
5013
|
std::default_random_engine overwrite_gen{
|
|
5000
|
-
static_cast<unsigned int>(seed_base)};
|
|
5014
|
+
static_cast<unsigned int>(*seed_base)};
|
|
5001
5015
|
std::bernoulli_distribution overwrite_decider(p);
|
|
5002
5016
|
|
|
5003
5017
|
// Inserted key window is filled with the last N
|
|
@@ -5007,7 +5021,7 @@ class Benchmark {
|
|
|
5007
5021
|
// - random access is O(1)
|
|
5008
5022
|
// - insertion/removal at beginning/end is also O(1).
|
|
5009
5023
|
std::deque<int64_t> inserted_key_window;
|
|
5010
|
-
Random64 reservoir_id_gen(seed_base);
|
|
5024
|
+
Random64 reservoir_id_gen(*seed_base);
|
|
5011
5025
|
|
|
5012
5026
|
// --- Variables used in disposable/persistent keys simulation:
|
|
5013
5027
|
// The following variables are used when
|
|
@@ -5044,7 +5058,7 @@ class Benchmark {
|
|
|
5044
5058
|
ErrorExit();
|
|
5045
5059
|
}
|
|
5046
5060
|
}
|
|
5047
|
-
Random rnd_disposable_entry(static_cast<uint32_t>(seed_base));
|
|
5061
|
+
Random rnd_disposable_entry(static_cast<uint32_t>(*seed_base));
|
|
5048
5062
|
std::string random_value;
|
|
5049
5063
|
// Queue that stores scheduled timestamp of disposable entries deletes,
|
|
5050
5064
|
// along with starting index of disposable entry keys to delete.
|
|
@@ -6978,6 +6992,8 @@ class Benchmark {
|
|
|
6978
6992
|
|
|
6979
6993
|
thread->stats.FinishedOps(&db_, db_.db, 1, kSeek);
|
|
6980
6994
|
}
|
|
6995
|
+
(void)num_seek_to_first;
|
|
6996
|
+
(void)num_next;
|
|
6981
6997
|
delete iter;
|
|
6982
6998
|
}
|
|
6983
6999
|
|
|
@@ -8508,7 +8524,7 @@ int db_bench_tool(int argc, char** argv) {
|
|
|
8508
8524
|
uint64_t now = FLAGS_env->GetSystemClock()->NowMicros();
|
|
8509
8525
|
seed_base = static_cast<int64_t>(now);
|
|
8510
8526
|
fprintf(stdout, "Set seed to %" PRIu64 " because --seed was 0\n",
|
|
8511
|
-
seed_base);
|
|
8527
|
+
*seed_base);
|
|
8512
8528
|
} else {
|
|
8513
8529
|
seed_base = FLAGS_seed;
|
|
8514
8530
|
}
|
|
@@ -4168,6 +4168,8 @@ UnsafeRemoveSstFileCommand::UnsafeRemoveSstFileCommand(
|
|
|
4168
4168
|
}
|
|
4169
4169
|
|
|
4170
4170
|
void UnsafeRemoveSstFileCommand::DoCommand() {
|
|
4171
|
+
// TODO: plumb Env::IOActivity
|
|
4172
|
+
const ReadOptions read_options;
|
|
4171
4173
|
PrepareOptions();
|
|
4172
4174
|
|
|
4173
4175
|
OfflineManifestWriter w(options_, db_path_);
|
|
@@ -4192,7 +4194,7 @@ void UnsafeRemoveSstFileCommand::DoCommand() {
|
|
|
4192
4194
|
s = options_.env->GetFileSystem()->NewDirectory(db_path_, IOOptions(),
|
|
4193
4195
|
&db_dir, nullptr);
|
|
4194
4196
|
if (s.ok()) {
|
|
4195
|
-
s = w.LogAndApply(cfd, &edit, db_dir.get());
|
|
4197
|
+
s = w.LogAndApply(read_options, cfd, &edit, db_dir.get());
|
|
4196
4198
|
}
|
|
4197
4199
|
}
|
|
4198
4200
|
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
#include "rocksdb/slice.h"
|
|
18
18
|
#include "util/hash.h"
|
|
19
19
|
|
|
20
|
-
#ifdef
|
|
20
|
+
#ifdef __AVX2__
|
|
21
21
|
#include <immintrin.h>
|
|
22
22
|
#endif
|
|
23
23
|
|
|
@@ -231,7 +231,7 @@ class FastLocalBloomImpl {
|
|
|
231
231
|
static inline bool HashMayMatchPrepared(uint32_t h2, int num_probes,
|
|
232
232
|
const char *data_at_cache_line) {
|
|
233
233
|
uint32_t h = h2;
|
|
234
|
-
#ifdef
|
|
234
|
+
#ifdef __AVX2__
|
|
235
235
|
int rem_probes = num_probes;
|
|
236
236
|
|
|
237
237
|
// NOTE: For better performance for num_probes in {1, 2, 9, 10, 17, 18,
|
|
@@ -15,10 +15,6 @@
|
|
|
15
15
|
|
|
16
16
|
#include <array>
|
|
17
17
|
#include <utility>
|
|
18
|
-
#ifdef HAVE_SSE42
|
|
19
|
-
#include <nmmintrin.h>
|
|
20
|
-
#include <wmmintrin.h>
|
|
21
|
-
#endif
|
|
22
18
|
|
|
23
19
|
#include "port/lang.h"
|
|
24
20
|
#include "util/coding.h"
|
|
@@ -50,6 +46,13 @@
|
|
|
50
46
|
|
|
51
47
|
#endif
|
|
52
48
|
|
|
49
|
+
ASSERT_FEATURE_COMPAT_HEADER();
|
|
50
|
+
|
|
51
|
+
#ifdef __SSE4_2__
|
|
52
|
+
#include <nmmintrin.h>
|
|
53
|
+
#include <wmmintrin.h>
|
|
54
|
+
#endif
|
|
55
|
+
|
|
53
56
|
#if defined(HAVE_ARM64_CRC)
|
|
54
57
|
bool pmull_runtime_flag = false;
|
|
55
58
|
#endif
|
|
@@ -107,6 +110,7 @@ static const uint32_t table0_[256] = {
|
|
|
107
110
|
0xf36e6f75, 0x0105ec76, 0x12551f82, 0xe03e9c81, 0x34f4f86a, 0xc69f7b69,
|
|
108
111
|
0xd5cf889d, 0x27a40b9e, 0x79b737ba, 0x8bdcb4b9, 0x988c474d, 0x6ae7c44e,
|
|
109
112
|
0xbe2da0a5, 0x4c4623a6, 0x5f16d052, 0xad7d5351};
|
|
113
|
+
#ifndef __SSE4_2__
|
|
110
114
|
static const uint32_t table1_[256] = {
|
|
111
115
|
0x00000000, 0x13a29877, 0x274530ee, 0x34e7a899, 0x4e8a61dc, 0x5d28f9ab,
|
|
112
116
|
0x69cf5132, 0x7a6dc945, 0x9d14c3b8, 0x8eb65bcf, 0xba51f356, 0xa9f36b21,
|
|
@@ -244,14 +248,10 @@ static const uint32_t table3_[256] = {
|
|
|
244
248
|
static inline uint32_t LE_LOAD32(const uint8_t* p) {
|
|
245
249
|
return DecodeFixed32(reinterpret_cast<const char*>(p));
|
|
246
250
|
}
|
|
251
|
+
#endif // !__SSE4_2__
|
|
247
252
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
return DecodeFixed64(reinterpret_cast<const char*>(p));
|
|
251
|
-
}
|
|
252
|
-
#endif
|
|
253
|
-
|
|
254
|
-
static inline void Slow_CRC32(uint64_t* l, uint8_t const** p) {
|
|
253
|
+
static inline void DefaultCRC32(uint64_t* l, uint8_t const** p) {
|
|
254
|
+
#ifndef __SSE4_2__
|
|
255
255
|
uint32_t c = static_cast<uint32_t>(*l ^ LE_LOAD32(*p));
|
|
256
256
|
*p += 4;
|
|
257
257
|
*l = table3_[c & 0xff] ^ table2_[(c >> 8) & 0xff] ^
|
|
@@ -261,16 +261,8 @@ static inline void Slow_CRC32(uint64_t* l, uint8_t const** p) {
|
|
|
261
261
|
*p += 4;
|
|
262
262
|
*l = table3_[c & 0xff] ^ table2_[(c >> 8) & 0xff] ^
|
|
263
263
|
table1_[(c >> 16) & 0xff] ^ table0_[c >> 24];
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
#if (!(defined(HAVE_POWER8) && defined(HAS_ALTIVEC))) && \
|
|
267
|
-
(!defined(HAVE_ARM64_CRC)) || \
|
|
268
|
-
defined(NO_THREEWAY_CRC32C)
|
|
269
|
-
static inline void Fast_CRC32(uint64_t* l, uint8_t const** p) {
|
|
270
|
-
#ifndef HAVE_SSE42
|
|
271
|
-
Slow_CRC32(l, p);
|
|
272
264
|
#elif defined(__LP64__) || defined(_WIN64)
|
|
273
|
-
*l = _mm_crc32_u64(*l,
|
|
265
|
+
*l = _mm_crc32_u64(*l, DecodeFixed64(reinterpret_cast<const char*>(*p)));
|
|
274
266
|
*p += 8;
|
|
275
267
|
#else
|
|
276
268
|
*l = _mm_crc32_u32(static_cast<unsigned int>(*l), LE_LOAD32(*p));
|
|
@@ -279,7 +271,6 @@ static inline void Fast_CRC32(uint64_t* l, uint8_t const** p) {
|
|
|
279
271
|
*p += 4;
|
|
280
272
|
#endif
|
|
281
273
|
}
|
|
282
|
-
#endif
|
|
283
274
|
|
|
284
275
|
template <void (*CRC32)(uint64_t*, uint8_t const**)>
|
|
285
276
|
uint32_t ExtendImpl(uint32_t crc, const char* buf, size_t size) {
|
|
@@ -324,48 +315,6 @@ uint32_t ExtendImpl(uint32_t crc, const char* buf, size_t size) {
|
|
|
324
315
|
return static_cast<uint32_t>(l ^ 0xffffffffu);
|
|
325
316
|
}
|
|
326
317
|
|
|
327
|
-
// Detect if ARM64 CRC or not.
|
|
328
|
-
#ifndef HAVE_ARM64_CRC
|
|
329
|
-
// Detect if SS42 or not.
|
|
330
|
-
#ifndef HAVE_POWER8
|
|
331
|
-
|
|
332
|
-
static bool isSSE42() {
|
|
333
|
-
#ifndef HAVE_SSE42
|
|
334
|
-
return false;
|
|
335
|
-
#elif defined(__GNUC__) && defined(__x86_64__) && !defined(IOS_CROSS_COMPILE)
|
|
336
|
-
uint32_t c_;
|
|
337
|
-
__asm__("cpuid" : "=c"(c_) : "a"(1) : "ebx", "edx");
|
|
338
|
-
return c_ & (1U << 20); // copied from CpuId.h in Folly. Test SSE42
|
|
339
|
-
#elif defined(_WIN64)
|
|
340
|
-
int info[4];
|
|
341
|
-
__cpuidex(info, 0x00000001, 0);
|
|
342
|
-
return (info[2] & ((int)1 << 20)) != 0;
|
|
343
|
-
#else
|
|
344
|
-
return false;
|
|
345
|
-
#endif
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
static bool isPCLMULQDQ() {
|
|
349
|
-
#ifndef HAVE_SSE42
|
|
350
|
-
// in build_detect_platform we set this macro when both SSE42 and PCLMULQDQ
|
|
351
|
-
// are supported by compiler
|
|
352
|
-
return false;
|
|
353
|
-
#elif defined(__GNUC__) && defined(__x86_64__) && !defined(IOS_CROSS_COMPILE)
|
|
354
|
-
uint32_t c_;
|
|
355
|
-
__asm__("cpuid" : "=c"(c_) : "a"(1) : "ebx", "edx");
|
|
356
|
-
return c_ & (1U << 1); // PCLMULQDQ is in bit 1 (not bit 0)
|
|
357
|
-
#elif defined(_WIN64)
|
|
358
|
-
int info[4];
|
|
359
|
-
__cpuidex(info, 0x00000001, 0);
|
|
360
|
-
return (info[2] & ((int)1 << 1)) != 0;
|
|
361
|
-
#else
|
|
362
|
-
return false;
|
|
363
|
-
#endif
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
#endif // HAVE_POWER8
|
|
367
|
-
#endif // HAVE_ARM64_CRC
|
|
368
|
-
|
|
369
318
|
using Function = uint32_t (*)(uint32_t, const char*, size_t);
|
|
370
319
|
|
|
371
320
|
#if defined(HAVE_POWER8) && defined(HAS_ALTIVEC)
|
|
@@ -436,7 +385,9 @@ std::string IsFastCrc32Supported() {
|
|
|
436
385
|
arch = "Arm64";
|
|
437
386
|
}
|
|
438
387
|
#else
|
|
439
|
-
|
|
388
|
+
#ifdef __SSE4_2__
|
|
389
|
+
has_fast_crc = true;
|
|
390
|
+
#endif // __SSE4_2__
|
|
440
391
|
arch = "x86";
|
|
441
392
|
#endif
|
|
442
393
|
if (has_fast_crc) {
|
|
@@ -477,7 +428,7 @@ std::string IsFastCrc32Supported() {
|
|
|
477
428
|
* <davejwatson@fb.com>
|
|
478
429
|
*
|
|
479
430
|
*/
|
|
480
|
-
#if defined
|
|
431
|
+
#if defined(__SSE4_2__) && defined(__PCLMUL__)
|
|
481
432
|
|
|
482
433
|
#define CRCtriplet(crc, buf, offset) \
|
|
483
434
|
crc##0 = _mm_crc32_u64(crc##0, *(buf##0 + offset)); \
|
|
@@ -1152,34 +1103,24 @@ uint32_t crc32c_3way(uint32_t crc, const char* buf, size_t len) {
|
|
|
1152
1103
|
}
|
|
1153
1104
|
}
|
|
1154
1105
|
|
|
1155
|
-
#endif //
|
|
1106
|
+
#endif //__SSE4_2__ && __PCLMUL__
|
|
1156
1107
|
|
|
1157
1108
|
static inline Function Choose_Extend() {
|
|
1158
1109
|
#ifdef HAVE_POWER8
|
|
1159
|
-
return isAltiVec() ? ExtendPPCImpl : ExtendImpl<
|
|
1110
|
+
return isAltiVec() ? ExtendPPCImpl : ExtendImpl<DefaultCRC32>;
|
|
1160
1111
|
#elif defined(HAVE_ARM64_CRC)
|
|
1161
1112
|
if(crc32c_runtime_check()) {
|
|
1162
1113
|
pmull_runtime_flag = crc32c_pmull_runtime_check();
|
|
1163
1114
|
return ExtendARMImpl;
|
|
1164
1115
|
} else {
|
|
1165
|
-
return ExtendImpl<
|
|
1116
|
+
return ExtendImpl<DefaultCRC32>;
|
|
1166
1117
|
}
|
|
1118
|
+
#elif defined(__SSE4_2__) && defined(__PCLMUL__) && !defined NO_THREEWAY_CRC32C
|
|
1119
|
+
// NOTE: runtime detection no longer supported on x86
|
|
1120
|
+
(void)ExtendImpl<DefaultCRC32>; // suppress unused warning
|
|
1121
|
+
return crc32c_3way;
|
|
1167
1122
|
#else
|
|
1168
|
-
|
|
1169
|
-
if (isPCLMULQDQ()) {
|
|
1170
|
-
#if (defined HAVE_SSE42 && defined HAVE_PCLMUL) && !defined NO_THREEWAY_CRC32C
|
|
1171
|
-
return crc32c_3way;
|
|
1172
|
-
#else
|
|
1173
|
-
return ExtendImpl<Fast_CRC32>; // Fast_CRC32 will check HAVE_SSE42 itself
|
|
1174
|
-
#endif
|
|
1175
|
-
}
|
|
1176
|
-
else { // no runtime PCLMULQDQ support but has SSE42 support
|
|
1177
|
-
return ExtendImpl<Fast_CRC32>;
|
|
1178
|
-
}
|
|
1179
|
-
} // end of isSSE42()
|
|
1180
|
-
else {
|
|
1181
|
-
return ExtendImpl<Slow_CRC32>;
|
|
1182
|
-
}
|
|
1123
|
+
return ExtendImpl<DefaultCRC32>;
|
|
1183
1124
|
#endif
|
|
1184
1125
|
}
|
|
1185
1126
|
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
#include <sys/sysctl.h>
|
|
24
24
|
#endif
|
|
25
25
|
#if defined(__OpenBSD__)
|
|
26
|
-
#include <sys/types.h>
|
|
27
|
-
#include <sys/sysctl.h>
|
|
28
|
-
#include <machine/cpu.h>
|
|
29
26
|
#include <machine/armreg.h>
|
|
27
|
+
#include <machine/cpu.h>
|
|
28
|
+
#include <sys/sysctl.h>
|
|
29
|
+
#include <sys/types.h>
|
|
30
30
|
#endif
|
|
31
31
|
|
|
32
32
|
#ifdef HAVE_ARM64_CRYPTO
|
|
@@ -67,13 +67,12 @@ uint32_t crc32c_runtime_check(void) {
|
|
|
67
67
|
return r == 1;
|
|
68
68
|
#elif defined(__OpenBSD__)
|
|
69
69
|
int r = 0;
|
|
70
|
-
const int isar0_mib[] = {
|
|
70
|
+
const int isar0_mib[] = {CTL_MACHDEP, CPU_ID_AA64ISAR0};
|
|
71
71
|
uint64_t isar0;
|
|
72
72
|
size_t len = sizeof(isar0);
|
|
73
73
|
|
|
74
74
|
if (sysctl(isar0_mib, 2, &isar0, &len, NULL, 0) != -1) {
|
|
75
|
-
|
|
76
|
-
r = 1;
|
|
75
|
+
if (ID_AA64ISAR0_CRC32(isar0) >= ID_AA64ISAR0_CRC32_BASE) r = 1;
|
|
77
76
|
}
|
|
78
77
|
return r;
|
|
79
78
|
#else
|
|
@@ -94,13 +93,12 @@ bool crc32c_pmull_runtime_check(void) {
|
|
|
94
93
|
return true;
|
|
95
94
|
#elif defined(__OpenBSD__)
|
|
96
95
|
bool r = false;
|
|
97
|
-
const int isar0_mib[] = {
|
|
96
|
+
const int isar0_mib[] = {CTL_MACHDEP, CPU_ID_AA64ISAR0};
|
|
98
97
|
uint64_t isar0;
|
|
99
98
|
size_t len = sizeof(isar0);
|
|
100
99
|
|
|
101
100
|
if (sysctl(isar0_mib, 2, &isar0, &len, NULL, 0) != -1) {
|
|
102
|
-
|
|
103
|
-
r = true;
|
|
101
|
+
if (ID_AA64ISAR0_AES(isar0) >= ID_AA64ISAR0_AES_PMULL) r = true;
|
|
104
102
|
}
|
|
105
103
|
return r;
|
|
106
104
|
#else
|
|
@@ -98,6 +98,8 @@ Status GetFileChecksumsFromManifest(Env* src_env, const std::string& abs_path,
|
|
|
98
98
|
return Status::InvalidArgument("checksum_list is nullptr");
|
|
99
99
|
}
|
|
100
100
|
assert(checksum_list);
|
|
101
|
+
// TODO: plumb Env::IOActivity
|
|
102
|
+
const ReadOptions read_options;
|
|
101
103
|
checksum_list->reset();
|
|
102
104
|
Status s;
|
|
103
105
|
|
|
@@ -125,7 +127,8 @@ Status GetFileChecksumsFromManifest(Env* src_env, const std::string& abs_path,
|
|
|
125
127
|
reporter.status_ptr = &s;
|
|
126
128
|
log::Reader reader(nullptr, std::move(file_reader), &reporter,
|
|
127
129
|
true /* checksum */, 0 /* log_number */);
|
|
128
|
-
FileChecksumRetriever retriever(manifest_file_size,
|
|
130
|
+
FileChecksumRetriever retriever(read_options, manifest_file_size,
|
|
131
|
+
*checksum_list);
|
|
129
132
|
retriever.Iterate(reader, &s);
|
|
130
133
|
assert(!retriever.status().ok() ||
|
|
131
134
|
manifest_file_size == std::numeric_limits<uint64_t>::max() ||
|
|
@@ -728,7 +728,7 @@ double FilterBench::RandomQueryTest(uint32_t inside_threshold, bool dry_run,
|
|
|
728
728
|
batch_slices[i],
|
|
729
729
|
/*no_io=*/false, /*const_ikey_ptr=*/nullptr,
|
|
730
730
|
/*get_context=*/nullptr,
|
|
731
|
-
/*lookup_context=*/nullptr,
|
|
731
|
+
/*lookup_context=*/nullptr, ROCKSDB_NAMESPACE::ReadOptions());
|
|
732
732
|
}
|
|
733
733
|
} else {
|
|
734
734
|
if (dry_run) {
|
|
@@ -15,16 +15,15 @@
|
|
|
15
15
|
#endif
|
|
16
16
|
|
|
17
17
|
#ifndef DEFINE_uint32
|
|
18
|
-
// DEFINE_uint32
|
|
19
|
-
//
|
|
18
|
+
// DEFINE_uint32 / DECLARE_uint32 do not appear in older versions of gflags.
|
|
19
|
+
// These should be sane definitions for those versions.
|
|
20
20
|
#include <cstdint>
|
|
21
|
-
#define DEFINE_uint32(name, val, txt)
|
|
22
|
-
namespace gflags_compat {
|
|
23
|
-
DEFINE_int32(name, val, txt);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
#define DEFINE_uint32(name, val, txt) \
|
|
22
|
+
namespace gflags_compat { \
|
|
23
|
+
DEFINE_int32(name, val, txt); \
|
|
24
|
+
} \
|
|
25
|
+
uint32_t &FLAGS_##name = \
|
|
26
|
+
*reinterpret_cast<uint32_t *>(&gflags_compat::FLAGS_##name);
|
|
27
27
|
|
|
28
|
-
#define DECLARE_uint32(name)
|
|
29
|
-
extern std::reference_wrapper<uint32_t> FLAGS_##name;
|
|
28
|
+
#define DECLARE_uint32(name) extern uint32_t &FLAGS_##name;
|
|
30
29
|
#endif // !DEFINE_uint32
|
|
@@ -13,8 +13,11 @@
|
|
|
13
13
|
#include <cstdint>
|
|
14
14
|
#include <type_traits>
|
|
15
15
|
|
|
16
|
+
#include "port/lang.h"
|
|
16
17
|
#include "rocksdb/rocksdb_namespace.h"
|
|
17
18
|
|
|
19
|
+
ASSERT_FEATURE_COMPAT_HEADER();
|
|
20
|
+
|
|
18
21
|
namespace ROCKSDB_NAMESPACE {
|
|
19
22
|
|
|
20
23
|
// Fast implementation of floor(log2(v)). Undefined for 0 or negative
|
|
@@ -145,27 +148,29 @@ inline int BitsSetToOne(T v) {
|
|
|
145
148
|
constexpr auto mm = 8 * sizeof(uint32_t) - 1;
|
|
146
149
|
// The bit mask is to neutralize sign extension on small signed types
|
|
147
150
|
constexpr uint32_t m = (uint32_t{1} << ((8 * sizeof(T)) & mm)) - 1;
|
|
148
|
-
#if
|
|
151
|
+
#if __POPCNT__
|
|
149
152
|
return static_cast<int>(__popcnt(static_cast<uint32_t>(v) & m));
|
|
150
153
|
#else
|
|
151
154
|
return static_cast<int>(detail::BitsSetToOneFallback(v) & m);
|
|
152
|
-
#endif
|
|
155
|
+
#endif // __POPCNT__
|
|
153
156
|
} else if (sizeof(T) == sizeof(uint32_t)) {
|
|
154
|
-
#if
|
|
157
|
+
#if __POPCNT__
|
|
155
158
|
return static_cast<int>(__popcnt(static_cast<uint32_t>(v)));
|
|
156
159
|
#else
|
|
157
160
|
return detail::BitsSetToOneFallback(static_cast<uint32_t>(v));
|
|
158
|
-
#endif
|
|
161
|
+
#endif // __POPCNT__
|
|
159
162
|
} else {
|
|
160
|
-
#if
|
|
163
|
+
#if __POPCNT__
|
|
164
|
+
#ifdef _M_X64
|
|
161
165
|
return static_cast<int>(__popcnt64(static_cast<uint64_t>(v)));
|
|
162
|
-
#
|
|
166
|
+
#else
|
|
163
167
|
return static_cast<int>(
|
|
164
168
|
__popcnt(static_cast<uint32_t>(static_cast<uint64_t>(v) >> 32) +
|
|
165
169
|
__popcnt(static_cast<uint32_t>(v))));
|
|
170
|
+
#endif // _M_X64
|
|
166
171
|
#else
|
|
167
172
|
return detail::BitsSetToOneFallback(static_cast<uint64_t>(v));
|
|
168
|
-
#endif
|
|
173
|
+
#endif // __POPCNT__
|
|
169
174
|
}
|
|
170
175
|
#else
|
|
171
176
|
static_assert(sizeof(T) <= sizeof(unsigned long long), "type too big");
|
|
@@ -7,15 +7,14 @@
|
|
|
7
7
|
// Use of this source code is governed by a BSD-style license that can be
|
|
8
8
|
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
9
9
|
|
|
10
|
-
#include "util/rate_limiter.h"
|
|
11
|
-
|
|
12
10
|
#include <algorithm>
|
|
13
11
|
|
|
14
|
-
#include "monitoring/
|
|
12
|
+
#include "monitoring/statistics_impl.h"
|
|
15
13
|
#include "port/port.h"
|
|
16
14
|
#include "rocksdb/system_clock.h"
|
|
17
15
|
#include "test_util/sync_point.h"
|
|
18
16
|
#include "util/aligned_buffer.h"
|
|
17
|
+
#include "util/rate_limiter_impl.h"
|
|
19
18
|
|
|
20
19
|
namespace ROCKSDB_NAMESPACE {
|
|
21
20
|
size_t RateLimiter::RequestToken(size_t bytes, size_t alignment,
|
|
@@ -38,11 +37,10 @@ size_t RateLimiter::RequestToken(size_t bytes, size_t alignment,
|
|
|
38
37
|
// Pending request
|
|
39
38
|
struct GenericRateLimiter::Req {
|
|
40
39
|
explicit Req(int64_t _bytes, port::Mutex* _mu)
|
|
41
|
-
: request_bytes(_bytes), bytes(_bytes), cv(_mu)
|
|
40
|
+
: request_bytes(_bytes), bytes(_bytes), cv(_mu) {}
|
|
42
41
|
int64_t request_bytes;
|
|
43
42
|
int64_t bytes;
|
|
44
43
|
port::CondVar cv;
|
|
45
|
-
bool granted;
|
|
46
44
|
};
|
|
47
45
|
|
|
48
46
|
GenericRateLimiter::GenericRateLimiter(
|
|
@@ -137,12 +135,14 @@ void GenericRateLimiter::Request(int64_t bytes, const Env::IOPriority pri,
|
|
|
137
135
|
|
|
138
136
|
++total_requests_[pri];
|
|
139
137
|
|
|
140
|
-
if (available_bytes_
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
138
|
+
if (available_bytes_ > 0) {
|
|
139
|
+
int64_t bytes_through = std::min(available_bytes_, bytes);
|
|
140
|
+
total_bytes_through_[pri] += bytes_through;
|
|
141
|
+
available_bytes_ -= bytes_through;
|
|
142
|
+
bytes -= bytes_through;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (bytes == 0) {
|
|
146
146
|
return;
|
|
147
147
|
}
|
|
148
148
|
|
|
@@ -179,7 +179,7 @@ void GenericRateLimiter::Request(int64_t bytes, const Env::IOPriority pri,
|
|
|
179
179
|
// Whichever thread reaches here first performs duty (2) as described
|
|
180
180
|
// above.
|
|
181
181
|
RefillBytesAndGrantRequestsLocked();
|
|
182
|
-
if (r.
|
|
182
|
+
if (r.request_bytes == 0) {
|
|
183
183
|
// If there is any remaining requests, make sure there exists at least
|
|
184
184
|
// one candidate is awake for future duties by signaling a front request
|
|
185
185
|
// of a queue.
|
|
@@ -202,13 +202,13 @@ void GenericRateLimiter::Request(int64_t bytes, const Env::IOPriority pri,
|
|
|
202
202
|
++num_found;
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
|
-
if (r.
|
|
205
|
+
if (r.request_bytes == 0) {
|
|
206
206
|
assert(num_found == 0);
|
|
207
207
|
} else {
|
|
208
208
|
assert(num_found == 1);
|
|
209
209
|
}
|
|
210
210
|
#endif // NDEBUG
|
|
211
|
-
} while (!stop_ &&
|
|
211
|
+
} while (!stop_ && r.request_bytes > 0);
|
|
212
212
|
|
|
213
213
|
if (stop_) {
|
|
214
214
|
// It is now in the clean-up of ~GenericRateLimiter().
|
|
@@ -265,9 +265,8 @@ void GenericRateLimiter::RefillBytesAndGrantRequestsLocked() {
|
|
|
265
265
|
// Carry over the left over quota from the last period
|
|
266
266
|
auto refill_bytes_per_period =
|
|
267
267
|
refill_bytes_per_period_.load(std::memory_order_relaxed);
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
}
|
|
268
|
+
assert(available_bytes_ == 0);
|
|
269
|
+
available_bytes_ = refill_bytes_per_period;
|
|
271
270
|
|
|
272
271
|
std::vector<Env::IOPriority> pri_iteration_order =
|
|
273
272
|
GeneratePriorityIterationOrderLocked();
|
|
@@ -292,7 +291,6 @@ void GenericRateLimiter::RefillBytesAndGrantRequestsLocked() {
|
|
|
292
291
|
total_bytes_through_[current_pri] += next_req->bytes;
|
|
293
292
|
queue->pop_front();
|
|
294
293
|
|
|
295
|
-
next_req->granted = true;
|
|
296
294
|
// Quota granted, signal the thread to exit
|
|
297
295
|
next_req->cv.Signal();
|
|
298
296
|
}
|