rocksdb-native 2.6.2 → 2.6.4

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.
Files changed (956) hide show
  1. package/CMakeLists.txt +29 -17
  2. package/binding.js +1 -1
  3. package/package.json +7 -4
  4. package/prebuilds/darwin-arm64/rocksdb-native.bare +0 -0
  5. package/prebuilds/darwin-arm64/rocksdb-native.node +0 -0
  6. package/prebuilds/darwin-x64/rocksdb-native.bare +0 -0
  7. package/prebuilds/darwin-x64/rocksdb-native.node +0 -0
  8. package/prebuilds/ios-arm64/rocksdb-native.bare +0 -0
  9. package/prebuilds/ios-arm64-simulator/rocksdb-native.bare +0 -0
  10. package/prebuilds/ios-x64-simulator/rocksdb-native.bare +0 -0
  11. package/prebuilds/linux-arm64/rocksdb-native.bare +0 -0
  12. package/prebuilds/linux-arm64/rocksdb-native.node +0 -0
  13. package/prebuilds/linux-x64/rocksdb-native.bare +0 -0
  14. package/prebuilds/linux-x64/rocksdb-native.node +0 -0
  15. package/prebuilds/win32-arm64/rocksdb-native.bare +0 -0
  16. package/prebuilds/win32-arm64/rocksdb-native.node +0 -0
  17. package/prebuilds/win32-x64/rocksdb-native.bare +0 -0
  18. package/prebuilds/win32-x64/rocksdb-native.node +0 -0
  19. package/vendor/librocksdb/CMakeLists.txt +0 -94
  20. package/vendor/librocksdb/LICENSE +0 -201
  21. package/vendor/librocksdb/NOTICE +0 -13
  22. package/vendor/librocksdb/README.md +0 -11
  23. package/vendor/librocksdb/include/rocksdb.h +0 -294
  24. package/vendor/librocksdb/src/rocksdb.cc +0 -714
  25. package/vendor/librocksdb/vendor/rocksdb/CMakeLists.txt +0 -1642
  26. package/vendor/librocksdb/vendor/rocksdb/cache/cache.cc +0 -193
  27. package/vendor/librocksdb/vendor/rocksdb/cache/cache_bench.cc +0 -20
  28. package/vendor/librocksdb/vendor/rocksdb/cache/cache_bench_tool.cc +0 -1177
  29. package/vendor/librocksdb/vendor/rocksdb/cache/cache_entry_roles.cc +0 -104
  30. package/vendor/librocksdb/vendor/rocksdb/cache/cache_entry_roles.h +0 -20
  31. package/vendor/librocksdb/vendor/rocksdb/cache/cache_entry_stats.h +0 -182
  32. package/vendor/librocksdb/vendor/rocksdb/cache/cache_helpers.cc +0 -41
  33. package/vendor/librocksdb/vendor/rocksdb/cache/cache_helpers.h +0 -139
  34. package/vendor/librocksdb/vendor/rocksdb/cache/cache_key.cc +0 -364
  35. package/vendor/librocksdb/vendor/rocksdb/cache/cache_key.h +0 -143
  36. package/vendor/librocksdb/vendor/rocksdb/cache/cache_reservation_manager.cc +0 -184
  37. package/vendor/librocksdb/vendor/rocksdb/cache/cache_reservation_manager.h +0 -318
  38. package/vendor/librocksdb/vendor/rocksdb/cache/charged_cache.cc +0 -111
  39. package/vendor/librocksdb/vendor/rocksdb/cache/charged_cache.h +0 -61
  40. package/vendor/librocksdb/vendor/rocksdb/cache/clock_cache.cc +0 -3657
  41. package/vendor/librocksdb/vendor/rocksdb/cache/clock_cache.h +0 -1165
  42. package/vendor/librocksdb/vendor/rocksdb/cache/compressed_secondary_cache.cc +0 -414
  43. package/vendor/librocksdb/vendor/rocksdb/cache/compressed_secondary_cache.h +0 -151
  44. package/vendor/librocksdb/vendor/rocksdb/cache/lru_cache.cc +0 -726
  45. package/vendor/librocksdb/vendor/rocksdb/cache/lru_cache.h +0 -467
  46. package/vendor/librocksdb/vendor/rocksdb/cache/secondary_cache.cc +0 -12
  47. package/vendor/librocksdb/vendor/rocksdb/cache/secondary_cache_adapter.cc +0 -743
  48. package/vendor/librocksdb/vendor/rocksdb/cache/secondary_cache_adapter.h +0 -103
  49. package/vendor/librocksdb/vendor/rocksdb/cache/sharded_cache.cc +0 -147
  50. package/vendor/librocksdb/vendor/rocksdb/cache/sharded_cache.h +0 -322
  51. package/vendor/librocksdb/vendor/rocksdb/cache/tiered_secondary_cache.cc +0 -125
  52. package/vendor/librocksdb/vendor/rocksdb/cache/tiered_secondary_cache.h +0 -158
  53. package/vendor/librocksdb/vendor/rocksdb/cache/typed_cache.h +0 -380
  54. package/vendor/librocksdb/vendor/rocksdb/cmake/RocksDBConfig.cmake.in +0 -54
  55. package/vendor/librocksdb/vendor/rocksdb/db/arena_wrapped_db_iter.cc +0 -182
  56. package/vendor/librocksdb/vendor/rocksdb/db/arena_wrapped_db_iter.h +0 -128
  57. package/vendor/librocksdb/vendor/rocksdb/db/attribute_group_iterator_impl.cc +0 -20
  58. package/vendor/librocksdb/vendor/rocksdb/db/attribute_group_iterator_impl.h +0 -83
  59. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_constants.h +0 -16
  60. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_contents.cc +0 -42
  61. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_contents.h +0 -60
  62. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_counting_iterator.h +0 -150
  63. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_fetcher.cc +0 -34
  64. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_fetcher.h +0 -37
  65. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_file_addition.cc +0 -156
  66. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_file_addition.h +0 -67
  67. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_file_builder.cc +0 -429
  68. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_file_builder.h +0 -113
  69. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_file_cache.cc +0 -101
  70. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_file_cache.h +0 -56
  71. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_file_completion_callback.h +0 -84
  72. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_file_garbage.cc +0 -134
  73. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_file_garbage.h +0 -57
  74. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_file_meta.cc +0 -62
  75. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_file_meta.h +0 -170
  76. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_file_reader.cc +0 -622
  77. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_file_reader.h +0 -111
  78. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_garbage_meter.cc +0 -100
  79. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_garbage_meter.h +0 -102
  80. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_index.h +0 -187
  81. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_log_format.cc +0 -143
  82. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_log_format.h +0 -164
  83. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_log_sequential_reader.cc +0 -133
  84. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_log_sequential_reader.h +0 -83
  85. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_log_writer.cc +0 -207
  86. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_log_writer.h +0 -87
  87. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_read_request.h +0 -58
  88. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_source.cc +0 -459
  89. package/vendor/librocksdb/vendor/rocksdb/db/blob/blob_source.h +0 -161
  90. package/vendor/librocksdb/vendor/rocksdb/db/blob/prefetch_buffer_collection.cc +0 -23
  91. package/vendor/librocksdb/vendor/rocksdb/db/blob/prefetch_buffer_collection.h +0 -38
  92. package/vendor/librocksdb/vendor/rocksdb/db/builder.cc +0 -517
  93. package/vendor/librocksdb/vendor/rocksdb/db/builder.h +0 -76
  94. package/vendor/librocksdb/vendor/rocksdb/db/c.cc +0 -7133
  95. package/vendor/librocksdb/vendor/rocksdb/db/c_test.c +0 -4052
  96. package/vendor/librocksdb/vendor/rocksdb/db/coalescing_iterator.cc +0 -47
  97. package/vendor/librocksdb/vendor/rocksdb/db/coalescing_iterator.h +0 -79
  98. package/vendor/librocksdb/vendor/rocksdb/db/column_family.cc +0 -1859
  99. package/vendor/librocksdb/vendor/rocksdb/db/column_family.h +0 -918
  100. package/vendor/librocksdb/vendor/rocksdb/db/compaction/clipping_iterator.h +0 -281
  101. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction.cc +0 -995
  102. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction.h +0 -602
  103. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_iteration_stats.h +0 -56
  104. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_iterator.cc +0 -1523
  105. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_iterator.h +0 -557
  106. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_job.cc +0 -2155
  107. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_job.h +0 -520
  108. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_outputs.cc +0 -802
  109. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_outputs.h +0 -411
  110. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_picker.cc +0 -1245
  111. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_picker.h +0 -322
  112. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_picker_fifo.cc +0 -478
  113. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_picker_fifo.h +0 -61
  114. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_picker_level.cc +0 -977
  115. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_picker_level.h +0 -32
  116. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_picker_universal.cc +0 -1578
  117. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_picker_universal.h +0 -29
  118. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_service_job.cc +0 -835
  119. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_state.cc +0 -46
  120. package/vendor/librocksdb/vendor/rocksdb/db/compaction/compaction_state.h +0 -42
  121. package/vendor/librocksdb/vendor/rocksdb/db/compaction/file_pri.h +0 -94
  122. package/vendor/librocksdb/vendor/rocksdb/db/compaction/sst_partitioner.cc +0 -83
  123. package/vendor/librocksdb/vendor/rocksdb/db/compaction/subcompaction_state.cc +0 -106
  124. package/vendor/librocksdb/vendor/rocksdb/db/compaction/subcompaction_state.h +0 -220
  125. package/vendor/librocksdb/vendor/rocksdb/db/convenience.cc +0 -101
  126. package/vendor/librocksdb/vendor/rocksdb/db/convenience_impl.h +0 -15
  127. package/vendor/librocksdb/vendor/rocksdb/db/db_filesnapshot.cc +0 -506
  128. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/compacted_db_impl.cc +0 -275
  129. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/compacted_db_impl.h +0 -147
  130. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl.cc +0 -6767
  131. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl.h +0 -3056
  132. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_compaction_flush.cc +0 -4390
  133. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_debug.cc +0 -327
  134. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_experimental.cc +0 -164
  135. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_files.cc +0 -1032
  136. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_follower.cc +0 -348
  137. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_follower.h +0 -54
  138. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_open.cc +0 -2325
  139. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_readonly.cc +0 -376
  140. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_readonly.h +0 -179
  141. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_secondary.cc +0 -1025
  142. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_secondary.h +0 -322
  143. package/vendor/librocksdb/vendor/rocksdb/db/db_impl/db_impl_write.cc +0 -2624
  144. package/vendor/librocksdb/vendor/rocksdb/db/db_info_dumper.cc +0 -165
  145. package/vendor/librocksdb/vendor/rocksdb/db/db_info_dumper.h +0 -15
  146. package/vendor/librocksdb/vendor/rocksdb/db/db_iter.cc +0 -1774
  147. package/vendor/librocksdb/vendor/rocksdb/db/db_iter.h +0 -444
  148. package/vendor/librocksdb/vendor/rocksdb/db/db_test2.cc +0 -7839
  149. package/vendor/librocksdb/vendor/rocksdb/db/db_test_util.cc +0 -1800
  150. package/vendor/librocksdb/vendor/rocksdb/db/db_test_util.h +0 -1427
  151. package/vendor/librocksdb/vendor/rocksdb/db/db_with_timestamp_test_util.cc +0 -96
  152. package/vendor/librocksdb/vendor/rocksdb/db/db_with_timestamp_test_util.h +0 -126
  153. package/vendor/librocksdb/vendor/rocksdb/db/dbformat.cc +0 -282
  154. package/vendor/librocksdb/vendor/rocksdb/db/dbformat.h +0 -1101
  155. package/vendor/librocksdb/vendor/rocksdb/db/error_handler.cc +0 -806
  156. package/vendor/librocksdb/vendor/rocksdb/db/error_handler.h +0 -149
  157. package/vendor/librocksdb/vendor/rocksdb/db/event_helpers.cc +0 -332
  158. package/vendor/librocksdb/vendor/rocksdb/db/event_helpers.h +0 -78
  159. package/vendor/librocksdb/vendor/rocksdb/db/experimental.cc +0 -1212
  160. package/vendor/librocksdb/vendor/rocksdb/db/external_sst_file_ingestion_job.cc +0 -1249
  161. package/vendor/librocksdb/vendor/rocksdb/db/external_sst_file_ingestion_job.h +0 -268
  162. package/vendor/librocksdb/vendor/rocksdb/db/file_indexer.cc +0 -216
  163. package/vendor/librocksdb/vendor/rocksdb/db/file_indexer.h +0 -140
  164. package/vendor/librocksdb/vendor/rocksdb/db/flush_job.cc +0 -1217
  165. package/vendor/librocksdb/vendor/rocksdb/db/flush_job.h +0 -240
  166. package/vendor/librocksdb/vendor/rocksdb/db/flush_scheduler.cc +0 -86
  167. package/vendor/librocksdb/vendor/rocksdb/db/flush_scheduler.h +0 -55
  168. package/vendor/librocksdb/vendor/rocksdb/db/forward_iterator.cc +0 -1082
  169. package/vendor/librocksdb/vendor/rocksdb/db/forward_iterator.h +0 -166
  170. package/vendor/librocksdb/vendor/rocksdb/db/forward_iterator_bench.cc +0 -378
  171. package/vendor/librocksdb/vendor/rocksdb/db/history_trimming_iterator.h +0 -95
  172. package/vendor/librocksdb/vendor/rocksdb/db/import_column_family_job.cc +0 -463
  173. package/vendor/librocksdb/vendor/rocksdb/db/import_column_family_job.h +0 -91
  174. package/vendor/librocksdb/vendor/rocksdb/db/internal_stats.cc +0 -2198
  175. package/vendor/librocksdb/vendor/rocksdb/db/internal_stats.h +0 -896
  176. package/vendor/librocksdb/vendor/rocksdb/db/job_context.h +0 -254
  177. package/vendor/librocksdb/vendor/rocksdb/db/kv_checksum.h +0 -484
  178. package/vendor/librocksdb/vendor/rocksdb/db/log_format.h +0 -55
  179. package/vendor/librocksdb/vendor/rocksdb/db/log_reader.cc +0 -958
  180. package/vendor/librocksdb/vendor/rocksdb/db/log_reader.h +0 -245
  181. package/vendor/librocksdb/vendor/rocksdb/db/log_writer.cc +0 -355
  182. package/vendor/librocksdb/vendor/rocksdb/db/log_writer.h +0 -151
  183. package/vendor/librocksdb/vendor/rocksdb/db/logs_with_prep_tracker.cc +0 -67
  184. package/vendor/librocksdb/vendor/rocksdb/db/logs_with_prep_tracker.h +0 -62
  185. package/vendor/librocksdb/vendor/rocksdb/db/lookup_key.h +0 -68
  186. package/vendor/librocksdb/vendor/rocksdb/db/malloc_stats.cc +0 -52
  187. package/vendor/librocksdb/vendor/rocksdb/db/malloc_stats.h +0 -22
  188. package/vendor/librocksdb/vendor/rocksdb/db/memtable.cc +0 -1684
  189. package/vendor/librocksdb/vendor/rocksdb/db/memtable.h +0 -712
  190. package/vendor/librocksdb/vendor/rocksdb/db/memtable_list.cc +0 -1028
  191. package/vendor/librocksdb/vendor/rocksdb/db/memtable_list.h +0 -514
  192. package/vendor/librocksdb/vendor/rocksdb/db/merge_context.h +0 -150
  193. package/vendor/librocksdb/vendor/rocksdb/db/merge_helper.cc +0 -699
  194. package/vendor/librocksdb/vendor/rocksdb/db/merge_helper.h +0 -318
  195. package/vendor/librocksdb/vendor/rocksdb/db/merge_operator.cc +0 -167
  196. package/vendor/librocksdb/vendor/rocksdb/db/multi_cf_iterator_impl.h +0 -296
  197. package/vendor/librocksdb/vendor/rocksdb/db/output_validator.cc +0 -29
  198. package/vendor/librocksdb/vendor/rocksdb/db/output_validator.h +0 -45
  199. package/vendor/librocksdb/vendor/rocksdb/db/periodic_task_scheduler.cc +0 -110
  200. package/vendor/librocksdb/vendor/rocksdb/db/periodic_task_scheduler.h +0 -108
  201. package/vendor/librocksdb/vendor/rocksdb/db/pinned_iterators_manager.h +0 -92
  202. package/vendor/librocksdb/vendor/rocksdb/db/post_memtable_callback.h +0 -25
  203. package/vendor/librocksdb/vendor/rocksdb/db/pre_release_callback.h +0 -37
  204. package/vendor/librocksdb/vendor/rocksdb/db/range_del_aggregator.cc +0 -553
  205. package/vendor/librocksdb/vendor/rocksdb/db/range_del_aggregator.h +0 -481
  206. package/vendor/librocksdb/vendor/rocksdb/db/range_del_aggregator_bench.cc +0 -280
  207. package/vendor/librocksdb/vendor/rocksdb/db/range_tombstone_fragmenter.cc +0 -515
  208. package/vendor/librocksdb/vendor/rocksdb/db/range_tombstone_fragmenter.h +0 -361
  209. package/vendor/librocksdb/vendor/rocksdb/db/read_callback.h +0 -54
  210. package/vendor/librocksdb/vendor/rocksdb/db/repair.cc +0 -864
  211. package/vendor/librocksdb/vendor/rocksdb/db/seqno_to_time_mapping.cc +0 -573
  212. package/vendor/librocksdb/vendor/rocksdb/db/seqno_to_time_mapping.h +0 -307
  213. package/vendor/librocksdb/vendor/rocksdb/db/snapshot_checker.h +0 -58
  214. package/vendor/librocksdb/vendor/rocksdb/db/snapshot_impl.cc +0 -25
  215. package/vendor/librocksdb/vendor/rocksdb/db/snapshot_impl.h +0 -239
  216. package/vendor/librocksdb/vendor/rocksdb/db/table_cache.cc +0 -745
  217. package/vendor/librocksdb/vendor/rocksdb/db/table_cache.h +0 -298
  218. package/vendor/librocksdb/vendor/rocksdb/db/table_cache_sync_and_async.h +0 -135
  219. package/vendor/librocksdb/vendor/rocksdb/db/table_properties_collector.cc +0 -74
  220. package/vendor/librocksdb/vendor/rocksdb/db/table_properties_collector.h +0 -185
  221. package/vendor/librocksdb/vendor/rocksdb/db/transaction_log_impl.cc +0 -296
  222. package/vendor/librocksdb/vendor/rocksdb/db/transaction_log_impl.h +0 -128
  223. package/vendor/librocksdb/vendor/rocksdb/db/trim_history_scheduler.cc +0 -54
  224. package/vendor/librocksdb/vendor/rocksdb/db/trim_history_scheduler.h +0 -46
  225. package/vendor/librocksdb/vendor/rocksdb/db/version_builder.cc +0 -1431
  226. package/vendor/librocksdb/vendor/rocksdb/db/version_builder.h +0 -93
  227. package/vendor/librocksdb/vendor/rocksdb/db/version_edit.cc +0 -1119
  228. package/vendor/librocksdb/vendor/rocksdb/db/version_edit.h +0 -769
  229. package/vendor/librocksdb/vendor/rocksdb/db/version_edit_handler.cc +0 -1264
  230. package/vendor/librocksdb/vendor/rocksdb/db/version_edit_handler.h +0 -390
  231. package/vendor/librocksdb/vendor/rocksdb/db/version_set.cc +0 -7562
  232. package/vendor/librocksdb/vendor/rocksdb/db/version_set.h +0 -1799
  233. package/vendor/librocksdb/vendor/rocksdb/db/version_set_sync_and_async.h +0 -169
  234. package/vendor/librocksdb/vendor/rocksdb/db/version_util.h +0 -77
  235. package/vendor/librocksdb/vendor/rocksdb/db/wal_edit.cc +0 -211
  236. package/vendor/librocksdb/vendor/rocksdb/db/wal_edit.h +0 -177
  237. package/vendor/librocksdb/vendor/rocksdb/db/wal_manager.cc +0 -539
  238. package/vendor/librocksdb/vendor/rocksdb/db/wal_manager.h +0 -138
  239. package/vendor/librocksdb/vendor/rocksdb/db/wide/wide_column_serialization.cc +0 -166
  240. package/vendor/librocksdb/vendor/rocksdb/db/wide/wide_column_serialization.h +0 -57
  241. package/vendor/librocksdb/vendor/rocksdb/db/wide/wide_columns.cc +0 -22
  242. package/vendor/librocksdb/vendor/rocksdb/db/wide/wide_columns_helper.cc +0 -52
  243. package/vendor/librocksdb/vendor/rocksdb/db/wide/wide_columns_helper.h +0 -40
  244. package/vendor/librocksdb/vendor/rocksdb/db/write_batch.cc +0 -3394
  245. package/vendor/librocksdb/vendor/rocksdb/db/write_batch_base.cc +0 -94
  246. package/vendor/librocksdb/vendor/rocksdb/db/write_batch_internal.h +0 -408
  247. package/vendor/librocksdb/vendor/rocksdb/db/write_callback.h +0 -27
  248. package/vendor/librocksdb/vendor/rocksdb/db/write_controller.cc +0 -121
  249. package/vendor/librocksdb/vendor/rocksdb/db/write_controller.h +0 -148
  250. package/vendor/librocksdb/vendor/rocksdb/db/write_stall_stats.cc +0 -179
  251. package/vendor/librocksdb/vendor/rocksdb/db/write_stall_stats.h +0 -47
  252. package/vendor/librocksdb/vendor/rocksdb/db/write_thread.cc +0 -931
  253. package/vendor/librocksdb/vendor/rocksdb/db/write_thread.h +0 -498
  254. package/vendor/librocksdb/vendor/rocksdb/env/composite_env.cc +0 -534
  255. package/vendor/librocksdb/vendor/rocksdb/env/composite_env_wrapper.h +0 -399
  256. package/vendor/librocksdb/vendor/rocksdb/env/emulated_clock.h +0 -114
  257. package/vendor/librocksdb/vendor/rocksdb/env/env.cc +0 -1253
  258. package/vendor/librocksdb/vendor/rocksdb/env/env_chroot.cc +0 -149
  259. package/vendor/librocksdb/vendor/rocksdb/env/env_chroot.h +0 -55
  260. package/vendor/librocksdb/vendor/rocksdb/env/env_encryption.cc +0 -1192
  261. package/vendor/librocksdb/vendor/rocksdb/env/env_encryption_ctr.h +0 -97
  262. package/vendor/librocksdb/vendor/rocksdb/env/env_posix.cc +0 -530
  263. package/vendor/librocksdb/vendor/rocksdb/env/file_system.cc +0 -278
  264. package/vendor/librocksdb/vendor/rocksdb/env/file_system_tracer.cc +0 -564
  265. package/vendor/librocksdb/vendor/rocksdb/env/file_system_tracer.h +0 -461
  266. package/vendor/librocksdb/vendor/rocksdb/env/fs_on_demand.cc +0 -331
  267. package/vendor/librocksdb/vendor/rocksdb/env/fs_on_demand.h +0 -139
  268. package/vendor/librocksdb/vendor/rocksdb/env/fs_posix.cc +0 -1285
  269. package/vendor/librocksdb/vendor/rocksdb/env/fs_readonly.h +0 -105
  270. package/vendor/librocksdb/vendor/rocksdb/env/fs_remap.cc +0 -341
  271. package/vendor/librocksdb/vendor/rocksdb/env/fs_remap.h +0 -137
  272. package/vendor/librocksdb/vendor/rocksdb/env/io_posix.cc +0 -1738
  273. package/vendor/librocksdb/vendor/rocksdb/env/io_posix.h +0 -517
  274. package/vendor/librocksdb/vendor/rocksdb/env/mock_env.cc +0 -1058
  275. package/vendor/librocksdb/vendor/rocksdb/env/mock_env.h +0 -144
  276. package/vendor/librocksdb/vendor/rocksdb/env/unique_id_gen.cc +0 -243
  277. package/vendor/librocksdb/vendor/rocksdb/env/unique_id_gen.h +0 -119
  278. package/vendor/librocksdb/vendor/rocksdb/file/delete_scheduler.cc +0 -513
  279. package/vendor/librocksdb/vendor/rocksdb/file/delete_scheduler.h +0 -200
  280. package/vendor/librocksdb/vendor/rocksdb/file/file_prefetch_buffer.cc +0 -992
  281. package/vendor/librocksdb/vendor/rocksdb/file/file_prefetch_buffer.h +0 -629
  282. package/vendor/librocksdb/vendor/rocksdb/file/file_util.cc +0 -308
  283. package/vendor/librocksdb/vendor/rocksdb/file/file_util.h +0 -123
  284. package/vendor/librocksdb/vendor/rocksdb/file/filename.cc +0 -538
  285. package/vendor/librocksdb/vendor/rocksdb/file/filename.h +0 -186
  286. package/vendor/librocksdb/vendor/rocksdb/file/line_file_reader.cc +0 -73
  287. package/vendor/librocksdb/vendor/rocksdb/file/line_file_reader.h +0 -60
  288. package/vendor/librocksdb/vendor/rocksdb/file/random_access_file_reader.cc +0 -639
  289. package/vendor/librocksdb/vendor/rocksdb/file/random_access_file_reader.h +0 -197
  290. package/vendor/librocksdb/vendor/rocksdb/file/read_write_util.cc +0 -33
  291. package/vendor/librocksdb/vendor/rocksdb/file/read_write_util.h +0 -31
  292. package/vendor/librocksdb/vendor/rocksdb/file/readahead_file_info.h +0 -33
  293. package/vendor/librocksdb/vendor/rocksdb/file/readahead_raf.cc +0 -169
  294. package/vendor/librocksdb/vendor/rocksdb/file/readahead_raf.h +0 -29
  295. package/vendor/librocksdb/vendor/rocksdb/file/sequence_file_reader.cc +0 -324
  296. package/vendor/librocksdb/vendor/rocksdb/file/sequence_file_reader.h +0 -127
  297. package/vendor/librocksdb/vendor/rocksdb/file/sst_file_manager_impl.cc +0 -525
  298. package/vendor/librocksdb/vendor/rocksdb/file/sst_file_manager_impl.h +0 -220
  299. package/vendor/librocksdb/vendor/rocksdb/file/writable_file_writer.cc +0 -1007
  300. package/vendor/librocksdb/vendor/rocksdb/file/writable_file_writer.h +0 -370
  301. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/advanced_cache.h +0 -665
  302. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/advanced_options.h +0 -1101
  303. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/attribute_groups.h +0 -114
  304. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/block_cache_trace_writer.h +0 -149
  305. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/c.h +0 -3122
  306. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/cache.h +0 -579
  307. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/cache_bench_tool.h +0 -14
  308. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/cleanable.h +0 -128
  309. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/compaction_filter.h +0 -374
  310. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/compaction_job_stats.h +0 -112
  311. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/comparator.h +0 -231
  312. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/compression_type.h +0 -186
  313. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/concurrent_task_limiter.h +0 -51
  314. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/configurable.h +0 -390
  315. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/convenience.h +0 -466
  316. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/customizable.h +0 -229
  317. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/data_structure.h +0 -186
  318. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/db.h +0 -2174
  319. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/db_bench_tool.h +0 -11
  320. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/db_dump_tool.h +0 -43
  321. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/db_stress_tool.h +0 -11
  322. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/env.h +0 -1920
  323. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/env_encryption.h +0 -363
  324. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/experimental.h +0 -492
  325. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/file_checksum.h +0 -146
  326. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/file_system.h +0 -1961
  327. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/filter_policy.h +0 -211
  328. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/flush_block_policy.h +0 -75
  329. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/functor_wrapper.h +0 -56
  330. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/io_status.h +0 -244
  331. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/iostats_context.h +0 -98
  332. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/iterator.h +0 -104
  333. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/iterator_base.h +0 -90
  334. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/ldb_tool.h +0 -42
  335. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/listener.h +0 -869
  336. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/memory_allocator.h +0 -87
  337. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/memtablerep.h +0 -421
  338. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/merge_operator.h +0 -337
  339. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/metadata.h +0 -258
  340. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/options.h +0 -2339
  341. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/perf_context.h +0 -319
  342. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/perf_level.h +0 -39
  343. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/persistent_cache.h +0 -74
  344. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/port_defs.h +0 -26
  345. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/rate_limiter.h +0 -172
  346. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/rocksdb_namespace.h +0 -16
  347. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/secondary_cache.h +0 -220
  348. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/slice.h +0 -264
  349. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/slice_transform.h +0 -135
  350. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/snapshot.h +0 -53
  351. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/sst_dump_tool.h +0 -17
  352. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/sst_file_manager.h +0 -139
  353. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/sst_file_reader.h +0 -61
  354. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/sst_file_writer.h +0 -203
  355. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/sst_partitioner.h +0 -142
  356. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/statistics.h +0 -794
  357. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/stats_history.h +0 -70
  358. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/status.h +0 -609
  359. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/system_clock.h +0 -129
  360. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/table.h +0 -938
  361. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/table_properties.h +0 -380
  362. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/table_reader_caller.h +0 -41
  363. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/thread_status.h +0 -197
  364. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/threadpool.h +0 -67
  365. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/trace_reader_writer.h +0 -52
  366. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/trace_record.h +0 -248
  367. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/trace_record_result.h +0 -187
  368. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/transaction_log.h +0 -128
  369. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/types.h +0 -113
  370. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/unique_id.h +0 -55
  371. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/universal_compaction.h +0 -127
  372. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/user_write_callback.h +0 -29
  373. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/agg_merge.h +0 -138
  374. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/backup_engine.h +0 -689
  375. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/cache_dump_load.h +0 -144
  376. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/checkpoint.h +0 -65
  377. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/convenience.h +0 -10
  378. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/customizable_util.h +0 -321
  379. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/db_ttl.h +0 -70
  380. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/debug.h +0 -46
  381. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/env_mirror.h +0 -179
  382. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/info_log_finder.h +0 -19
  383. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/ldb_cmd.h +0 -338
  384. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +0 -75
  385. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/leveldb_options.h +0 -145
  386. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +0 -43
  387. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +0 -55
  388. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/memory_util.h +0 -48
  389. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/object_registry.h +0 -583
  390. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +0 -129
  391. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/option_change_migration.h +0 -24
  392. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/options_type.h +0 -1222
  393. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/options_util.h +0 -105
  394. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/replayer.h +0 -85
  395. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/sim_cache.h +0 -92
  396. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/stackable_db.h +0 -593
  397. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +0 -133
  398. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/transaction.h +0 -765
  399. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/transaction_db.h +0 -510
  400. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +0 -89
  401. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/types_util.h +0 -36
  402. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +0 -402
  403. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/version.h +0 -43
  404. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/wal_filter.h +0 -111
  405. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/wide_columns.h +0 -303
  406. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/write_batch.h +0 -518
  407. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/write_batch_base.h +0 -165
  408. package/vendor/librocksdb/vendor/rocksdb/include/rocksdb/write_buffer_manager.h +0 -183
  409. package/vendor/librocksdb/vendor/rocksdb/logging/auto_roll_logger.cc +0 -366
  410. package/vendor/librocksdb/vendor/rocksdb/logging/auto_roll_logger.h +0 -165
  411. package/vendor/librocksdb/vendor/rocksdb/logging/env_logger.h +0 -195
  412. package/vendor/librocksdb/vendor/rocksdb/logging/event_logger.cc +0 -68
  413. package/vendor/librocksdb/vendor/rocksdb/logging/event_logger.h +0 -202
  414. package/vendor/librocksdb/vendor/rocksdb/logging/log_buffer.cc +0 -91
  415. package/vendor/librocksdb/vendor/rocksdb/logging/log_buffer.h +0 -57
  416. package/vendor/librocksdb/vendor/rocksdb/logging/logging.h +0 -62
  417. package/vendor/librocksdb/vendor/rocksdb/memory/allocator.h +0 -58
  418. package/vendor/librocksdb/vendor/rocksdb/memory/arena.cc +0 -170
  419. package/vendor/librocksdb/vendor/rocksdb/memory/arena.h +0 -146
  420. package/vendor/librocksdb/vendor/rocksdb/memory/concurrent_arena.cc +0 -45
  421. package/vendor/librocksdb/vendor/rocksdb/memory/concurrent_arena.h +0 -215
  422. package/vendor/librocksdb/vendor/rocksdb/memory/jemalloc_nodump_allocator.cc +0 -304
  423. package/vendor/librocksdb/vendor/rocksdb/memory/jemalloc_nodump_allocator.h +0 -99
  424. package/vendor/librocksdb/vendor/rocksdb/memory/memkind_kmem_allocator.cc +0 -44
  425. package/vendor/librocksdb/vendor/rocksdb/memory/memkind_kmem_allocator.h +0 -43
  426. package/vendor/librocksdb/vendor/rocksdb/memory/memory_allocator.cc +0 -81
  427. package/vendor/librocksdb/vendor/rocksdb/memory/memory_allocator_impl.h +0 -47
  428. package/vendor/librocksdb/vendor/rocksdb/memory/memory_usage.h +0 -38
  429. package/vendor/librocksdb/vendor/rocksdb/memtable/alloc_tracker.cc +0 -63
  430. package/vendor/librocksdb/vendor/rocksdb/memtable/hash_linklist_rep.cc +0 -925
  431. package/vendor/librocksdb/vendor/rocksdb/memtable/hash_skiplist_rep.cc +0 -392
  432. package/vendor/librocksdb/vendor/rocksdb/memtable/inlineskiplist.h +0 -1051
  433. package/vendor/librocksdb/vendor/rocksdb/memtable/memtablerep_bench.cc +0 -687
  434. package/vendor/librocksdb/vendor/rocksdb/memtable/skiplist.h +0 -498
  435. package/vendor/librocksdb/vendor/rocksdb/memtable/skiplistrep.cc +0 -368
  436. package/vendor/librocksdb/vendor/rocksdb/memtable/stl_wrappers.h +0 -33
  437. package/vendor/librocksdb/vendor/rocksdb/memtable/vectorrep.cc +0 -307
  438. package/vendor/librocksdb/vendor/rocksdb/memtable/write_buffer_manager.cc +0 -185
  439. package/vendor/librocksdb/vendor/rocksdb/monitoring/file_read_sample.h +0 -23
  440. package/vendor/librocksdb/vendor/rocksdb/monitoring/histogram.cc +0 -280
  441. package/vendor/librocksdb/vendor/rocksdb/monitoring/histogram.h +0 -143
  442. package/vendor/librocksdb/vendor/rocksdb/monitoring/histogram_windowing.cc +0 -198
  443. package/vendor/librocksdb/vendor/rocksdb/monitoring/histogram_windowing.h +0 -84
  444. package/vendor/librocksdb/vendor/rocksdb/monitoring/in_memory_stats_history.cc +0 -50
  445. package/vendor/librocksdb/vendor/rocksdb/monitoring/in_memory_stats_history.h +0 -74
  446. package/vendor/librocksdb/vendor/rocksdb/monitoring/instrumented_mutex.cc +0 -90
  447. package/vendor/librocksdb/vendor/rocksdb/monitoring/instrumented_mutex.h +0 -126
  448. package/vendor/librocksdb/vendor/rocksdb/monitoring/iostats_context.cc +0 -78
  449. package/vendor/librocksdb/vendor/rocksdb/monitoring/iostats_context_imp.h +0 -62
  450. package/vendor/librocksdb/vendor/rocksdb/monitoring/perf_context.cc +0 -317
  451. package/vendor/librocksdb/vendor/rocksdb/monitoring/perf_context_imp.h +0 -103
  452. package/vendor/librocksdb/vendor/rocksdb/monitoring/perf_level.cc +0 -23
  453. package/vendor/librocksdb/vendor/rocksdb/monitoring/perf_level_imp.h +0 -14
  454. package/vendor/librocksdb/vendor/rocksdb/monitoring/perf_step_timer.h +0 -77
  455. package/vendor/librocksdb/vendor/rocksdb/monitoring/persistent_stats_history.cc +0 -173
  456. package/vendor/librocksdb/vendor/rocksdb/monitoring/persistent_stats_history.h +0 -83
  457. package/vendor/librocksdb/vendor/rocksdb/monitoring/statistics.cc +0 -561
  458. package/vendor/librocksdb/vendor/rocksdb/monitoring/statistics_impl.h +0 -143
  459. package/vendor/librocksdb/vendor/rocksdb/monitoring/thread_status_impl.cc +0 -163
  460. package/vendor/librocksdb/vendor/rocksdb/monitoring/thread_status_updater.cc +0 -328
  461. package/vendor/librocksdb/vendor/rocksdb/monitoring/thread_status_updater.h +0 -226
  462. package/vendor/librocksdb/vendor/rocksdb/monitoring/thread_status_updater_debug.cc +0 -43
  463. package/vendor/librocksdb/vendor/rocksdb/monitoring/thread_status_util.cc +0 -214
  464. package/vendor/librocksdb/vendor/rocksdb/monitoring/thread_status_util.h +0 -139
  465. package/vendor/librocksdb/vendor/rocksdb/monitoring/thread_status_util_debug.cc +0 -60
  466. package/vendor/librocksdb/vendor/rocksdb/options/cf_options.cc +0 -1218
  467. package/vendor/librocksdb/vendor/rocksdb/options/cf_options.h +0 -352
  468. package/vendor/librocksdb/vendor/rocksdb/options/configurable.cc +0 -720
  469. package/vendor/librocksdb/vendor/rocksdb/options/configurable_helper.h +0 -185
  470. package/vendor/librocksdb/vendor/rocksdb/options/configurable_test.h +0 -116
  471. package/vendor/librocksdb/vendor/rocksdb/options/customizable.cc +0 -133
  472. package/vendor/librocksdb/vendor/rocksdb/options/db_options.cc +0 -1113
  473. package/vendor/librocksdb/vendor/rocksdb/options/db_options.h +0 -160
  474. package/vendor/librocksdb/vendor/rocksdb/options/offpeak_time_info.cc +0 -59
  475. package/vendor/librocksdb/vendor/rocksdb/options/offpeak_time_info.h +0 -37
  476. package/vendor/librocksdb/vendor/rocksdb/options/options.cc +0 -717
  477. package/vendor/librocksdb/vendor/rocksdb/options/options_helper.cc +0 -1438
  478. package/vendor/librocksdb/vendor/rocksdb/options/options_helper.h +0 -115
  479. package/vendor/librocksdb/vendor/rocksdb/options/options_parser.cc +0 -745
  480. package/vendor/librocksdb/vendor/rocksdb/options/options_parser.h +0 -151
  481. package/vendor/librocksdb/vendor/rocksdb/port/jemalloc_helper.h +0 -107
  482. package/vendor/librocksdb/vendor/rocksdb/port/lang.h +0 -97
  483. package/vendor/librocksdb/vendor/rocksdb/port/likely.h +0 -18
  484. package/vendor/librocksdb/vendor/rocksdb/port/malloc.h +0 -17
  485. package/vendor/librocksdb/vendor/rocksdb/port/mmap.cc +0 -98
  486. package/vendor/librocksdb/vendor/rocksdb/port/mmap.h +0 -90
  487. package/vendor/librocksdb/vendor/rocksdb/port/port.h +0 -21
  488. package/vendor/librocksdb/vendor/rocksdb/port/port_dirent.h +0 -44
  489. package/vendor/librocksdb/vendor/rocksdb/port/port_example.h +0 -101
  490. package/vendor/librocksdb/vendor/rocksdb/port/port_posix.cc +0 -300
  491. package/vendor/librocksdb/vendor/rocksdb/port/port_posix.h +0 -246
  492. package/vendor/librocksdb/vendor/rocksdb/port/stack_trace.cc +0 -418
  493. package/vendor/librocksdb/vendor/rocksdb/port/stack_trace.h +0 -31
  494. package/vendor/librocksdb/vendor/rocksdb/port/sys_time.h +0 -63
  495. package/vendor/librocksdb/vendor/rocksdb/port/util_logger.h +0 -18
  496. package/vendor/librocksdb/vendor/rocksdb/port/win/env_default.cc +0 -45
  497. package/vendor/librocksdb/vendor/rocksdb/port/win/env_win.cc +0 -1436
  498. package/vendor/librocksdb/vendor/rocksdb/port/win/env_win.h +0 -305
  499. package/vendor/librocksdb/vendor/rocksdb/port/win/io_win.cc +0 -1101
  500. package/vendor/librocksdb/vendor/rocksdb/port/win/io_win.h +0 -504
  501. package/vendor/librocksdb/vendor/rocksdb/port/win/port_win.cc +0 -305
  502. package/vendor/librocksdb/vendor/rocksdb/port/win/port_win.h +0 -382
  503. package/vendor/librocksdb/vendor/rocksdb/port/win/win_jemalloc.cc +0 -80
  504. package/vendor/librocksdb/vendor/rocksdb/port/win/win_logger.cc +0 -192
  505. package/vendor/librocksdb/vendor/rocksdb/port/win/win_logger.h +0 -64
  506. package/vendor/librocksdb/vendor/rocksdb/port/win/win_thread.cc +0 -170
  507. package/vendor/librocksdb/vendor/rocksdb/port/win/win_thread.h +0 -117
  508. package/vendor/librocksdb/vendor/rocksdb/port/win/xpress_win.cc +0 -210
  509. package/vendor/librocksdb/vendor/rocksdb/port/win/xpress_win.h +0 -26
  510. package/vendor/librocksdb/vendor/rocksdb/port/xpress.h +0 -17
  511. package/vendor/librocksdb/vendor/rocksdb/rocksdb.pc.in +0 -10
  512. package/vendor/librocksdb/vendor/rocksdb/table/adaptive/adaptive_table_factory.cc +0 -119
  513. package/vendor/librocksdb/vendor/rocksdb/table/adaptive/adaptive_table_factory.h +0 -56
  514. package/vendor/librocksdb/vendor/rocksdb/table/block_based/binary_search_index_reader.cc +0 -73
  515. package/vendor/librocksdb/vendor/rocksdb/table/block_based/binary_search_index_reader.h +0 -48
  516. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block.cc +0 -1341
  517. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block.h +0 -969
  518. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_builder.cc +0 -2148
  519. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_builder.h +0 -208
  520. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_factory.cc +0 -980
  521. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_factory.h +0 -102
  522. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_iterator.cc +0 -893
  523. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_iterator.h +0 -445
  524. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_reader.cc +0 -3296
  525. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_reader.h +0 -785
  526. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_reader_impl.h +0 -205
  527. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +0 -819
  528. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_builder.cc +0 -266
  529. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_builder.h +0 -128
  530. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_cache.cc +0 -108
  531. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_cache.h +0 -190
  532. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_prefetcher.cc +0 -158
  533. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_prefetcher.h +0 -74
  534. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_prefix_index.cc +0 -226
  535. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_prefix_index.h +0 -70
  536. package/vendor/librocksdb/vendor/rocksdb/table/block_based/block_type.h +0 -34
  537. package/vendor/librocksdb/vendor/rocksdb/table/block_based/cachable_entry.h +0 -249
  538. package/vendor/librocksdb/vendor/rocksdb/table/block_based/data_block_footer.cc +0 -59
  539. package/vendor/librocksdb/vendor/rocksdb/table/block_based/data_block_footer.h +0 -25
  540. package/vendor/librocksdb/vendor/rocksdb/table/block_based/data_block_hash_index.cc +0 -94
  541. package/vendor/librocksdb/vendor/rocksdb/table/block_based/data_block_hash_index.h +0 -137
  542. package/vendor/librocksdb/vendor/rocksdb/table/block_based/filter_block.h +0 -189
  543. package/vendor/librocksdb/vendor/rocksdb/table/block_based/filter_block_reader_common.cc +0 -169
  544. package/vendor/librocksdb/vendor/rocksdb/table/block_based/filter_block_reader_common.h +0 -79
  545. package/vendor/librocksdb/vendor/rocksdb/table/block_based/filter_policy.cc +0 -1989
  546. package/vendor/librocksdb/vendor/rocksdb/table/block_based/filter_policy_internal.h +0 -341
  547. package/vendor/librocksdb/vendor/rocksdb/table/block_based/flush_block_policy.cc +0 -132
  548. package/vendor/librocksdb/vendor/rocksdb/table/block_based/flush_block_policy_impl.h +0 -40
  549. package/vendor/librocksdb/vendor/rocksdb/table/block_based/full_filter_block.cc +0 -297
  550. package/vendor/librocksdb/vendor/rocksdb/table/block_based/full_filter_block.h +0 -142
  551. package/vendor/librocksdb/vendor/rocksdb/table/block_based/hash_index_reader.cc +0 -146
  552. package/vendor/librocksdb/vendor/rocksdb/table/block_based/hash_index_reader.h +0 -49
  553. package/vendor/librocksdb/vendor/rocksdb/table/block_based/index_builder.cc +0 -305
  554. package/vendor/librocksdb/vendor/rocksdb/table/block_based/index_builder.h +0 -534
  555. package/vendor/librocksdb/vendor/rocksdb/table/block_based/index_reader_common.cc +0 -62
  556. package/vendor/librocksdb/vendor/rocksdb/table/block_based/index_reader_common.h +0 -94
  557. package/vendor/librocksdb/vendor/rocksdb/table/block_based/mock_block_based_table.h +0 -62
  558. package/vendor/librocksdb/vendor/rocksdb/table/block_based/parsed_full_filter_block.cc +0 -23
  559. package/vendor/librocksdb/vendor/rocksdb/table/block_based/parsed_full_filter_block.h +0 -47
  560. package/vendor/librocksdb/vendor/rocksdb/table/block_based/partitioned_filter_block.cc +0 -610
  561. package/vendor/librocksdb/vendor/rocksdb/table/block_based/partitioned_filter_block.h +0 -188
  562. package/vendor/librocksdb/vendor/rocksdb/table/block_based/partitioned_index_iterator.cc +0 -164
  563. package/vendor/librocksdb/vendor/rocksdb/table/block_based/partitioned_index_iterator.h +0 -160
  564. package/vendor/librocksdb/vendor/rocksdb/table/block_based/partitioned_index_reader.cc +0 -264
  565. package/vendor/librocksdb/vendor/rocksdb/table/block_based/partitioned_index_reader.h +0 -58
  566. package/vendor/librocksdb/vendor/rocksdb/table/block_based/reader_common.cc +0 -64
  567. package/vendor/librocksdb/vendor/rocksdb/table/block_based/reader_common.h +0 -36
  568. package/vendor/librocksdb/vendor/rocksdb/table/block_based/uncompression_dict_reader.cc +0 -118
  569. package/vendor/librocksdb/vendor/rocksdb/table/block_based/uncompression_dict_reader.h +0 -60
  570. package/vendor/librocksdb/vendor/rocksdb/table/block_fetcher.cc +0 -458
  571. package/vendor/librocksdb/vendor/rocksdb/table/block_fetcher.h +0 -168
  572. package/vendor/librocksdb/vendor/rocksdb/table/compaction_merging_iterator.cc +0 -370
  573. package/vendor/librocksdb/vendor/rocksdb/table/compaction_merging_iterator.h +0 -45
  574. package/vendor/librocksdb/vendor/rocksdb/table/cuckoo/cuckoo_table_builder.cc +0 -555
  575. package/vendor/librocksdb/vendor/rocksdb/table/cuckoo/cuckoo_table_builder.h +0 -136
  576. package/vendor/librocksdb/vendor/rocksdb/table/cuckoo/cuckoo_table_factory.cc +0 -100
  577. package/vendor/librocksdb/vendor/rocksdb/table/cuckoo/cuckoo_table_factory.h +0 -80
  578. package/vendor/librocksdb/vendor/rocksdb/table/cuckoo/cuckoo_table_reader.cc +0 -416
  579. package/vendor/librocksdb/vendor/rocksdb/table/cuckoo/cuckoo_table_reader.h +0 -100
  580. package/vendor/librocksdb/vendor/rocksdb/table/format.cc +0 -708
  581. package/vendor/librocksdb/vendor/rocksdb/table/format.h +0 -439
  582. package/vendor/librocksdb/vendor/rocksdb/table/get_context.cc +0 -622
  583. package/vendor/librocksdb/vendor/rocksdb/table/get_context.h +0 -259
  584. package/vendor/librocksdb/vendor/rocksdb/table/internal_iterator.h +0 -242
  585. package/vendor/librocksdb/vendor/rocksdb/table/iter_heap.h +0 -44
  586. package/vendor/librocksdb/vendor/rocksdb/table/iterator.cc +0 -134
  587. package/vendor/librocksdb/vendor/rocksdb/table/iterator_wrapper.h +0 -225
  588. package/vendor/librocksdb/vendor/rocksdb/table/merging_iterator.cc +0 -1755
  589. package/vendor/librocksdb/vendor/rocksdb/table/merging_iterator.h +0 -100
  590. package/vendor/librocksdb/vendor/rocksdb/table/meta_blocks.cc +0 -590
  591. package/vendor/librocksdb/vendor/rocksdb/table/meta_blocks.h +0 -181
  592. package/vendor/librocksdb/vendor/rocksdb/table/mock_table.cc +0 -355
  593. package/vendor/librocksdb/vendor/rocksdb/table/mock_table.h +0 -92
  594. package/vendor/librocksdb/vendor/rocksdb/table/multiget_context.h +0 -405
  595. package/vendor/librocksdb/vendor/rocksdb/table/persistent_cache_helper.cc +0 -110
  596. package/vendor/librocksdb/vendor/rocksdb/table/persistent_cache_helper.h +0 -46
  597. package/vendor/librocksdb/vendor/rocksdb/table/persistent_cache_options.h +0 -34
  598. package/vendor/librocksdb/vendor/rocksdb/table/plain/plain_table_bloom.cc +0 -78
  599. package/vendor/librocksdb/vendor/rocksdb/table/plain/plain_table_bloom.h +0 -132
  600. package/vendor/librocksdb/vendor/rocksdb/table/plain/plain_table_builder.cc +0 -348
  601. package/vendor/librocksdb/vendor/rocksdb/table/plain/plain_table_builder.h +0 -151
  602. package/vendor/librocksdb/vendor/rocksdb/table/plain/plain_table_factory.cc +0 -295
  603. package/vendor/librocksdb/vendor/rocksdb/table/plain/plain_table_factory.h +0 -180
  604. package/vendor/librocksdb/vendor/rocksdb/table/plain/plain_table_index.cc +0 -211
  605. package/vendor/librocksdb/vendor/rocksdb/table/plain/plain_table_index.h +0 -246
  606. package/vendor/librocksdb/vendor/rocksdb/table/plain/plain_table_key_coding.cc +0 -508
  607. package/vendor/librocksdb/vendor/rocksdb/table/plain/plain_table_key_coding.h +0 -199
  608. package/vendor/librocksdb/vendor/rocksdb/table/plain/plain_table_reader.cc +0 -778
  609. package/vendor/librocksdb/vendor/rocksdb/table/plain/plain_table_reader.h +0 -243
  610. package/vendor/librocksdb/vendor/rocksdb/table/sst_file_dumper.cc +0 -601
  611. package/vendor/librocksdb/vendor/rocksdb/table/sst_file_dumper.h +0 -104
  612. package/vendor/librocksdb/vendor/rocksdb/table/sst_file_reader.cc +0 -166
  613. package/vendor/librocksdb/vendor/rocksdb/table/sst_file_writer.cc +0 -536
  614. package/vendor/librocksdb/vendor/rocksdb/table/sst_file_writer_collectors.h +0 -97
  615. package/vendor/librocksdb/vendor/rocksdb/table/table_builder.h +0 -239
  616. package/vendor/librocksdb/vendor/rocksdb/table/table_factory.cc +0 -52
  617. package/vendor/librocksdb/vendor/rocksdb/table/table_iterator.h +0 -69
  618. package/vendor/librocksdb/vendor/rocksdb/table/table_properties.cc +0 -357
  619. package/vendor/librocksdb/vendor/rocksdb/table/table_properties_internal.h +0 -14
  620. package/vendor/librocksdb/vendor/rocksdb/table/table_reader.h +0 -202
  621. package/vendor/librocksdb/vendor/rocksdb/table/table_reader_bench.cc +0 -341
  622. package/vendor/librocksdb/vendor/rocksdb/table/two_level_iterator.cc +0 -222
  623. package/vendor/librocksdb/vendor/rocksdb/table/two_level_iterator.h +0 -43
  624. package/vendor/librocksdb/vendor/rocksdb/table/unique_id.cc +0 -223
  625. package/vendor/librocksdb/vendor/rocksdb/table/unique_id_impl.h +0 -93
  626. package/vendor/librocksdb/vendor/rocksdb/test_util/mock_time_env.cc +0 -38
  627. package/vendor/librocksdb/vendor/rocksdb/test_util/mock_time_env.h +0 -109
  628. package/vendor/librocksdb/vendor/rocksdb/test_util/secondary_cache_test_util.cc +0 -93
  629. package/vendor/librocksdb/vendor/rocksdb/test_util/secondary_cache_test_util.h +0 -131
  630. package/vendor/librocksdb/vendor/rocksdb/test_util/sync_point.cc +0 -82
  631. package/vendor/librocksdb/vendor/rocksdb/test_util/sync_point.h +0 -182
  632. package/vendor/librocksdb/vendor/rocksdb/test_util/sync_point_impl.cc +0 -152
  633. package/vendor/librocksdb/vendor/rocksdb/test_util/sync_point_impl.h +0 -96
  634. package/vendor/librocksdb/vendor/rocksdb/test_util/testharness.cc +0 -105
  635. package/vendor/librocksdb/vendor/rocksdb/test_util/testharness.h +0 -124
  636. package/vendor/librocksdb/vendor/rocksdb/test_util/testutil.cc +0 -776
  637. package/vendor/librocksdb/vendor/rocksdb/test_util/testutil.h +0 -908
  638. package/vendor/librocksdb/vendor/rocksdb/test_util/transaction_test_util.cc +0 -400
  639. package/vendor/librocksdb/vendor/rocksdb/test_util/transaction_test_util.h +0 -147
  640. package/vendor/librocksdb/vendor/rocksdb/tools/CMakeLists.txt +0 -30
  641. package/vendor/librocksdb/vendor/rocksdb/tools/blob_dump.cc +0 -103
  642. package/vendor/librocksdb/vendor/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +0 -2331
  643. package/vendor/librocksdb/vendor/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +0 -398
  644. package/vendor/librocksdb/vendor/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_tool.cc +0 -17
  645. package/vendor/librocksdb/vendor/rocksdb/tools/db_bench.cc +0 -21
  646. package/vendor/librocksdb/vendor/rocksdb/tools/db_bench_tool.cc +0 -8743
  647. package/vendor/librocksdb/vendor/rocksdb/tools/db_repl_stress.cc +0 -132
  648. package/vendor/librocksdb/vendor/rocksdb/tools/dump/db_dump_tool.cc +0 -264
  649. package/vendor/librocksdb/vendor/rocksdb/tools/dump/rocksdb_dump.cc +0 -60
  650. package/vendor/librocksdb/vendor/rocksdb/tools/dump/rocksdb_undump.cc +0 -59
  651. package/vendor/librocksdb/vendor/rocksdb/tools/io_tracer_parser.cc +0 -17
  652. package/vendor/librocksdb/vendor/rocksdb/tools/io_tracer_parser_tool.cc +0 -142
  653. package/vendor/librocksdb/vendor/rocksdb/tools/io_tracer_parser_tool.h +0 -38
  654. package/vendor/librocksdb/vendor/rocksdb/tools/ldb.cc +0 -13
  655. package/vendor/librocksdb/vendor/rocksdb/tools/ldb_cmd.cc +0 -5044
  656. package/vendor/librocksdb/vendor/rocksdb/tools/ldb_cmd_impl.h +0 -814
  657. package/vendor/librocksdb/vendor/rocksdb/tools/ldb_tool.cc +0 -192
  658. package/vendor/librocksdb/vendor/rocksdb/tools/simulated_hybrid_file_system.cc +0 -244
  659. package/vendor/librocksdb/vendor/rocksdb/tools/simulated_hybrid_file_system.h +0 -124
  660. package/vendor/librocksdb/vendor/rocksdb/tools/sst_dump.cc +0 -12
  661. package/vendor/librocksdb/vendor/rocksdb/tools/sst_dump_tool.cc +0 -588
  662. package/vendor/librocksdb/vendor/rocksdb/tools/trace_analyzer.cc +0 -17
  663. package/vendor/librocksdb/vendor/rocksdb/tools/trace_analyzer_tool.cc +0 -1935
  664. package/vendor/librocksdb/vendor/rocksdb/tools/trace_analyzer_tool.h +0 -329
  665. package/vendor/librocksdb/vendor/rocksdb/tools/write_stress.cc +0 -305
  666. package/vendor/librocksdb/vendor/rocksdb/trace_replay/block_cache_tracer.cc +0 -509
  667. package/vendor/librocksdb/vendor/rocksdb/trace_replay/block_cache_tracer.h +0 -239
  668. package/vendor/librocksdb/vendor/rocksdb/trace_replay/io_tracer.cc +0 -303
  669. package/vendor/librocksdb/vendor/rocksdb/trace_replay/io_tracer.h +0 -185
  670. package/vendor/librocksdb/vendor/rocksdb/trace_replay/trace_record.cc +0 -206
  671. package/vendor/librocksdb/vendor/rocksdb/trace_replay/trace_record_handler.cc +0 -190
  672. package/vendor/librocksdb/vendor/rocksdb/trace_replay/trace_record_handler.h +0 -46
  673. package/vendor/librocksdb/vendor/rocksdb/trace_replay/trace_record_result.cc +0 -146
  674. package/vendor/librocksdb/vendor/rocksdb/trace_replay/trace_replay.cc +0 -632
  675. package/vendor/librocksdb/vendor/rocksdb/trace_replay/trace_replay.h +0 -184
  676. package/vendor/librocksdb/vendor/rocksdb/util/aligned_buffer.h +0 -235
  677. package/vendor/librocksdb/vendor/rocksdb/util/aligned_storage.h +0 -24
  678. package/vendor/librocksdb/vendor/rocksdb/util/async_file_reader.cc +0 -84
  679. package/vendor/librocksdb/vendor/rocksdb/util/async_file_reader.h +0 -144
  680. package/vendor/librocksdb/vendor/rocksdb/util/atomic.h +0 -111
  681. package/vendor/librocksdb/vendor/rocksdb/util/autovector.h +0 -397
  682. package/vendor/librocksdb/vendor/rocksdb/util/bloom_impl.h +0 -489
  683. package/vendor/librocksdb/vendor/rocksdb/util/build_version.cc.in +0 -79
  684. package/vendor/librocksdb/vendor/rocksdb/util/cast_util.h +0 -88
  685. package/vendor/librocksdb/vendor/rocksdb/util/channel.h +0 -69
  686. package/vendor/librocksdb/vendor/rocksdb/util/cleanable.cc +0 -181
  687. package/vendor/librocksdb/vendor/rocksdb/util/coding.cc +0 -90
  688. package/vendor/librocksdb/vendor/rocksdb/util/coding.h +0 -385
  689. package/vendor/librocksdb/vendor/rocksdb/util/coding_lean.h +0 -101
  690. package/vendor/librocksdb/vendor/rocksdb/util/compaction_job_stats_impl.cc +0 -94
  691. package/vendor/librocksdb/vendor/rocksdb/util/comparator.cc +0 -443
  692. package/vendor/librocksdb/vendor/rocksdb/util/compression.cc +0 -122
  693. package/vendor/librocksdb/vendor/rocksdb/util/compression.h +0 -1879
  694. package/vendor/librocksdb/vendor/rocksdb/util/compression_context_cache.cc +0 -106
  695. package/vendor/librocksdb/vendor/rocksdb/util/compression_context_cache.h +0 -47
  696. package/vendor/librocksdb/vendor/rocksdb/util/concurrent_task_limiter_impl.cc +0 -64
  697. package/vendor/librocksdb/vendor/rocksdb/util/concurrent_task_limiter_impl.h +0 -67
  698. package/vendor/librocksdb/vendor/rocksdb/util/core_local.h +0 -85
  699. package/vendor/librocksdb/vendor/rocksdb/util/coro_utils.h +0 -112
  700. package/vendor/librocksdb/vendor/rocksdb/util/crc32c.cc +0 -1295
  701. package/vendor/librocksdb/vendor/rocksdb/util/crc32c.h +0 -56
  702. package/vendor/librocksdb/vendor/rocksdb/util/crc32c_arm64.cc +0 -213
  703. package/vendor/librocksdb/vendor/rocksdb/util/crc32c_arm64.h +0 -51
  704. package/vendor/librocksdb/vendor/rocksdb/util/crc32c_ppc.c +0 -94
  705. package/vendor/librocksdb/vendor/rocksdb/util/crc32c_ppc.h +0 -21
  706. package/vendor/librocksdb/vendor/rocksdb/util/crc32c_ppc_asm.S +0 -756
  707. package/vendor/librocksdb/vendor/rocksdb/util/crc32c_ppc_constants.h +0 -900
  708. package/vendor/librocksdb/vendor/rocksdb/util/data_structure.cc +0 -16
  709. package/vendor/librocksdb/vendor/rocksdb/util/defer.h +0 -82
  710. package/vendor/librocksdb/vendor/rocksdb/util/distributed_mutex.h +0 -50
  711. package/vendor/librocksdb/vendor/rocksdb/util/duplicate_detector.h +0 -69
  712. package/vendor/librocksdb/vendor/rocksdb/util/dynamic_bloom.cc +0 -70
  713. package/vendor/librocksdb/vendor/rocksdb/util/dynamic_bloom.h +0 -214
  714. package/vendor/librocksdb/vendor/rocksdb/util/fastrange.h +0 -114
  715. package/vendor/librocksdb/vendor/rocksdb/util/file_checksum_helper.cc +0 -170
  716. package/vendor/librocksdb/vendor/rocksdb/util/file_checksum_helper.h +0 -101
  717. package/vendor/librocksdb/vendor/rocksdb/util/filter_bench.cc +0 -840
  718. package/vendor/librocksdb/vendor/rocksdb/util/gflags_compat.h +0 -29
  719. package/vendor/librocksdb/vendor/rocksdb/util/hash.cc +0 -201
  720. package/vendor/librocksdb/vendor/rocksdb/util/hash.h +0 -141
  721. package/vendor/librocksdb/vendor/rocksdb/util/hash128.h +0 -26
  722. package/vendor/librocksdb/vendor/rocksdb/util/hash_containers.h +0 -51
  723. package/vendor/librocksdb/vendor/rocksdb/util/hash_map.h +0 -67
  724. package/vendor/librocksdb/vendor/rocksdb/util/heap.h +0 -174
  725. package/vendor/librocksdb/vendor/rocksdb/util/kv_map.h +0 -33
  726. package/vendor/librocksdb/vendor/rocksdb/util/log_write_bench.cc +0 -88
  727. package/vendor/librocksdb/vendor/rocksdb/util/math.h +0 -351
  728. package/vendor/librocksdb/vendor/rocksdb/util/math128.h +0 -338
  729. package/vendor/librocksdb/vendor/rocksdb/util/murmurhash.cc +0 -196
  730. package/vendor/librocksdb/vendor/rocksdb/util/murmurhash.h +0 -43
  731. package/vendor/librocksdb/vendor/rocksdb/util/mutexlock.h +0 -189
  732. package/vendor/librocksdb/vendor/rocksdb/util/overload.h +0 -23
  733. package/vendor/librocksdb/vendor/rocksdb/util/ppc-opcode.h +0 -27
  734. package/vendor/librocksdb/vendor/rocksdb/util/random.cc +0 -63
  735. package/vendor/librocksdb/vendor/rocksdb/util/random.h +0 -190
  736. package/vendor/librocksdb/vendor/rocksdb/util/rate_limiter.cc +0 -391
  737. package/vendor/librocksdb/vendor/rocksdb/util/rate_limiter_impl.h +0 -156
  738. package/vendor/librocksdb/vendor/rocksdb/util/repeatable_thread.h +0 -149
  739. package/vendor/librocksdb/vendor/rocksdb/util/ribbon_alg.h +0 -1225
  740. package/vendor/librocksdb/vendor/rocksdb/util/ribbon_config.cc +0 -498
  741. package/vendor/librocksdb/vendor/rocksdb/util/ribbon_config.h +0 -182
  742. package/vendor/librocksdb/vendor/rocksdb/util/ribbon_impl.h +0 -1137
  743. package/vendor/librocksdb/vendor/rocksdb/util/set_comparator.h +0 -24
  744. package/vendor/librocksdb/vendor/rocksdb/util/single_thread_executor.h +0 -57
  745. package/vendor/librocksdb/vendor/rocksdb/util/slice.cc +0 -366
  746. package/vendor/librocksdb/vendor/rocksdb/util/status.cc +0 -163
  747. package/vendor/librocksdb/vendor/rocksdb/util/stderr_logger.cc +0 -62
  748. package/vendor/librocksdb/vendor/rocksdb/util/stderr_logger.h +0 -41
  749. package/vendor/librocksdb/vendor/rocksdb/util/stop_watch.h +0 -136
  750. package/vendor/librocksdb/vendor/rocksdb/util/string_util.cc +0 -554
  751. package/vendor/librocksdb/vendor/rocksdb/util/string_util.h +0 -185
  752. package/vendor/librocksdb/vendor/rocksdb/util/thread_guard.h +0 -41
  753. package/vendor/librocksdb/vendor/rocksdb/util/thread_local.cc +0 -521
  754. package/vendor/librocksdb/vendor/rocksdb/util/thread_local.h +0 -100
  755. package/vendor/librocksdb/vendor/rocksdb/util/thread_operation.h +0 -122
  756. package/vendor/librocksdb/vendor/rocksdb/util/threadpool_imp.cc +0 -550
  757. package/vendor/librocksdb/vendor/rocksdb/util/threadpool_imp.h +0 -120
  758. package/vendor/librocksdb/vendor/rocksdb/util/timer.h +0 -340
  759. package/vendor/librocksdb/vendor/rocksdb/util/timer_queue.h +0 -231
  760. package/vendor/librocksdb/vendor/rocksdb/util/udt_util.cc +0 -418
  761. package/vendor/librocksdb/vendor/rocksdb/util/udt_util.h +0 -275
  762. package/vendor/librocksdb/vendor/rocksdb/util/user_comparator_wrapper.h +0 -64
  763. package/vendor/librocksdb/vendor/rocksdb/util/vector_iterator.h +0 -114
  764. package/vendor/librocksdb/vendor/rocksdb/util/work_queue.h +0 -150
  765. package/vendor/librocksdb/vendor/rocksdb/util/write_batch_util.cc +0 -25
  766. package/vendor/librocksdb/vendor/rocksdb/util/write_batch_util.h +0 -90
  767. package/vendor/librocksdb/vendor/rocksdb/util/xxhash.cc +0 -48
  768. package/vendor/librocksdb/vendor/rocksdb/util/xxhash.h +0 -6364
  769. package/vendor/librocksdb/vendor/rocksdb/util/xxph3.h +0 -1760
  770. package/vendor/librocksdb/vendor/rocksdb/utilities/agg_merge/agg_merge.cc +0 -237
  771. package/vendor/librocksdb/vendor/rocksdb/utilities/agg_merge/agg_merge_impl.h +0 -49
  772. package/vendor/librocksdb/vendor/rocksdb/utilities/agg_merge/test_agg_merge.cc +0 -103
  773. package/vendor/librocksdb/vendor/rocksdb/utilities/agg_merge/test_agg_merge.h +0 -47
  774. package/vendor/librocksdb/vendor/rocksdb/utilities/backup/backup_engine.cc +0 -3357
  775. package/vendor/librocksdb/vendor/rocksdb/utilities/backup/backup_engine_impl.h +0 -34
  776. package/vendor/librocksdb/vendor/rocksdb/utilities/blob_db/blob_compaction_filter.cc +0 -490
  777. package/vendor/librocksdb/vendor/rocksdb/utilities/blob_db/blob_compaction_filter.h +0 -202
  778. package/vendor/librocksdb/vendor/rocksdb/utilities/blob_db/blob_db.cc +0 -109
  779. package/vendor/librocksdb/vendor/rocksdb/utilities/blob_db/blob_db.h +0 -231
  780. package/vendor/librocksdb/vendor/rocksdb/utilities/blob_db/blob_db_gc_stats.h +0 -54
  781. package/vendor/librocksdb/vendor/rocksdb/utilities/blob_db/blob_db_impl.cc +0 -2269
  782. package/vendor/librocksdb/vendor/rocksdb/utilities/blob_db/blob_db_impl.h +0 -514
  783. package/vendor/librocksdb/vendor/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +0 -127
  784. package/vendor/librocksdb/vendor/rocksdb/utilities/blob_db/blob_db_iterator.h +0 -148
  785. package/vendor/librocksdb/vendor/rocksdb/utilities/blob_db/blob_db_listener.h +0 -71
  786. package/vendor/librocksdb/vendor/rocksdb/utilities/blob_db/blob_dump_tool.cc +0 -276
  787. package/vendor/librocksdb/vendor/rocksdb/utilities/blob_db/blob_dump_tool.h +0 -56
  788. package/vendor/librocksdb/vendor/rocksdb/utilities/blob_db/blob_file.cc +0 -311
  789. package/vendor/librocksdb/vendor/rocksdb/utilities/blob_db/blob_file.h +0 -245
  790. package/vendor/librocksdb/vendor/rocksdb/utilities/cache_dump_load.cc +0 -67
  791. package/vendor/librocksdb/vendor/rocksdb/utilities/cache_dump_load_impl.cc +0 -389
  792. package/vendor/librocksdb/vendor/rocksdb/utilities/cache_dump_load_impl.h +0 -368
  793. package/vendor/librocksdb/vendor/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +0 -104
  794. package/vendor/librocksdb/vendor/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +0 -57
  795. package/vendor/librocksdb/vendor/rocksdb/utilities/cassandra/cassandra_options.h +0 -41
  796. package/vendor/librocksdb/vendor/rocksdb/utilities/cassandra/format.cc +0 -365
  797. package/vendor/librocksdb/vendor/rocksdb/utilities/cassandra/format.h +0 -183
  798. package/vendor/librocksdb/vendor/rocksdb/utilities/cassandra/merge_operator.cc +0 -76
  799. package/vendor/librocksdb/vendor/rocksdb/utilities/cassandra/merge_operator.h +0 -43
  800. package/vendor/librocksdb/vendor/rocksdb/utilities/cassandra/serialize.h +0 -81
  801. package/vendor/librocksdb/vendor/rocksdb/utilities/cassandra/test_utils.cc +0 -67
  802. package/vendor/librocksdb/vendor/rocksdb/utilities/cassandra/test_utils.h +0 -42
  803. package/vendor/librocksdb/vendor/rocksdb/utilities/checkpoint/checkpoint_impl.cc +0 -472
  804. package/vendor/librocksdb/vendor/rocksdb/utilities/checkpoint/checkpoint_impl.h +0 -64
  805. package/vendor/librocksdb/vendor/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +0 -41
  806. package/vendor/librocksdb/vendor/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -24
  807. package/vendor/librocksdb/vendor/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +0 -26
  808. package/vendor/librocksdb/vendor/rocksdb/utilities/compaction_filters.cc +0 -52
  809. package/vendor/librocksdb/vendor/rocksdb/utilities/convenience/info_log_finder.cc +0 -26
  810. package/vendor/librocksdb/vendor/rocksdb/utilities/counted_fs.cc +0 -379
  811. package/vendor/librocksdb/vendor/rocksdb/utilities/counted_fs.h +0 -158
  812. package/vendor/librocksdb/vendor/rocksdb/utilities/debug.cc +0 -134
  813. package/vendor/librocksdb/vendor/rocksdb/utilities/env_mirror.cc +0 -280
  814. package/vendor/librocksdb/vendor/rocksdb/utilities/env_timed.cc +0 -181
  815. package/vendor/librocksdb/vendor/rocksdb/utilities/env_timed.h +0 -95
  816. package/vendor/librocksdb/vendor/rocksdb/utilities/fault_injection_env.cc +0 -555
  817. package/vendor/librocksdb/vendor/rocksdb/utilities/fault_injection_env.h +0 -252
  818. package/vendor/librocksdb/vendor/rocksdb/utilities/fault_injection_fs.cc +0 -1507
  819. package/vendor/librocksdb/vendor/rocksdb/utilities/fault_injection_fs.h +0 -760
  820. package/vendor/librocksdb/vendor/rocksdb/utilities/fault_injection_secondary_cache.cc +0 -138
  821. package/vendor/librocksdb/vendor/rocksdb/utilities/fault_injection_secondary_cache.h +0 -115
  822. package/vendor/librocksdb/vendor/rocksdb/utilities/leveldb_options/leveldb_options.cc +0 -57
  823. package/vendor/librocksdb/vendor/rocksdb/utilities/memory/memory_util.cc +0 -50
  824. package/vendor/librocksdb/vendor/rocksdb/utilities/memory_allocators.h +0 -103
  825. package/vendor/librocksdb/vendor/rocksdb/utilities/merge_operators/bytesxor.cc +0 -57
  826. package/vendor/librocksdb/vendor/rocksdb/utilities/merge_operators/bytesxor.h +0 -39
  827. package/vendor/librocksdb/vendor/rocksdb/utilities/merge_operators/max.cc +0 -64
  828. package/vendor/librocksdb/vendor/rocksdb/utilities/merge_operators/max_operator.h +0 -35
  829. package/vendor/librocksdb/vendor/rocksdb/utilities/merge_operators/put.cc +0 -74
  830. package/vendor/librocksdb/vendor/rocksdb/utilities/merge_operators/put_operator.h +0 -56
  831. package/vendor/librocksdb/vendor/rocksdb/utilities/merge_operators/sortlist.cc +0 -97
  832. package/vendor/librocksdb/vendor/rocksdb/utilities/merge_operators/sortlist.h +0 -42
  833. package/vendor/librocksdb/vendor/rocksdb/utilities/merge_operators/string_append/stringappend.cc +0 -76
  834. package/vendor/librocksdb/vendor/rocksdb/utilities/merge_operators/string_append/stringappend.h +0 -32
  835. package/vendor/librocksdb/vendor/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +0 -129
  836. package/vendor/librocksdb/vendor/rocksdb/utilities/merge_operators/string_append/stringappend2.h +0 -51
  837. package/vendor/librocksdb/vendor/rocksdb/utilities/merge_operators/uint64add.cc +0 -56
  838. package/vendor/librocksdb/vendor/rocksdb/utilities/merge_operators/uint64add.h +0 -35
  839. package/vendor/librocksdb/vendor/rocksdb/utilities/merge_operators.cc +0 -115
  840. package/vendor/librocksdb/vendor/rocksdb/utilities/merge_operators.h +0 -36
  841. package/vendor/librocksdb/vendor/rocksdb/utilities/object_registry.cc +0 -381
  842. package/vendor/librocksdb/vendor/rocksdb/utilities/option_change_migration/option_change_migration.cc +0 -169
  843. package/vendor/librocksdb/vendor/rocksdb/utilities/options/options_util.cc +0 -117
  844. package/vendor/librocksdb/vendor/rocksdb/utilities/persistent_cache/block_cache_tier.cc +0 -420
  845. package/vendor/librocksdb/vendor/rocksdb/utilities/persistent_cache/block_cache_tier.h +0 -154
  846. package/vendor/librocksdb/vendor/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +0 -607
  847. package/vendor/librocksdb/vendor/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +0 -291
  848. package/vendor/librocksdb/vendor/rocksdb/utilities/persistent_cache/block_cache_tier_file_buffer.h +0 -127
  849. package/vendor/librocksdb/vendor/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +0 -84
  850. package/vendor/librocksdb/vendor/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +0 -122
  851. package/vendor/librocksdb/vendor/rocksdb/utilities/persistent_cache/hash_table.h +0 -237
  852. package/vendor/librocksdb/vendor/rocksdb/utilities/persistent_cache/hash_table_bench.cc +0 -310
  853. package/vendor/librocksdb/vendor/rocksdb/utilities/persistent_cache/hash_table_evictable.h +0 -166
  854. package/vendor/librocksdb/vendor/rocksdb/utilities/persistent_cache/lrulist.h +0 -172
  855. package/vendor/librocksdb/vendor/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +0 -355
  856. package/vendor/librocksdb/vendor/rocksdb/utilities/persistent_cache/persistent_cache_test.h +0 -284
  857. package/vendor/librocksdb/vendor/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +0 -165
  858. package/vendor/librocksdb/vendor/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +0 -340
  859. package/vendor/librocksdb/vendor/rocksdb/utilities/persistent_cache/persistent_cache_util.h +0 -67
  860. package/vendor/librocksdb/vendor/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +0 -138
  861. package/vendor/librocksdb/vendor/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +0 -139
  862. package/vendor/librocksdb/vendor/rocksdb/utilities/simulator_cache/cache_simulator.cc +0 -287
  863. package/vendor/librocksdb/vendor/rocksdb/utilities/simulator_cache/cache_simulator.h +0 -231
  864. package/vendor/librocksdb/vendor/rocksdb/utilities/simulator_cache/sim_cache.cc +0 -375
  865. package/vendor/librocksdb/vendor/rocksdb/utilities/table_properties_collectors/compact_for_tiering_collector.cc +0 -144
  866. package/vendor/librocksdb/vendor/rocksdb/utilities/table_properties_collectors/compact_for_tiering_collector.h +0 -45
  867. package/vendor/librocksdb/vendor/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +0 -233
  868. package/vendor/librocksdb/vendor/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +0 -65
  869. package/vendor/librocksdb/vendor/rocksdb/utilities/trace/file_trace_reader_writer.cc +0 -132
  870. package/vendor/librocksdb/vendor/rocksdb/utilities/trace/file_trace_reader_writer.h +0 -48
  871. package/vendor/librocksdb/vendor/rocksdb/utilities/trace/replayer_impl.cc +0 -313
  872. package/vendor/librocksdb/vendor/rocksdb/utilities/trace/replayer_impl.h +0 -84
  873. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/lock_manager.cc +0 -27
  874. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/lock_manager.h +0 -80
  875. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/lock_tracker.h +0 -207
  876. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +0 -718
  877. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +0 -222
  878. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +0 -324
  879. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -255
  880. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/point/point_lock_tracker.h +0 -97
  881. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_lock_manager.h +0 -34
  882. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +0 -81
  883. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/ft/comparator.h +0 -138
  884. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/ft/ft-status.h +0 -102
  885. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc +0 -137
  886. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.h +0 -174
  887. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc +0 -220
  888. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.h +0 -141
  889. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +0 -525
  890. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +0 -255
  891. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +0 -1021
  892. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +0 -580
  893. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc +0 -525
  894. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc +0 -263
  895. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.h +0 -178
  896. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc +0 -518
  897. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.h +0 -302
  898. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc +0 -118
  899. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.h +0 -92
  900. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc +0 -211
  901. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.h +0 -124
  902. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/memory.h +0 -215
  903. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_assert_subst.h +0 -43
  904. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_atomic.h +0 -130
  905. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +0 -87
  906. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_instrumentation.h +0 -286
  907. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_portability.h +0 -87
  908. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_pthread.h +0 -520
  909. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_race_tools.h +0 -179
  910. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +0 -197
  911. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/txn_subst.h +0 -31
  912. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc +0 -139
  913. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +0 -165
  914. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.h +0 -98
  915. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/growable_array.h +0 -144
  916. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc +0 -199
  917. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/memarena.h +0 -141
  918. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/omt.h +0 -794
  919. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/omt_impl.h +0 -1295
  920. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/partitioned_counter.h +0 -165
  921. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/status.h +0 -76
  922. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +0 -501
  923. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +0 -135
  924. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc +0 -156
  925. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.h +0 -146
  926. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/optimistic_transaction.cc +0 -208
  927. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/optimistic_transaction.h +0 -99
  928. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +0 -111
  929. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +0 -110
  930. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/pessimistic_transaction.cc +0 -1278
  931. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/pessimistic_transaction.h +0 -345
  932. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +0 -845
  933. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/pessimistic_transaction_db.h +0 -345
  934. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/snapshot_checker.cc +0 -37
  935. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/transaction_base.cc +0 -912
  936. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/transaction_base.h +0 -455
  937. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +0 -133
  938. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +0 -24
  939. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/transaction_test.h +0 -589
  940. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/transaction_util.cc +0 -207
  941. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/transaction_util.h +0 -86
  942. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/write_prepared_txn.cc +0 -548
  943. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/write_prepared_txn.h +0 -118
  944. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/write_prepared_txn_db.cc +0 -1100
  945. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/write_prepared_txn_db.h +0 -1149
  946. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/write_unprepared_txn.cc +0 -1089
  947. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/write_unprepared_txn.h +0 -333
  948. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +0 -486
  949. package/vendor/librocksdb/vendor/rocksdb/utilities/transactions/write_unprepared_txn_db.h +0 -105
  950. package/vendor/librocksdb/vendor/rocksdb/utilities/ttl/db_ttl_impl.cc +0 -638
  951. package/vendor/librocksdb/vendor/rocksdb/utilities/ttl/db_ttl_impl.h +0 -239
  952. package/vendor/librocksdb/vendor/rocksdb/utilities/types_util.cc +0 -88
  953. package/vendor/librocksdb/vendor/rocksdb/utilities/wal_filter.cc +0 -22
  954. package/vendor/librocksdb/vendor/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +0 -1134
  955. package/vendor/librocksdb/vendor/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +0 -934
  956. package/vendor/librocksdb/vendor/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +0 -468
@@ -1,2331 +0,0 @@
1
- // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
2
- // This source code is licensed under both the GPLv2 (found in the
3
- // COPYING file in the root directory) and Apache 2.0 License
4
- // (found in the LICENSE.Apache file in the root directory).
5
-
6
- #ifdef GFLAGS
7
- #include "tools/block_cache_analyzer/block_cache_trace_analyzer.h"
8
-
9
- #include <algorithm>
10
- #include <cinttypes>
11
- #include <cstdio>
12
- #include <cstdlib>
13
- #include <fstream>
14
- #include <iomanip>
15
- #include <iostream>
16
- #include <memory>
17
- #include <random>
18
- #include <sstream>
19
-
20
- #include "monitoring/histogram.h"
21
- #include "rocksdb/system_clock.h"
22
- #include "rocksdb/trace_record.h"
23
- #include "util/gflags_compat.h"
24
- #include "util/string_util.h"
25
-
26
- using GFLAGS_NAMESPACE::ParseCommandLineFlags;
27
-
28
- DEFINE_string(block_cache_trace_path, "", "The trace file path.");
29
- DEFINE_bool(is_block_cache_human_readable_trace, false,
30
- "Is the trace file provided for analysis generated by running "
31
- "block_cache_trace_analyzer with "
32
- "FLAGS_human_readable_trace_file_path is specified.");
33
- DEFINE_string(
34
- block_cache_sim_config_path, "",
35
- "The config file path. One cache configuration per line. The format of a "
36
- "cache configuration is "
37
- "cache_name,num_shard_bits,ghost_capacity,cache_capacity_1,...,cache_"
38
- "capacity_N. Supported cache names are lru, lru_priority, lru_hybrid, and "
39
- "lru_hybrid_no_insert_on_row_miss. User may also add a prefix 'ghost_' to "
40
- "a cache_name to add a ghost cache in front of the real cache. "
41
- "ghost_capacity and cache_capacity can be xK, xM or xG where x is a "
42
- "positive number.");
43
- DEFINE_int32(block_cache_trace_downsample_ratio, 1,
44
- "The trace collected accesses on one in every "
45
- "block_cache_trace_downsample_ratio blocks. We scale "
46
- "down the simulated cache size by this ratio.");
47
- DEFINE_bool(print_block_size_stats, false,
48
- "Print block size distribution and the distribution break down by "
49
- "block type and column family.");
50
- DEFINE_bool(print_access_count_stats, false,
51
- "Print access count distribution and the distribution break down "
52
- "by block type and column family.");
53
- DEFINE_bool(print_data_block_access_count_stats, false,
54
- "Print data block accesses by user Get and Multi-Get.");
55
- DEFINE_int32(cache_sim_warmup_seconds, 0,
56
- "The number of seconds to warmup simulated caches. The hit/miss "
57
- "counters are reset after the warmup completes.");
58
- DEFINE_int32(analyze_bottom_k_access_count_blocks, 0,
59
- "Print out detailed access information for blocks with their "
60
- "number of accesses are the bottom k among all blocks.");
61
- DEFINE_int32(analyze_top_k_access_count_blocks, 0,
62
- "Print out detailed access information for blocks with their "
63
- "number of accesses are the top k among all blocks.");
64
- DEFINE_string(block_cache_analysis_result_dir, "",
65
- "The directory that saves block cache analysis results.");
66
- DEFINE_string(
67
- timeline_labels, "",
68
- "Group the number of accesses per block per second using these labels. "
69
- "Possible labels are a combination of the following: cf (column family), "
70
- "sst, level, bt (block type), caller, block. For example, label \"cf_bt\" "
71
- "means the number of access per second is grouped by unique pairs of "
72
- "\"cf_bt\". A label \"all\" contains the aggregated number of accesses per "
73
- "second across all possible labels.");
74
- DEFINE_string(reuse_distance_labels, "",
75
- "Group the reuse distance of a block using these labels. Reuse "
76
- "distance is defined as the cumulated size of unique blocks read "
77
- "between two consecutive accesses on the same block.");
78
- DEFINE_string(
79
- reuse_distance_buckets, "",
80
- "Group blocks by their reuse distances given these buckets. For "
81
- "example, if 'reuse_distance_buckets' is '1K,1M,1G', we will "
82
- "create four buckets. The first three buckets contain the number of "
83
- "blocks with reuse distance less than 1KB, between 1K and 1M, between 1M "
84
- "and 1G, respectively. The last bucket contains the number of blocks with "
85
- "reuse distance larger than 1G. ");
86
- DEFINE_string(
87
- reuse_interval_labels, "",
88
- "Group the reuse interval of a block using these labels. Reuse "
89
- "interval is defined as the time between two consecutive accesses "
90
- "on the same block.");
91
- DEFINE_string(
92
- reuse_interval_buckets, "",
93
- "Group blocks by their reuse interval given these buckets. For "
94
- "example, if 'reuse_distance_buckets' is '1,10,100', we will "
95
- "create four buckets. The first three buckets contain the number of "
96
- "blocks with reuse interval less than 1 second, between 1 second and 10 "
97
- "seconds, between 10 seconds and 100 seconds, respectively. The last "
98
- "bucket contains the number of blocks with reuse interval longer than 100 "
99
- "seconds.");
100
- DEFINE_string(
101
- reuse_lifetime_labels, "",
102
- "Group the reuse lifetime of a block using these labels. Reuse "
103
- "lifetime is defined as the time interval between the first access on a "
104
- "block and the last access on the same block. For blocks that are only "
105
- "accessed once, its lifetime is set to kMaxUint64.");
106
- DEFINE_string(
107
- reuse_lifetime_buckets, "",
108
- "Group blocks by their reuse lifetime given these buckets. For "
109
- "example, if 'reuse_lifetime_buckets' is '1,10,100', we will "
110
- "create four buckets. The first three buckets contain the number of "
111
- "blocks with reuse lifetime less than 1 second, between 1 second and 10 "
112
- "seconds, between 10 seconds and 100 seconds, respectively. The last "
113
- "bucket contains the number of blocks with reuse lifetime longer than 100 "
114
- "seconds.");
115
- DEFINE_string(
116
- analyze_callers, "",
117
- "The list of callers to perform a detailed analysis on. If speicfied, the "
118
- "analyzer will output a detailed percentage of accesses for each caller "
119
- "break down by column family, level, and block type. A list of available "
120
- "callers are: Get, MultiGet, Iterator, ApproximateSize, VerifyChecksum, "
121
- "SSTDumpTool, ExternalSSTIngestion, Repair, Prefetch, Compaction, "
122
- "CompactionRefill, Flush, SSTFileReader, Uncategorized.");
123
- DEFINE_string(access_count_buckets, "",
124
- "Group number of blocks by their access count given these "
125
- "buckets. If specified, the analyzer will output a detailed "
126
- "analysis on the number of blocks grouped by their access count "
127
- "break down by block type and column family.");
128
- DEFINE_int32(analyze_blocks_reuse_k_reuse_window, 0,
129
- "Analyze the percentage of blocks that are accessed in the "
130
- "[k, 2*k] seconds are accessed again in the next [2*k, 3*k], "
131
- "[3*k, 4*k],...,[k*(n-1), k*n] seconds. ");
132
- DEFINE_string(analyze_get_spatial_locality_labels, "",
133
- "Group data blocks using these labels.");
134
- DEFINE_string(analyze_get_spatial_locality_buckets, "",
135
- "Group data blocks by their statistics using these buckets.");
136
- DEFINE_string(skew_labels, "",
137
- "Group the access count of a block using these labels.");
138
- DEFINE_string(skew_buckets, "", "Group the skew labels using these buckets.");
139
- DEFINE_bool(mrc_only, false,
140
- "Evaluate alternative cache policies only. When this flag is true, "
141
- "the analyzer does NOT maintain states of each block in memory for "
142
- "analysis. It only feeds the accesses into the cache simulators.");
143
- DEFINE_string(
144
- analyze_correlation_coefficients_labels, "",
145
- "Analyze the correlation coefficients of features such as number of past "
146
- "accesses with regard to the number of accesses till the next access.");
147
- DEFINE_int32(analyze_correlation_coefficients_max_number_of_values, 1000000,
148
- "The maximum number of values for a feature. If the number of "
149
- "values for a feature is larger than this max, it randomly "
150
- "selects 'max' number of values.");
151
- DEFINE_string(human_readable_trace_file_path, "",
152
- "The filt path that saves human readable access records.");
153
-
154
- namespace ROCKSDB_NAMESPACE {
155
- namespace {
156
-
157
- const std::string kMissRatioCurveFileName = "mrc";
158
- const std::string kGroupbyBlock = "block";
159
- const std::string kGroupbyTable = "table";
160
- const std::string kGroupbyColumnFamily = "cf";
161
- const std::string kGroupbySSTFile = "sst";
162
- const std::string kGroupbyBlockType = "bt";
163
- const std::string kGroupbyCaller = "caller";
164
- const std::string kGroupbyLevel = "level";
165
- const std::string kGroupbyAll = "all";
166
- const std::set<std::string> kGroupbyLabels{
167
- kGroupbyBlock, kGroupbyColumnFamily, kGroupbySSTFile, kGroupbyLevel,
168
- kGroupbyBlockType, kGroupbyCaller, kGroupbyAll};
169
- const std::string kSupportedCacheNames =
170
- " lru ghost_lru lru_priority ghost_lru_priority lru_hybrid "
171
- "ghost_lru_hybrid lru_hybrid_no_insert_on_row_miss "
172
- "ghost_lru_hybrid_no_insert_on_row_miss ";
173
-
174
- // The suffix for the generated csv files.
175
- const std::string kFileNameSuffixMissRatioTimeline = "miss_ratio_timeline";
176
- const std::string kFileNameSuffixMissTimeline = "miss_timeline";
177
- const std::string kFileNameSuffixSkew = "skewness";
178
- const std::string kFileNameSuffixAccessTimeline = "access_timeline";
179
- const std::string kFileNameSuffixCorrelation = "correlation_input";
180
- const std::string kFileNameSuffixAvgReuseIntervalNaccesses =
181
- "avg_reuse_interval_naccesses";
182
- const std::string kFileNameSuffixAvgReuseInterval = "avg_reuse_interval";
183
- const std::string kFileNameSuffixReuseInterval = "access_reuse_interval";
184
- const std::string kFileNameSuffixReuseLifetime = "reuse_lifetime";
185
- const std::string kFileNameSuffixAccessReuseBlocksTimeline =
186
- "reuse_blocks_timeline";
187
- const std::string kFileNameSuffixPercentOfAccessSummary =
188
- "percentage_of_accesses_summary";
189
- const std::string kFileNameSuffixPercentRefKeys = "percent_ref_keys";
190
- const std::string kFileNameSuffixPercentDataSizeOnRefKeys =
191
- "percent_data_size_on_ref_keys";
192
- const std::string kFileNameSuffixPercentAccessesOnRefKeys =
193
- "percent_accesses_on_ref_keys";
194
- const std::string kFileNameSuffixAccessCountSummary = "access_count_summary";
195
-
196
- std::string block_type_to_string(TraceType type) {
197
- switch (type) {
198
- case kBlockTraceFilterBlock:
199
- return "Filter";
200
- case kBlockTraceDataBlock:
201
- return "Data";
202
- case kBlockTraceIndexBlock:
203
- return "Index";
204
- case kBlockTraceRangeDeletionBlock:
205
- return "RangeDeletion";
206
- case kBlockTraceUncompressionDictBlock:
207
- return "UncompressionDict";
208
- default:
209
- break;
210
- }
211
- // This cannot happen.
212
- return "InvalidType";
213
- }
214
-
215
- std::string caller_to_string(TableReaderCaller caller) {
216
- switch (caller) {
217
- case kUserGet:
218
- return "Get";
219
- case kUserMultiGet:
220
- return "MultiGet";
221
- case kUserIterator:
222
- return "Iterator";
223
- case kUserApproximateSize:
224
- return "ApproximateSize";
225
- case kUserVerifyChecksum:
226
- return "VerifyChecksum";
227
- case kSSTDumpTool:
228
- return "SSTDumpTool";
229
- case kExternalSSTIngestion:
230
- return "ExternalSSTIngestion";
231
- case kRepair:
232
- return "Repair";
233
- case kPrefetch:
234
- return "Prefetch";
235
- case kCompaction:
236
- return "Compaction";
237
- case kCompactionRefill:
238
- return "CompactionRefill";
239
- case kFlush:
240
- return "Flush";
241
- case kSSTFileReader:
242
- return "SSTFileReader";
243
- case kUncategorized:
244
- return "Uncategorized";
245
- default:
246
- break;
247
- }
248
- // This cannot happen.
249
- return "InvalidCaller";
250
- }
251
-
252
- TableReaderCaller string_to_caller(std::string caller_str) {
253
- if (caller_str == "Get") {
254
- return kUserGet;
255
- } else if (caller_str == "MultiGet") {
256
- return kUserMultiGet;
257
- } else if (caller_str == "Iterator") {
258
- return kUserIterator;
259
- } else if (caller_str == "ApproximateSize") {
260
- return kUserApproximateSize;
261
- } else if (caller_str == "VerifyChecksum") {
262
- return kUserVerifyChecksum;
263
- } else if (caller_str == "SSTDumpTool") {
264
- return kSSTDumpTool;
265
- } else if (caller_str == "ExternalSSTIngestion") {
266
- return kExternalSSTIngestion;
267
- } else if (caller_str == "Repair") {
268
- return kRepair;
269
- } else if (caller_str == "Prefetch") {
270
- return kPrefetch;
271
- } else if (caller_str == "Compaction") {
272
- return kCompaction;
273
- } else if (caller_str == "CompactionRefill") {
274
- return kCompactionRefill;
275
- } else if (caller_str == "Flush") {
276
- return kFlush;
277
- } else if (caller_str == "SSTFileReader") {
278
- return kSSTFileReader;
279
- } else if (caller_str == "Uncategorized") {
280
- return kUncategorized;
281
- }
282
- return TableReaderCaller::kMaxBlockCacheLookupCaller;
283
- }
284
-
285
- bool is_user_access(TableReaderCaller caller) {
286
- switch (caller) {
287
- case kUserGet:
288
- case kUserMultiGet:
289
- case kUserIterator:
290
- case kUserApproximateSize:
291
- case kUserVerifyChecksum:
292
- return true;
293
- default:
294
- break;
295
- }
296
- return false;
297
- }
298
-
299
- const char kBreakLine[] =
300
- "***************************************************************\n";
301
-
302
- void print_break_lines(uint32_t num_break_lines) {
303
- for (uint32_t i = 0; i < num_break_lines; i++) {
304
- fprintf(stdout, kBreakLine);
305
- }
306
- }
307
-
308
- double percent(uint64_t numerator, uint64_t denomenator) {
309
- if (denomenator == 0) {
310
- return -1;
311
- }
312
- return static_cast<double>(numerator * 100.0 / denomenator);
313
- }
314
-
315
- std::map<uint64_t, uint64_t> adjust_time_unit(
316
- const std::map<uint64_t, uint64_t>& time_stats, uint64_t time_unit) {
317
- if (time_unit == 1) {
318
- return time_stats;
319
- }
320
- std::map<uint64_t, uint64_t> adjusted_time_stats;
321
- for (auto const& time : time_stats) {
322
- adjusted_time_stats[static_cast<uint64_t>(time.first / time_unit)] +=
323
- time.second;
324
- }
325
- return adjusted_time_stats;
326
- }
327
- } // namespace
328
-
329
- void BlockCacheTraceAnalyzer::WriteMissRatioCurves() const {
330
- if (!cache_simulator_) {
331
- return;
332
- }
333
- if (output_dir_.empty()) {
334
- return;
335
- }
336
- uint64_t trace_duration =
337
- trace_end_timestamp_in_seconds_ - trace_start_timestamp_in_seconds_;
338
- uint64_t total_accesses = access_sequence_number_;
339
- const std::string output_miss_ratio_curve_path =
340
- output_dir_ + "/" + std::to_string(trace_duration) + "_" +
341
- std::to_string(total_accesses) + "_" + kMissRatioCurveFileName;
342
- std::ofstream out(output_miss_ratio_curve_path);
343
- if (!out.is_open()) {
344
- return;
345
- }
346
- // Write header.
347
- const std::string header =
348
- "cache_name,num_shard_bits,ghost_capacity,capacity,miss_ratio,total_"
349
- "accesses";
350
- out << header << std::endl;
351
- for (auto const& config_caches : cache_simulator_->sim_caches()) {
352
- const CacheConfiguration& config = config_caches.first;
353
- for (uint32_t i = 0; i < config.cache_capacities.size(); i++) {
354
- double miss_ratio =
355
- config_caches.second[i]->miss_ratio_stats().miss_ratio();
356
- // Write the body.
357
- out << config.cache_name;
358
- out << ",";
359
- out << config.num_shard_bits;
360
- out << ",";
361
- out << config.ghost_cache_capacity;
362
- out << ",";
363
- out << config.cache_capacities[i];
364
- out << ",";
365
- out << std::fixed << std::setprecision(4) << miss_ratio;
366
- out << ",";
367
- out << config_caches.second[i]->miss_ratio_stats().total_accesses();
368
- out << std::endl;
369
- }
370
- }
371
- out.close();
372
- }
373
-
374
- void BlockCacheTraceAnalyzer::UpdateFeatureVectors(
375
- const std::vector<uint64_t>& access_sequence_number_timeline,
376
- const std::vector<uint64_t>& access_timeline, const std::string& label,
377
- std::map<std::string, Features>* label_features,
378
- std::map<std::string, Predictions>* label_predictions) const {
379
- if (access_sequence_number_timeline.empty() || access_timeline.empty()) {
380
- return;
381
- }
382
- assert(access_timeline.size() == access_sequence_number_timeline.size());
383
- uint64_t prev_access_sequence_number = access_sequence_number_timeline[0];
384
- uint64_t prev_access_timestamp = access_timeline[0];
385
- for (uint32_t i = 0; i < access_sequence_number_timeline.size(); i++) {
386
- uint64_t num_accesses_since_last_access =
387
- access_sequence_number_timeline[i] - prev_access_sequence_number;
388
- uint64_t elapsed_time_since_last_access =
389
- access_timeline[i] - prev_access_timestamp;
390
- prev_access_sequence_number = access_sequence_number_timeline[i];
391
- prev_access_timestamp = access_timeline[i];
392
- if (i < access_sequence_number_timeline.size() - 1) {
393
- (*label_features)[label].num_accesses_since_last_access.push_back(
394
- num_accesses_since_last_access);
395
- (*label_features)[label].num_past_accesses.push_back(i);
396
- (*label_features)[label].elapsed_time_since_last_access.push_back(
397
- elapsed_time_since_last_access);
398
- }
399
- if (i >= 1) {
400
- (*label_predictions)[label].num_accesses_till_next_access.push_back(
401
- num_accesses_since_last_access);
402
- (*label_predictions)[label].elapsed_time_till_next_access.push_back(
403
- elapsed_time_since_last_access);
404
- }
405
- }
406
- }
407
-
408
- void BlockCacheTraceAnalyzer::WriteMissRatioTimeline(uint64_t time_unit) const {
409
- if (!cache_simulator_ || output_dir_.empty()) {
410
- return;
411
- }
412
- std::map<uint64_t, std::map<std::string, std::map<uint64_t, double>>>
413
- cs_name_timeline;
414
- uint64_t start_time = std::numeric_limits<uint64_t>::max();
415
- uint64_t end_time = 0;
416
- const std::map<uint64_t, uint64_t>& trace_num_misses =
417
- adjust_time_unit(miss_ratio_stats_.num_misses_timeline(), time_unit);
418
- const std::map<uint64_t, uint64_t>& trace_num_accesses =
419
- adjust_time_unit(miss_ratio_stats_.num_accesses_timeline(), time_unit);
420
- assert(trace_num_misses.size() == trace_num_accesses.size());
421
- for (auto const& num_miss : trace_num_misses) {
422
- uint64_t time = num_miss.first;
423
- start_time = std::min(start_time, time);
424
- end_time = std::max(end_time, time);
425
- uint64_t miss = num_miss.second;
426
- auto it = trace_num_accesses.find(time);
427
- assert(it != trace_num_accesses.end());
428
- uint64_t access = it->second;
429
- cs_name_timeline[std::numeric_limits<uint64_t>::max()]["trace"][time] =
430
- percent(miss, access);
431
- }
432
- for (auto const& config_caches : cache_simulator_->sim_caches()) {
433
- const CacheConfiguration& config = config_caches.first;
434
- std::string cache_label = config.cache_name + "-" +
435
- std::to_string(config.num_shard_bits) + "-" +
436
- std::to_string(config.ghost_cache_capacity);
437
- for (uint32_t i = 0; i < config.cache_capacities.size(); i++) {
438
- const std::map<uint64_t, uint64_t>& num_misses = adjust_time_unit(
439
- config_caches.second[i]->miss_ratio_stats().num_misses_timeline(),
440
- time_unit);
441
- const std::map<uint64_t, uint64_t>& num_accesses = adjust_time_unit(
442
- config_caches.second[i]->miss_ratio_stats().num_accesses_timeline(),
443
- time_unit);
444
- assert(num_misses.size() == num_accesses.size());
445
- for (auto const& num_miss : num_misses) {
446
- uint64_t time = num_miss.first;
447
- start_time = std::min(start_time, time);
448
- end_time = std::max(end_time, time);
449
- uint64_t miss = num_miss.second;
450
- auto it = num_accesses.find(time);
451
- assert(it != num_accesses.end());
452
- uint64_t access = it->second;
453
- cs_name_timeline[config.cache_capacities[i]][cache_label][time] =
454
- percent(miss, access);
455
- }
456
- }
457
- }
458
- for (auto const& it : cs_name_timeline) {
459
- const std::string output_miss_ratio_timeline_path =
460
- output_dir_ + "/" + std::to_string(it.first) + "_" +
461
- std::to_string(time_unit) + "_" + kFileNameSuffixMissRatioTimeline;
462
- std::ofstream out(output_miss_ratio_timeline_path);
463
- if (!out.is_open()) {
464
- return;
465
- }
466
- std::string header("time");
467
- for (uint64_t now = start_time; now <= end_time; now++) {
468
- header += ",";
469
- header += std::to_string(now);
470
- }
471
- out << header << std::endl;
472
- for (auto const& label : it.second) {
473
- std::string row(label.first);
474
- for (uint64_t now = start_time; now <= end_time; now++) {
475
- auto misses = label.second.find(now);
476
- row += ",";
477
- if (misses != label.second.end()) {
478
- row += std::to_string(misses->second);
479
- } else {
480
- row += "0";
481
- }
482
- }
483
- out << row << std::endl;
484
- }
485
- out.close();
486
- }
487
- }
488
-
489
- void BlockCacheTraceAnalyzer::WriteMissTimeline(uint64_t time_unit) const {
490
- if (!cache_simulator_ || output_dir_.empty()) {
491
- return;
492
- }
493
- std::map<uint64_t, std::map<std::string, std::map<uint64_t, uint64_t>>>
494
- cs_name_timeline;
495
- uint64_t start_time = std::numeric_limits<uint64_t>::max();
496
- uint64_t end_time = 0;
497
- const std::map<uint64_t, uint64_t>& trace_num_misses =
498
- adjust_time_unit(miss_ratio_stats_.num_misses_timeline(), time_unit);
499
- for (auto const& num_miss : trace_num_misses) {
500
- uint64_t time = num_miss.first;
501
- start_time = std::min(start_time, time);
502
- end_time = std::max(end_time, time);
503
- uint64_t miss = num_miss.second;
504
- cs_name_timeline[std::numeric_limits<uint64_t>::max()]["trace"][time] =
505
- miss;
506
- }
507
- for (auto const& config_caches : cache_simulator_->sim_caches()) {
508
- const CacheConfiguration& config = config_caches.first;
509
- std::string cache_label = config.cache_name + "-" +
510
- std::to_string(config.num_shard_bits) + "-" +
511
- std::to_string(config.ghost_cache_capacity);
512
- for (uint32_t i = 0; i < config.cache_capacities.size(); i++) {
513
- const std::map<uint64_t, uint64_t>& num_misses = adjust_time_unit(
514
- config_caches.second[i]->miss_ratio_stats().num_misses_timeline(),
515
- time_unit);
516
- for (auto const& num_miss : num_misses) {
517
- uint64_t time = num_miss.first;
518
- start_time = std::min(start_time, time);
519
- end_time = std::max(end_time, time);
520
- uint64_t miss = num_miss.second;
521
- cs_name_timeline[config.cache_capacities[i]][cache_label][time] = miss;
522
- }
523
- }
524
- }
525
- for (auto const& it : cs_name_timeline) {
526
- const std::string output_miss_ratio_timeline_path =
527
- output_dir_ + "/" + std::to_string(it.first) + "_" +
528
- std::to_string(time_unit) + "_" + kFileNameSuffixMissTimeline;
529
- std::ofstream out(output_miss_ratio_timeline_path);
530
- if (!out.is_open()) {
531
- return;
532
- }
533
- std::string header("time");
534
- for (uint64_t now = start_time; now <= end_time; now++) {
535
- header += ",";
536
- header += std::to_string(now);
537
- }
538
- out << header << std::endl;
539
- for (auto const& label : it.second) {
540
- std::string row(label.first);
541
- for (uint64_t now = start_time; now <= end_time; now++) {
542
- auto misses = label.second.find(now);
543
- row += ",";
544
- if (misses != label.second.end()) {
545
- row += std::to_string(misses->second);
546
- } else {
547
- row += "0";
548
- }
549
- }
550
- out << row << std::endl;
551
- }
552
- out.close();
553
- }
554
- }
555
-
556
- void BlockCacheTraceAnalyzer::WriteSkewness(
557
- const std::string& label_str, const std::vector<uint64_t>& percent_buckets,
558
- TraceType target_block_type) const {
559
- std::set<std::string> labels = ParseLabelStr(label_str);
560
- std::map<std::string, uint64_t> label_naccesses;
561
- uint64_t total_naccesses = 0;
562
- auto block_callback = [&](const std::string& cf_name, uint64_t fd,
563
- uint32_t level, TraceType type,
564
- const std::string& /*block_key*/, uint64_t block_id,
565
- const BlockAccessInfo& block) {
566
- if (target_block_type != TraceType::kTraceMax &&
567
- target_block_type != type) {
568
- return;
569
- }
570
- const std::string label = BuildLabel(
571
- labels, cf_name, fd, level, type,
572
- TableReaderCaller::kMaxBlockCacheLookupCaller, block_id, block);
573
- label_naccesses[label] += block.num_accesses;
574
- total_naccesses += block.num_accesses;
575
- };
576
- TraverseBlocks(block_callback, &labels);
577
- std::map<std::string, std::map<uint64_t, uint64_t>> label_bucket_naccesses;
578
- std::vector<std::pair<std::string, uint64_t>> pairs;
579
- for (auto const& itr : label_naccesses) {
580
- pairs.emplace_back(itr);
581
- }
582
- // Sort in descending order.
583
- sort(pairs.begin(), pairs.end(),
584
- [](const std::pair<std::string, uint64_t>& a,
585
- const std::pair<std::string, uint64_t>& b) {
586
- return b.second < a.second;
587
- });
588
-
589
- size_t prev_start_index = 0;
590
- for (auto const& percent : percent_buckets) {
591
- label_bucket_naccesses[label_str][percent] = 0;
592
- size_t end_index = 0;
593
- if (percent == std::numeric_limits<uint64_t>::max()) {
594
- end_index = label_naccesses.size();
595
- } else {
596
- end_index = percent * label_naccesses.size() / 100;
597
- }
598
- for (size_t i = prev_start_index; i < end_index; i++) {
599
- label_bucket_naccesses[label_str][percent] += pairs[i].second;
600
- }
601
- prev_start_index = end_index;
602
- }
603
- std::string filename_suffix;
604
- if (target_block_type != TraceType::kTraceMax) {
605
- filename_suffix = block_type_to_string(target_block_type);
606
- filename_suffix += "_";
607
- }
608
- filename_suffix += kFileNameSuffixSkew;
609
- WriteStatsToFile(label_str, percent_buckets, filename_suffix,
610
- label_bucket_naccesses, total_naccesses);
611
- }
612
-
613
- void BlockCacheTraceAnalyzer::WriteCorrelationFeatures(
614
- const std::string& label_str, uint32_t max_number_of_values) const {
615
- std::set<std::string> labels = ParseLabelStr(label_str);
616
- std::map<std::string, Features> label_features;
617
- std::map<std::string, Predictions> label_predictions;
618
- auto block_callback =
619
- [&](const std::string& cf_name, uint64_t fd, uint32_t level,
620
- TraceType block_type, const std::string& /*block_key*/,
621
- uint64_t /*block_key_id*/, const BlockAccessInfo& block) {
622
- if (block.table_id == 0 && labels.find(kGroupbyTable) != labels.end()) {
623
- // We only know table id information for get requests.
624
- return;
625
- }
626
- if (labels.find(kGroupbyCaller) != labels.end()) {
627
- // Group by caller.
628
- for (auto const& caller_map : block.caller_access_timeline) {
629
- const std::string label =
630
- BuildLabel(labels, cf_name, fd, level, block_type,
631
- caller_map.first, /*block_id=*/0, block);
632
- auto it = block.caller_access_sequence__number_timeline.find(
633
- caller_map.first);
634
- assert(it != block.caller_access_sequence__number_timeline.end());
635
- UpdateFeatureVectors(it->second, caller_map.second, label,
636
- &label_features, &label_predictions);
637
- }
638
- return;
639
- }
640
- const std::string label =
641
- BuildLabel(labels, cf_name, fd, level, block_type,
642
- TableReaderCaller::kMaxBlockCacheLookupCaller,
643
- /*block_id=*/0, block);
644
- UpdateFeatureVectors(block.access_sequence_number_timeline,
645
- block.access_timeline, label, &label_features,
646
- &label_predictions);
647
- };
648
- TraverseBlocks(block_callback, &labels);
649
- WriteCorrelationFeaturesToFile(label_str, label_features, label_predictions,
650
- max_number_of_values);
651
- }
652
-
653
- void BlockCacheTraceAnalyzer::WriteCorrelationFeaturesToFile(
654
- const std::string& label,
655
- const std::map<std::string, Features>& label_features,
656
- const std::map<std::string, Predictions>& label_predictions,
657
- uint32_t max_number_of_values) const {
658
- for (auto const& label_feature_vectors : label_features) {
659
- const Features& past = label_feature_vectors.second;
660
- auto it = label_predictions.find(label_feature_vectors.first);
661
- assert(it != label_predictions.end());
662
- const Predictions& future = it->second;
663
- const std::string output_path = output_dir_ + "/" + label + "_" +
664
- label_feature_vectors.first + "_" +
665
- kFileNameSuffixCorrelation;
666
- std::ofstream out(output_path);
667
- if (!out.is_open()) {
668
- return;
669
- }
670
- std::string header(
671
- "num_accesses_since_last_access,elapsed_time_since_last_access,num_"
672
- "past_accesses,num_accesses_till_next_access,elapsed_time_till_next_"
673
- "access");
674
- out << header << std::endl;
675
- std::vector<uint32_t> indexes;
676
- for (uint32_t i = 0; i < past.num_accesses_since_last_access.size(); i++) {
677
- indexes.push_back(i);
678
- }
679
- RandomShuffle(indexes.begin(), indexes.end());
680
- for (uint32_t i = 0; i < max_number_of_values && i < indexes.size(); i++) {
681
- uint32_t rand_index = indexes[i];
682
- out << std::to_string(past.num_accesses_since_last_access[rand_index])
683
- << ",";
684
- out << std::to_string(past.elapsed_time_since_last_access[rand_index])
685
- << ",";
686
- out << std::to_string(past.num_past_accesses[rand_index]) << ",";
687
- out << std::to_string(future.num_accesses_till_next_access[rand_index])
688
- << ",";
689
- out << std::to_string(future.elapsed_time_till_next_access[rand_index])
690
- << std::endl;
691
- }
692
- out.close();
693
- }
694
- }
695
-
696
- void BlockCacheTraceAnalyzer::WriteCorrelationFeaturesForGet(
697
- uint32_t max_number_of_values) const {
698
- std::string label = "GetKeyInfo";
699
- std::map<std::string, Features> label_features;
700
- std::map<std::string, Predictions> label_predictions;
701
- for (auto const& get_info : get_key_info_map_) {
702
- const GetKeyInfo& info = get_info.second;
703
- UpdateFeatureVectors(info.access_sequence_number_timeline,
704
- info.access_timeline, label, &label_features,
705
- &label_predictions);
706
- }
707
- WriteCorrelationFeaturesToFile(label, label_features, label_predictions,
708
- max_number_of_values);
709
- }
710
-
711
- std::set<std::string> BlockCacheTraceAnalyzer::ParseLabelStr(
712
- const std::string& label_str) const {
713
- std::stringstream ss(label_str);
714
- std::set<std::string> labels;
715
- // label_str is in the form of "label1_label2_label3", e.g., cf_bt.
716
- while (ss.good()) {
717
- std::string label_name;
718
- getline(ss, label_name, '_');
719
- if (kGroupbyLabels.find(label_name) == kGroupbyLabels.end()) {
720
- // Unknown label name.
721
- fprintf(stderr, "Unknown label name %s, label string %s\n",
722
- label_name.c_str(), label_str.c_str());
723
- return {};
724
- }
725
- labels.insert(label_name);
726
- }
727
- return labels;
728
- }
729
-
730
- std::string BlockCacheTraceAnalyzer::BuildLabel(
731
- const std::set<std::string>& labels, const std::string& cf_name,
732
- uint64_t fd, uint32_t level, TraceType type, TableReaderCaller caller,
733
- uint64_t block_key, const BlockAccessInfo& block) const {
734
- std::map<std::string, std::string> label_value_map;
735
- label_value_map[kGroupbyAll] = kGroupbyAll;
736
- label_value_map[kGroupbyLevel] = std::to_string(level);
737
- label_value_map[kGroupbyCaller] = caller_to_string(caller);
738
- label_value_map[kGroupbySSTFile] = std::to_string(fd);
739
- label_value_map[kGroupbyBlockType] = block_type_to_string(type);
740
- label_value_map[kGroupbyColumnFamily] = cf_name;
741
- label_value_map[kGroupbyBlock] = std::to_string(block_key);
742
- label_value_map[kGroupbyTable] = std::to_string(block.table_id);
743
- // Concatenate the label values.
744
- std::string label;
745
- for (auto const& l : labels) {
746
- label += label_value_map[l];
747
- label += "-";
748
- }
749
- if (!label.empty()) {
750
- label.pop_back();
751
- }
752
- return label;
753
- }
754
-
755
- void BlockCacheTraceAnalyzer::TraverseBlocks(
756
- std::function<void(const std::string& /*cf_name*/, uint64_t /*fd*/,
757
- uint32_t /*level*/, TraceType /*block_type*/,
758
- const std::string& /*block_key*/,
759
- uint64_t /*block_key_id*/,
760
- const BlockAccessInfo& /*block_access_info*/)>
761
- block_callback,
762
- std::set<std::string>* labels) const {
763
- for (auto const& cf_aggregates : cf_aggregates_map_) {
764
- // Stats per column family.
765
- const std::string& cf_name = cf_aggregates.first;
766
- for (auto const& file_aggregates : cf_aggregates.second.fd_aggregates_map) {
767
- // Stats per SST file.
768
- const uint64_t fd = file_aggregates.first;
769
- const uint32_t level = file_aggregates.second.level;
770
- for (auto const& block_type_aggregates :
771
- file_aggregates.second.block_type_aggregates_map) {
772
- // Stats per block type.
773
- const TraceType type = block_type_aggregates.first;
774
- for (auto const& block_access_info :
775
- block_type_aggregates.second.block_access_info_map) {
776
- // Stats per block.
777
- if (labels && block_access_info.second.table_id == 0 &&
778
- labels->find(kGroupbyTable) != labels->end()) {
779
- // We only know table id information for get requests.
780
- return;
781
- }
782
- block_callback(cf_name, fd, level, type, block_access_info.first,
783
- block_access_info.second.block_id,
784
- block_access_info.second);
785
- }
786
- }
787
- }
788
- }
789
- }
790
-
791
- void BlockCacheTraceAnalyzer::WriteGetSpatialLocality(
792
- const std::string& label_str,
793
- const std::vector<uint64_t>& percent_buckets) const {
794
- std::set<std::string> labels = ParseLabelStr(label_str);
795
- std::map<std::string, std::map<uint64_t, uint64_t>> label_pnrefkeys_nblocks;
796
- std::map<std::string, std::map<uint64_t, uint64_t>> label_pnrefs_nblocks;
797
- std::map<std::string, std::map<uint64_t, uint64_t>> label_pndatasize_nblocks;
798
- uint64_t nblocks = 0;
799
- auto block_callback = [&](const std::string& cf_name, uint64_t fd,
800
- uint32_t level, TraceType /*block_type*/,
801
- const std::string& /*block_key*/,
802
- uint64_t /*block_key_id*/,
803
- const BlockAccessInfo& block) {
804
- if (block.num_keys == 0) {
805
- return;
806
- }
807
- uint64_t naccesses = 0;
808
- for (auto const& key_access : block.key_num_access_map) {
809
- for (auto const& caller_access : key_access.second) {
810
- if (caller_access.first == TableReaderCaller::kUserGet) {
811
- naccesses += caller_access.second;
812
- }
813
- }
814
- }
815
- const std::string label =
816
- BuildLabel(labels, cf_name, fd, level, TraceType::kBlockTraceDataBlock,
817
- TableReaderCaller::kUserGet, /*block_id=*/0, block);
818
-
819
- const uint64_t percent_referenced_for_existing_keys =
820
- static_cast<uint64_t>(std::max(
821
- percent(block.key_num_access_map.size(), block.num_keys), 0.0));
822
- const uint64_t percent_accesses_for_existing_keys =
823
- static_cast<uint64_t>(std::max(
824
- percent(block.num_referenced_key_exist_in_block, naccesses), 0.0));
825
- const uint64_t percent_referenced_data_size = static_cast<uint64_t>(
826
- std::max(percent(block.referenced_data_size, block.block_size), 0.0));
827
- if (label_pnrefkeys_nblocks.find(label) == label_pnrefkeys_nblocks.end()) {
828
- for (auto const& percent_bucket : percent_buckets) {
829
- label_pnrefkeys_nblocks[label][percent_bucket] = 0;
830
- label_pnrefs_nblocks[label][percent_bucket] = 0;
831
- label_pndatasize_nblocks[label][percent_bucket] = 0;
832
- }
833
- }
834
- label_pnrefkeys_nblocks[label]
835
- .upper_bound(percent_referenced_for_existing_keys)
836
- ->second += 1;
837
- label_pnrefs_nblocks[label]
838
- .upper_bound(percent_accesses_for_existing_keys)
839
- ->second += 1;
840
- label_pndatasize_nblocks[label]
841
- .upper_bound(percent_referenced_data_size)
842
- ->second += 1;
843
- nblocks += 1;
844
- };
845
- TraverseBlocks(block_callback, &labels);
846
- WriteStatsToFile(label_str, percent_buckets, kFileNameSuffixPercentRefKeys,
847
- label_pnrefkeys_nblocks, nblocks);
848
- WriteStatsToFile(label_str, percent_buckets,
849
- kFileNameSuffixPercentAccessesOnRefKeys,
850
- label_pnrefs_nblocks, nblocks);
851
- WriteStatsToFile(label_str, percent_buckets,
852
- kFileNameSuffixPercentDataSizeOnRefKeys,
853
- label_pndatasize_nblocks, nblocks);
854
- }
855
-
856
- void BlockCacheTraceAnalyzer::WriteAccessTimeline(const std::string& label_str,
857
- uint64_t time_unit,
858
- bool user_access_only) const {
859
- std::set<std::string> labels = ParseLabelStr(label_str);
860
- uint64_t start_time = std::numeric_limits<uint64_t>::max();
861
- uint64_t end_time = 0;
862
- std::map<std::string, std::map<uint64_t, uint64_t>> label_access_timeline;
863
- std::map<uint64_t, std::vector<std::string>> access_count_block_id_map;
864
-
865
- auto block_callback = [&](const std::string& cf_name, uint64_t fd,
866
- uint32_t level, TraceType type,
867
- const std::string& /*block_key*/, uint64_t block_id,
868
- const BlockAccessInfo& block) {
869
- uint64_t naccesses = 0;
870
- for (auto const& timeline : block.caller_num_accesses_timeline) {
871
- const TableReaderCaller caller = timeline.first;
872
- if (user_access_only && !is_user_access(caller)) {
873
- continue;
874
- }
875
- const std::string label =
876
- BuildLabel(labels, cf_name, fd, level, type, caller, block_id, block);
877
- for (auto const& naccess : timeline.second) {
878
- const uint64_t timestamp = naccess.first / time_unit;
879
- const uint64_t num = naccess.second;
880
- label_access_timeline[label][timestamp] += num;
881
- start_time = std::min(start_time, timestamp);
882
- end_time = std::max(end_time, timestamp);
883
- naccesses += num;
884
- }
885
- }
886
- if (naccesses > 0) {
887
- access_count_block_id_map[naccesses].push_back(std::to_string(block_id));
888
- }
889
- };
890
- TraverseBlocks(block_callback, &labels);
891
-
892
- // We have label_access_timeline now. Write them into a file.
893
- const std::string user_access_prefix =
894
- user_access_only ? "user_access_only_" : "all_access_";
895
- const std::string output_path = output_dir_ + "/" + user_access_prefix +
896
- label_str + "_" + std::to_string(time_unit) +
897
- "_" + kFileNameSuffixAccessTimeline;
898
- std::ofstream out(output_path);
899
- if (!out.is_open()) {
900
- return;
901
- }
902
- std::string header("time");
903
- if (labels.find("block") != labels.end()) {
904
- for (uint64_t now = start_time; now <= end_time; now++) {
905
- header += ",";
906
- header += std::to_string(now);
907
- }
908
- out << header << std::endl;
909
- // Write the most frequently accessed blocks first.
910
- for (auto naccess_it = access_count_block_id_map.rbegin();
911
- naccess_it != access_count_block_id_map.rend(); naccess_it++) {
912
- for (auto& block_id_it : naccess_it->second) {
913
- std::string row(block_id_it);
914
- for (uint64_t now = start_time; now <= end_time; now++) {
915
- auto it = label_access_timeline[block_id_it].find(now);
916
- row += ",";
917
- if (it != label_access_timeline[block_id_it].end()) {
918
- row += std::to_string(it->second);
919
- } else {
920
- row += "0";
921
- }
922
- }
923
- out << row << std::endl;
924
- }
925
- }
926
- out.close();
927
- return;
928
- }
929
- for (uint64_t now = start_time; now <= end_time; now++) {
930
- header += ",";
931
- header += std::to_string(now);
932
- }
933
- out << header << std::endl;
934
- for (auto const& label : label_access_timeline) {
935
- std::string row(label.first);
936
- for (uint64_t now = start_time; now <= end_time; now++) {
937
- auto it = label.second.find(now);
938
- row += ",";
939
- if (it != label.second.end()) {
940
- row += std::to_string(it->second);
941
- } else {
942
- row += "0";
943
- }
944
- }
945
- out << row << std::endl;
946
- }
947
-
948
- out.close();
949
- }
950
-
951
- void BlockCacheTraceAnalyzer::WriteReuseDistance(
952
- const std::string& label_str,
953
- const std::vector<uint64_t>& distance_buckets) const {
954
- std::set<std::string> labels = ParseLabelStr(label_str);
955
- std::map<std::string, std::map<uint64_t, uint64_t>> label_distance_num_reuses;
956
- uint64_t total_num_reuses = 0;
957
- auto block_callback = [&](const std::string& cf_name, uint64_t fd,
958
- uint32_t level, TraceType type,
959
- const std::string& /*block_key*/, uint64_t block_id,
960
- const BlockAccessInfo& block) {
961
- const std::string label = BuildLabel(
962
- labels, cf_name, fd, level, type,
963
- TableReaderCaller::kMaxBlockCacheLookupCaller, block_id, block);
964
- if (label_distance_num_reuses.find(label) ==
965
- label_distance_num_reuses.end()) {
966
- // The first time we encounter this label.
967
- for (auto const& distance_bucket : distance_buckets) {
968
- label_distance_num_reuses[label][distance_bucket] = 0;
969
- }
970
- }
971
- for (auto const& reuse_distance : block.reuse_distance_count) {
972
- label_distance_num_reuses[label]
973
- .upper_bound(reuse_distance.first)
974
- ->second += reuse_distance.second;
975
- total_num_reuses += reuse_distance.second;
976
- }
977
- };
978
- TraverseBlocks(block_callback, &labels);
979
- // We have label_naccesses and label_distance_num_reuses now. Write them into
980
- // a file.
981
- const std::string output_path =
982
- output_dir_ + "/" + label_str + "_reuse_distance";
983
- std::ofstream out(output_path);
984
- if (!out.is_open()) {
985
- return;
986
- }
987
- std::string header("bucket");
988
- for (auto const& label_it : label_distance_num_reuses) {
989
- header += ",";
990
- header += label_it.first;
991
- }
992
- out << header << std::endl;
993
- for (auto const& bucket : distance_buckets) {
994
- std::string row(std::to_string(bucket));
995
- for (auto const& label_it : label_distance_num_reuses) {
996
- auto const& it = label_it.second.find(bucket);
997
- assert(it != label_it.second.end());
998
- row += ",";
999
- row += std::to_string(percent(it->second, total_num_reuses));
1000
- }
1001
- out << row << std::endl;
1002
- }
1003
- out.close();
1004
- }
1005
-
1006
- void BlockCacheTraceAnalyzer::UpdateReuseIntervalStats(
1007
- const std::string& label, const std::vector<uint64_t>& time_buckets,
1008
- const std::map<uint64_t, uint64_t> timeline,
1009
- std::map<std::string, std::map<uint64_t, uint64_t>>* label_time_num_reuses,
1010
- uint64_t* total_num_reuses) const {
1011
- assert(label_time_num_reuses);
1012
- assert(total_num_reuses);
1013
- if (label_time_num_reuses->find(label) == label_time_num_reuses->end()) {
1014
- // The first time we encounter this label.
1015
- for (auto const& time_bucket : time_buckets) {
1016
- (*label_time_num_reuses)[label][time_bucket] = 0;
1017
- }
1018
- }
1019
- auto it = timeline.begin();
1020
- uint64_t prev_timestamp = it->first;
1021
- const uint64_t prev_num = it->second;
1022
- it++;
1023
- // Reused within one second.
1024
- if (prev_num > 1) {
1025
- (*label_time_num_reuses)[label].upper_bound(0)->second += prev_num - 1;
1026
- *total_num_reuses += prev_num - 1;
1027
- }
1028
- while (it != timeline.end()) {
1029
- const uint64_t timestamp = it->first;
1030
- const uint64_t num = it->second;
1031
- const uint64_t reuse_interval = timestamp - prev_timestamp;
1032
- (*label_time_num_reuses)[label].upper_bound(reuse_interval)->second += 1;
1033
- if (num > 1) {
1034
- (*label_time_num_reuses)[label].upper_bound(0)->second += num - 1;
1035
- }
1036
- prev_timestamp = timestamp;
1037
- *total_num_reuses += num;
1038
- it++;
1039
- }
1040
- }
1041
-
1042
- void BlockCacheTraceAnalyzer::WriteStatsToFile(
1043
- const std::string& label_str, const std::vector<uint64_t>& time_buckets,
1044
- const std::string& filename_suffix,
1045
- const std::map<std::string, std::map<uint64_t, uint64_t>>& label_data,
1046
- uint64_t ntotal) const {
1047
- const std::string output_path =
1048
- output_dir_ + "/" + label_str + "_" + filename_suffix;
1049
- std::ofstream out(output_path);
1050
- if (!out.is_open()) {
1051
- return;
1052
- }
1053
- std::string header("bucket");
1054
- for (auto const& label_it : label_data) {
1055
- header += ",";
1056
- header += label_it.first;
1057
- }
1058
- out << header << std::endl;
1059
- for (auto const& bucket : time_buckets) {
1060
- std::string row(std::to_string(bucket));
1061
- for (auto const& label_it : label_data) {
1062
- auto const& it = label_it.second.find(bucket);
1063
- assert(it != label_it.second.end());
1064
- row += ",";
1065
- row += std::to_string(percent(it->second, ntotal));
1066
- }
1067
- out << row << std::endl;
1068
- }
1069
- out.close();
1070
- }
1071
-
1072
- void BlockCacheTraceAnalyzer::WriteReuseInterval(
1073
- const std::string& label_str,
1074
- const std::vector<uint64_t>& time_buckets) const {
1075
- std::set<std::string> labels = ParseLabelStr(label_str);
1076
- std::map<std::string, std::map<uint64_t, uint64_t>> label_time_num_reuses;
1077
- std::map<std::string, std::map<uint64_t, uint64_t>> label_avg_reuse_nblocks;
1078
- std::map<std::string, std::map<uint64_t, uint64_t>> label_avg_reuse_naccesses;
1079
-
1080
- uint64_t total_num_reuses = 0;
1081
- uint64_t total_nblocks = 0;
1082
- uint64_t total_accesses = 0;
1083
- auto block_callback = [&](const std::string& cf_name, uint64_t fd,
1084
- uint32_t level, TraceType type,
1085
- const std::string& /*block_key*/, uint64_t block_id,
1086
- const BlockAccessInfo& block) {
1087
- total_nblocks++;
1088
- total_accesses += block.num_accesses;
1089
- uint64_t avg_reuse_interval = 0;
1090
- if (block.num_accesses > 1) {
1091
- avg_reuse_interval = ((block.last_access_time - block.first_access_time) /
1092
- kMicrosInSecond) /
1093
- block.num_accesses;
1094
- } else {
1095
- avg_reuse_interval = std::numeric_limits<uint64_t>::max() - 1;
1096
- }
1097
- if (labels.find(kGroupbyCaller) != labels.end()) {
1098
- for (auto const& timeline : block.caller_num_accesses_timeline) {
1099
- const TableReaderCaller caller = timeline.first;
1100
- const std::string label = BuildLabel(labels, cf_name, fd, level, type,
1101
- caller, block_id, block);
1102
- UpdateReuseIntervalStats(label, time_buckets, timeline.second,
1103
- &label_time_num_reuses, &total_num_reuses);
1104
- }
1105
- return;
1106
- }
1107
- // Does not group by caller so we need to flatten the access timeline.
1108
- const std::string label = BuildLabel(
1109
- labels, cf_name, fd, level, type,
1110
- TableReaderCaller::kMaxBlockCacheLookupCaller, block_id, block);
1111
- std::map<uint64_t, uint64_t> timeline;
1112
- for (auto const& caller_timeline : block.caller_num_accesses_timeline) {
1113
- for (auto const& time_naccess : caller_timeline.second) {
1114
- timeline[time_naccess.first] += time_naccess.second;
1115
- }
1116
- }
1117
- UpdateReuseIntervalStats(label, time_buckets, timeline,
1118
- &label_time_num_reuses, &total_num_reuses);
1119
- if (label_avg_reuse_nblocks.find(label) == label_avg_reuse_nblocks.end()) {
1120
- for (auto const& time_bucket : time_buckets) {
1121
- label_avg_reuse_nblocks[label][time_bucket] = 0;
1122
- label_avg_reuse_naccesses[label][time_bucket] = 0;
1123
- }
1124
- }
1125
- label_avg_reuse_nblocks[label].upper_bound(avg_reuse_interval)->second += 1;
1126
- label_avg_reuse_naccesses[label].upper_bound(avg_reuse_interval)->second +=
1127
- block.num_accesses;
1128
- };
1129
- TraverseBlocks(block_callback, &labels);
1130
-
1131
- // Write the stats into files.
1132
- WriteStatsToFile(label_str, time_buckets, kFileNameSuffixReuseInterval,
1133
- label_time_num_reuses, total_num_reuses);
1134
- WriteStatsToFile(label_str, time_buckets, kFileNameSuffixAvgReuseInterval,
1135
- label_avg_reuse_nblocks, total_nblocks);
1136
- WriteStatsToFile(label_str, time_buckets,
1137
- kFileNameSuffixAvgReuseIntervalNaccesses,
1138
- label_avg_reuse_naccesses, total_accesses);
1139
- }
1140
-
1141
- void BlockCacheTraceAnalyzer::WriteReuseLifetime(
1142
- const std::string& label_str,
1143
- const std::vector<uint64_t>& time_buckets) const {
1144
- std::set<std::string> labels = ParseLabelStr(label_str);
1145
- std::map<std::string, std::map<uint64_t, uint64_t>> label_lifetime_nblocks;
1146
- uint64_t total_nblocks = 0;
1147
- auto block_callback = [&](const std::string& cf_name, uint64_t fd,
1148
- uint32_t level, TraceType type,
1149
- const std::string& /*block_key*/, uint64_t block_id,
1150
- const BlockAccessInfo& block) {
1151
- uint64_t lifetime = 0;
1152
- if (block.num_accesses > 1) {
1153
- lifetime =
1154
- (block.last_access_time - block.first_access_time) / kMicrosInSecond;
1155
- } else {
1156
- lifetime = std::numeric_limits<uint64_t>::max() - 1;
1157
- }
1158
- const std::string label = BuildLabel(
1159
- labels, cf_name, fd, level, type,
1160
- TableReaderCaller::kMaxBlockCacheLookupCaller, block_id, block);
1161
-
1162
- if (label_lifetime_nblocks.find(label) == label_lifetime_nblocks.end()) {
1163
- // The first time we encounter this label.
1164
- for (auto const& time_bucket : time_buckets) {
1165
- label_lifetime_nblocks[label][time_bucket] = 0;
1166
- }
1167
- }
1168
- label_lifetime_nblocks[label].upper_bound(lifetime)->second += 1;
1169
- total_nblocks += 1;
1170
- };
1171
- TraverseBlocks(block_callback, &labels);
1172
- WriteStatsToFile(label_str, time_buckets, kFileNameSuffixReuseLifetime,
1173
- label_lifetime_nblocks, total_nblocks);
1174
- }
1175
-
1176
- void BlockCacheTraceAnalyzer::WriteBlockReuseTimeline(
1177
- const uint64_t reuse_window, bool user_access_only,
1178
- TraceType block_type) const {
1179
- // A map from block key to an array of bools that states whether a block is
1180
- // accessed in a time window.
1181
- std::map<uint64_t, std::vector<bool>> block_accessed;
1182
- const uint64_t trace_duration =
1183
- trace_end_timestamp_in_seconds_ - trace_start_timestamp_in_seconds_;
1184
- const uint64_t reuse_vector_size = (trace_duration / reuse_window);
1185
- if (reuse_vector_size < 2) {
1186
- // The reuse window is less than 2. We cannot calculate the reused
1187
- // percentage of blocks.
1188
- return;
1189
- }
1190
- auto block_callback = [&](const std::string& /*cf_name*/, uint64_t /*fd*/,
1191
- uint32_t /*level*/, TraceType /*type*/,
1192
- const std::string& /*block_key*/, uint64_t block_id,
1193
- const BlockAccessInfo& block) {
1194
- if (block_accessed.find(block_id) == block_accessed.end()) {
1195
- block_accessed[block_id].resize(reuse_vector_size);
1196
- for (uint64_t i = 0; i < reuse_vector_size; i++) {
1197
- block_accessed[block_id][i] = false;
1198
- }
1199
- }
1200
- for (auto const& caller_num : block.caller_num_accesses_timeline) {
1201
- const TableReaderCaller caller = caller_num.first;
1202
- for (auto const& timeline : caller_num.second) {
1203
- const uint64_t timestamp = timeline.first;
1204
- const uint64_t elapsed_time =
1205
- timestamp - trace_start_timestamp_in_seconds_;
1206
- if (!user_access_only || is_user_access(caller)) {
1207
- uint64_t index =
1208
- std::min(elapsed_time / reuse_window, reuse_vector_size - 1);
1209
- block_accessed[block_id][index] = true;
1210
- }
1211
- }
1212
- }
1213
- };
1214
- TraverseBlocks(block_callback);
1215
-
1216
- // A cell is the number of blocks accessed in a reuse window.
1217
- std::unique_ptr<uint64_t[]> reuse_table(
1218
- new uint64_t[reuse_vector_size * reuse_vector_size]);
1219
- for (uint64_t start_time = 0; start_time < reuse_vector_size; start_time++) {
1220
- // Initialize the reuse_table.
1221
- for (uint64_t i = 0; i < reuse_vector_size; i++) {
1222
- reuse_table[start_time * reuse_vector_size + i] = 0;
1223
- }
1224
- // Examine all blocks.
1225
- for (auto const& block : block_accessed) {
1226
- for (uint64_t i = start_time; i < reuse_vector_size; i++) {
1227
- if (block.second[start_time] && block.second[i]) {
1228
- // This block is accessed at start time and at the current time. We
1229
- // increment reuse_table[start_time][i] since it is reused at the ith
1230
- // window.
1231
- reuse_table[start_time * reuse_vector_size + i]++;
1232
- }
1233
- }
1234
- }
1235
- }
1236
- const std::string user_access_prefix =
1237
- user_access_only ? "_user_access_only_" : "_all_access_";
1238
- const std::string output_path =
1239
- output_dir_ + "/" + block_type_to_string(block_type) +
1240
- user_access_prefix + std::to_string(reuse_window) + "_" +
1241
- kFileNameSuffixAccessReuseBlocksTimeline;
1242
- std::ofstream out(output_path);
1243
- if (!out.is_open()) {
1244
- return;
1245
- }
1246
- std::string header("start_time");
1247
- for (uint64_t start_time = 0; start_time < reuse_vector_size; start_time++) {
1248
- header += ",";
1249
- header += std::to_string(start_time);
1250
- }
1251
- out << header << std::endl;
1252
- for (uint64_t start_time = 0; start_time < reuse_vector_size; start_time++) {
1253
- std::string row(std::to_string(start_time * reuse_window));
1254
- for (uint64_t j = 0; j < reuse_vector_size; j++) {
1255
- row += ",";
1256
- if (j < start_time) {
1257
- row += "100.0";
1258
- } else {
1259
- row += std::to_string(
1260
- percent(reuse_table[start_time * reuse_vector_size + j],
1261
- reuse_table[start_time * reuse_vector_size + start_time]));
1262
- }
1263
- }
1264
- out << row << std::endl;
1265
- }
1266
- out.close();
1267
- }
1268
-
1269
- std::string BlockCacheTraceAnalyzer::OutputPercentAccessStats(
1270
- uint64_t total_accesses,
1271
- const std::map<std::string, uint64_t>& cf_access_count) const {
1272
- std::string row;
1273
- for (auto const& cf_aggregates : cf_aggregates_map_) {
1274
- const std::string& cf_name = cf_aggregates.first;
1275
- const auto& naccess = cf_access_count.find(cf_name);
1276
- row += ",";
1277
- if (naccess != cf_access_count.end()) {
1278
- row += std::to_string(percent(naccess->second, total_accesses));
1279
- } else {
1280
- row += "0";
1281
- }
1282
- }
1283
- return row;
1284
- }
1285
-
1286
- void BlockCacheTraceAnalyzer::WritePercentAccessSummaryStats() const {
1287
- std::map<TableReaderCaller, std::map<std::string, uint64_t>>
1288
- caller_cf_accesses;
1289
- uint64_t total_accesses = 0;
1290
- auto block_callback =
1291
- [&](const std::string& cf_name, uint64_t /*fd*/, uint32_t /*level*/,
1292
- TraceType /*type*/, const std::string& /*block_key*/,
1293
- uint64_t /*block_id*/, const BlockAccessInfo& block) {
1294
- for (auto const& caller_num : block.caller_num_access_map) {
1295
- const TableReaderCaller caller = caller_num.first;
1296
- const uint64_t naccess = caller_num.second;
1297
- caller_cf_accesses[caller][cf_name] += naccess;
1298
- total_accesses += naccess;
1299
- }
1300
- };
1301
- TraverseBlocks(block_callback);
1302
-
1303
- const std::string output_path =
1304
- output_dir_ + "/" + kFileNameSuffixPercentOfAccessSummary;
1305
- std::ofstream out(output_path);
1306
- if (!out.is_open()) {
1307
- return;
1308
- }
1309
- std::string header("caller");
1310
- for (auto const& cf_name : cf_aggregates_map_) {
1311
- header += ",";
1312
- header += cf_name.first;
1313
- }
1314
- out << header << std::endl;
1315
- for (auto const& cf_naccess_it : caller_cf_accesses) {
1316
- const TableReaderCaller caller = cf_naccess_it.first;
1317
- std::string row;
1318
- row += caller_to_string(caller);
1319
- row += OutputPercentAccessStats(total_accesses, cf_naccess_it.second);
1320
- out << row << std::endl;
1321
- }
1322
- out.close();
1323
- }
1324
-
1325
- void BlockCacheTraceAnalyzer::WriteDetailedPercentAccessSummaryStats(
1326
- TableReaderCaller analyzing_caller) const {
1327
- std::map<uint32_t, std::map<std::string, uint64_t>> level_cf_accesses;
1328
- std::map<TraceType, std::map<std::string, uint64_t>> bt_cf_accesses;
1329
- uint64_t total_accesses = 0;
1330
- auto block_callback =
1331
- [&](const std::string& cf_name, uint64_t /*fd*/, uint32_t level,
1332
- TraceType type, const std::string& /*block_key*/,
1333
- uint64_t /*block_id*/, const BlockAccessInfo& block) {
1334
- for (auto const& caller_num : block.caller_num_access_map) {
1335
- const TableReaderCaller caller = caller_num.first;
1336
- if (caller == analyzing_caller) {
1337
- const uint64_t naccess = caller_num.second;
1338
- level_cf_accesses[level][cf_name] += naccess;
1339
- bt_cf_accesses[type][cf_name] += naccess;
1340
- total_accesses += naccess;
1341
- }
1342
- }
1343
- };
1344
- TraverseBlocks(block_callback);
1345
- {
1346
- const std::string output_path =
1347
- output_dir_ + "/" + caller_to_string(analyzing_caller) + "_level_" +
1348
- kFileNameSuffixPercentOfAccessSummary;
1349
- std::ofstream out(output_path);
1350
- if (!out.is_open()) {
1351
- return;
1352
- }
1353
- std::string header("level");
1354
- for (auto const& cf_name : cf_aggregates_map_) {
1355
- header += ",";
1356
- header += cf_name.first;
1357
- }
1358
- out << header << std::endl;
1359
- for (auto const& level_naccess_it : level_cf_accesses) {
1360
- const uint32_t level = level_naccess_it.first;
1361
- std::string row;
1362
- row += std::to_string(level);
1363
- row += OutputPercentAccessStats(total_accesses, level_naccess_it.second);
1364
- out << row << std::endl;
1365
- }
1366
- out.close();
1367
- }
1368
- {
1369
- const std::string output_path =
1370
- output_dir_ + "/" + caller_to_string(analyzing_caller) + "_bt_" +
1371
- kFileNameSuffixPercentOfAccessSummary;
1372
- std::ofstream out(output_path);
1373
- if (!out.is_open()) {
1374
- return;
1375
- }
1376
- std::string header("bt");
1377
- for (auto const& cf_name : cf_aggregates_map_) {
1378
- header += ",";
1379
- header += cf_name.first;
1380
- }
1381
- out << header << std::endl;
1382
- for (auto const& bt_naccess_it : bt_cf_accesses) {
1383
- const TraceType bt = bt_naccess_it.first;
1384
- std::string row;
1385
- row += block_type_to_string(bt);
1386
- row += OutputPercentAccessStats(total_accesses, bt_naccess_it.second);
1387
- out << row << std::endl;
1388
- }
1389
- out.close();
1390
- }
1391
- }
1392
-
1393
- void BlockCacheTraceAnalyzer::WriteAccessCountSummaryStats(
1394
- const std::vector<uint64_t>& access_count_buckets,
1395
- bool user_access_only) const {
1396
- // x: buckets.
1397
- // y: # of accesses.
1398
- std::map<std::string, std::map<uint64_t, uint64_t>> bt_access_nblocks;
1399
- std::map<std::string, std::map<uint64_t, uint64_t>> cf_access_nblocks;
1400
- uint64_t total_nblocks = 0;
1401
- auto block_callback =
1402
- [&](const std::string& cf_name, uint64_t /*fd*/, uint32_t /*level*/,
1403
- TraceType type, const std::string& /*block_key*/,
1404
- uint64_t /*block_id*/, const BlockAccessInfo& block) {
1405
- const std::string type_str = block_type_to_string(type);
1406
- if (cf_access_nblocks.find(cf_name) == cf_access_nblocks.end()) {
1407
- // initialize.
1408
- for (auto& access : access_count_buckets) {
1409
- cf_access_nblocks[cf_name][access] = 0;
1410
- }
1411
- }
1412
- if (bt_access_nblocks.find(type_str) == bt_access_nblocks.end()) {
1413
- // initialize.
1414
- for (auto& access : access_count_buckets) {
1415
- bt_access_nblocks[type_str][access] = 0;
1416
- }
1417
- }
1418
- uint64_t naccesses = 0;
1419
- for (auto const& caller_access : block.caller_num_access_map) {
1420
- if (!user_access_only || is_user_access(caller_access.first)) {
1421
- naccesses += caller_access.second;
1422
- }
1423
- }
1424
- if (naccesses == 0) {
1425
- return;
1426
- }
1427
- total_nblocks += 1;
1428
- bt_access_nblocks[type_str].upper_bound(naccesses)->second += 1;
1429
- cf_access_nblocks[cf_name].upper_bound(naccesses)->second += 1;
1430
- };
1431
- TraverseBlocks(block_callback);
1432
- const std::string user_access_prefix =
1433
- user_access_only ? "user_access_only_" : "all_access_";
1434
- WriteStatsToFile("cf", access_count_buckets,
1435
- user_access_prefix + kFileNameSuffixAccessCountSummary,
1436
- cf_access_nblocks, total_nblocks);
1437
- WriteStatsToFile("bt", access_count_buckets,
1438
- user_access_prefix + kFileNameSuffixAccessCountSummary,
1439
- bt_access_nblocks, total_nblocks);
1440
- }
1441
-
1442
- BlockCacheTraceAnalyzer::BlockCacheTraceAnalyzer(
1443
- const std::string& trace_file_path, const std::string& output_dir,
1444
- const std::string& human_readable_trace_file_path,
1445
- bool compute_reuse_distance, bool mrc_only,
1446
- bool is_human_readable_trace_file,
1447
- std::unique_ptr<BlockCacheTraceSimulator>&& cache_simulator)
1448
- : env_(ROCKSDB_NAMESPACE::Env::Default()),
1449
- trace_file_path_(trace_file_path),
1450
- output_dir_(output_dir),
1451
- human_readable_trace_file_path_(human_readable_trace_file_path),
1452
- compute_reuse_distance_(compute_reuse_distance),
1453
- mrc_only_(mrc_only),
1454
- is_human_readable_trace_file_(is_human_readable_trace_file),
1455
- cache_simulator_(std::move(cache_simulator)) {}
1456
-
1457
- void BlockCacheTraceAnalyzer::ComputeReuseDistance(
1458
- BlockAccessInfo* info) const {
1459
- assert(info);
1460
- if (info->num_accesses == 0) {
1461
- return;
1462
- }
1463
- uint64_t reuse_distance = 0;
1464
- for (auto const& block_key : info->unique_blocks_since_last_access) {
1465
- auto const& it = block_info_map_.find(block_key);
1466
- // This block must exist.
1467
- assert(it != block_info_map_.end());
1468
- reuse_distance += it->second->block_size;
1469
- }
1470
- info->reuse_distance_count[reuse_distance] += 1;
1471
- // We clear this hash set since this is the second access on this block.
1472
- info->unique_blocks_since_last_access.clear();
1473
- }
1474
-
1475
- Status BlockCacheTraceAnalyzer::RecordAccess(
1476
- const BlockCacheTraceRecord& access) {
1477
- ColumnFamilyAccessInfoAggregate& cf_aggr = cf_aggregates_map_[access.cf_name];
1478
- SSTFileAccessInfoAggregate& file_aggr =
1479
- cf_aggr.fd_aggregates_map[access.sst_fd_number];
1480
- file_aggr.level = access.level;
1481
- BlockTypeAccessInfoAggregate& block_type_aggr =
1482
- file_aggr.block_type_aggregates_map[access.block_type];
1483
- if (block_type_aggr.block_access_info_map.find(access.block_key) ==
1484
- block_type_aggr.block_access_info_map.end()) {
1485
- block_type_aggr.block_access_info_map[access.block_key].block_id =
1486
- unique_block_id_;
1487
- unique_block_id_++;
1488
- }
1489
- BlockAccessInfo& block_access_info =
1490
- block_type_aggr.block_access_info_map[access.block_key];
1491
- if (compute_reuse_distance_) {
1492
- ComputeReuseDistance(&block_access_info);
1493
- }
1494
- block_access_info.AddAccess(access, access_sequence_number_);
1495
- block_info_map_[access.block_key] = &block_access_info;
1496
- uint64_t get_key_id = 0;
1497
- if (access.caller == TableReaderCaller::kUserGet &&
1498
- access.get_id != BlockCacheTraceHelper::kReservedGetId) {
1499
- std::string user_key = ExtractUserKey(access.referenced_key).ToString();
1500
- if (get_key_info_map_.find(user_key) == get_key_info_map_.end()) {
1501
- get_key_info_map_[user_key].key_id = unique_get_key_id_;
1502
- unique_get_key_id_++;
1503
- }
1504
- get_key_id = get_key_info_map_[user_key].key_id;
1505
- get_key_info_map_[user_key].AddAccess(access, access_sequence_number_);
1506
- }
1507
-
1508
- if (compute_reuse_distance_) {
1509
- // Add this block to all existing blocks.
1510
- for (auto& cf_aggregates : cf_aggregates_map_) {
1511
- for (auto& file_aggregates : cf_aggregates.second.fd_aggregates_map) {
1512
- for (auto& block_type_aggregates :
1513
- file_aggregates.second.block_type_aggregates_map) {
1514
- for (auto& existing_block :
1515
- block_type_aggregates.second.block_access_info_map) {
1516
- existing_block.second.unique_blocks_since_last_access.insert(
1517
- access.block_key);
1518
- }
1519
- }
1520
- }
1521
- }
1522
- }
1523
- return human_readable_trace_writer_.WriteHumanReadableTraceRecord(
1524
- access, block_access_info.block_id, get_key_id);
1525
- }
1526
-
1527
- Status BlockCacheTraceAnalyzer::Analyze() {
1528
- SystemClock* clock = env_->GetSystemClock().get();
1529
- std::unique_ptr<BlockCacheTraceReader> reader;
1530
- Status s = Status::OK();
1531
- if (is_human_readable_trace_file_) {
1532
- reader.reset(new BlockCacheHumanReadableTraceReader(trace_file_path_));
1533
- } else {
1534
- std::unique_ptr<TraceReader> trace_reader;
1535
- s = NewFileTraceReader(env_, EnvOptions(), trace_file_path_, &trace_reader);
1536
- if (!s.ok()) {
1537
- return s;
1538
- }
1539
- reader.reset(new BlockCacheTraceReader(std::move(trace_reader)));
1540
- s = reader->ReadHeader(&header_);
1541
- if (!s.ok()) {
1542
- return s;
1543
- }
1544
- }
1545
- if (!human_readable_trace_file_path_.empty()) {
1546
- s = human_readable_trace_writer_.NewWritableFile(
1547
- human_readable_trace_file_path_, env_);
1548
- if (!s.ok()) {
1549
- return s;
1550
- }
1551
- }
1552
- uint64_t start = clock->NowMicros();
1553
- uint64_t time_interval = 0;
1554
- while (s.ok()) {
1555
- BlockCacheTraceRecord access;
1556
- s = reader->ReadAccess(&access);
1557
- if (!s.ok()) {
1558
- break;
1559
- }
1560
- if (!mrc_only_) {
1561
- s = RecordAccess(access);
1562
- if (!s.ok()) {
1563
- break;
1564
- }
1565
- }
1566
- if (trace_start_timestamp_in_seconds_ == 0) {
1567
- trace_start_timestamp_in_seconds_ =
1568
- access.access_timestamp / kMicrosInSecond;
1569
- }
1570
- trace_end_timestamp_in_seconds_ = access.access_timestamp / kMicrosInSecond;
1571
- miss_ratio_stats_.UpdateMetrics(access.access_timestamp,
1572
- is_user_access(access.caller),
1573
- !access.is_cache_hit);
1574
- caller_miss_ratio_stats_map_[access.caller].UpdateMetrics(
1575
- access.access_timestamp, is_user_access(access.caller),
1576
- !access.is_cache_hit);
1577
-
1578
- if (cache_simulator_) {
1579
- cache_simulator_->Access(access);
1580
- }
1581
- access_sequence_number_++;
1582
- uint64_t now = clock->NowMicros();
1583
- uint64_t duration = (now - start) / kMicrosInSecond;
1584
- if (duration > 10 * time_interval) {
1585
- uint64_t trace_duration =
1586
- trace_end_timestamp_in_seconds_ - trace_start_timestamp_in_seconds_;
1587
- fprintf(stdout,
1588
- "Running for %" PRIu64 " seconds: Processed %" PRIu64
1589
- " records/second. Trace duration %" PRIu64
1590
- " seconds. Observed miss ratio %.2f\n",
1591
- duration, duration > 0 ? access_sequence_number_ / duration : 0,
1592
- trace_duration, miss_ratio_stats_.miss_ratio());
1593
-
1594
- for (const auto& caller : caller_miss_ratio_stats_map_) {
1595
- fprintf(stdout, "Caller %s: Observed miss ratio %.2f\n",
1596
- caller_to_string(caller.first).c_str(),
1597
- caller.second.miss_ratio());
1598
- }
1599
- print_break_lines(/*num_break_lines=*/1);
1600
-
1601
- time_interval++;
1602
- }
1603
- }
1604
- uint64_t now = clock->NowMicros();
1605
- uint64_t duration = (now - start) / kMicrosInSecond;
1606
- uint64_t trace_duration =
1607
- trace_end_timestamp_in_seconds_ - trace_start_timestamp_in_seconds_;
1608
- fprintf(stdout,
1609
- "Running for %" PRIu64 " seconds: Processed %" PRIu64
1610
- " records/second. Trace duration %" PRIu64
1611
- " seconds. Observed miss ratio %.2f\n",
1612
- duration, duration > 0 ? access_sequence_number_ / duration : 0,
1613
- trace_duration, miss_ratio_stats_.miss_ratio());
1614
- for (const auto& caller : caller_miss_ratio_stats_map_) {
1615
- fprintf(stdout, "Caller %s: Observed miss ratio %.2f\n",
1616
- caller_to_string(caller.first).c_str(), caller.second.miss_ratio());
1617
- }
1618
- print_break_lines(/*num_break_lines=*/1);
1619
- return s;
1620
- }
1621
-
1622
- void BlockCacheTraceAnalyzer::PrintBlockSizeStats() const {
1623
- HistogramStat bs_stats;
1624
- std::map<TraceType, HistogramStat> bt_stats_map;
1625
- std::map<std::string, std::map<TraceType, HistogramStat>> cf_bt_stats_map;
1626
- auto block_callback =
1627
- [&](const std::string& cf_name, uint64_t /*fd*/, uint32_t /*level*/,
1628
- TraceType type, const std::string& /*block_key*/,
1629
- uint64_t /*block_id*/, const BlockAccessInfo& block) {
1630
- if (block.block_size == 0) {
1631
- // Block size may be 0 when 1) compaction observes a cache miss and
1632
- // does not insert the missing block into the cache again. 2)
1633
- // fetching filter blocks in SST files at the last level.
1634
- return;
1635
- }
1636
- bs_stats.Add(block.block_size);
1637
- bt_stats_map[type].Add(block.block_size);
1638
- cf_bt_stats_map[cf_name][type].Add(block.block_size);
1639
- };
1640
- TraverseBlocks(block_callback);
1641
- fprintf(stdout, "Block size stats: \n%s", bs_stats.ToString().c_str());
1642
- for (auto const& bt_stats : bt_stats_map) {
1643
- print_break_lines(/*num_break_lines=*/1);
1644
- fprintf(stdout, "Block size stats for block type %s: \n%s",
1645
- block_type_to_string(bt_stats.first).c_str(),
1646
- bt_stats.second.ToString().c_str());
1647
- }
1648
- for (auto const& cf_bt_stats : cf_bt_stats_map) {
1649
- const std::string& cf_name = cf_bt_stats.first;
1650
- for (auto const& bt_stats : cf_bt_stats.second) {
1651
- print_break_lines(/*num_break_lines=*/1);
1652
- fprintf(stdout,
1653
- "Block size stats for column family %s and block type %s: \n%s",
1654
- cf_name.c_str(), block_type_to_string(bt_stats.first).c_str(),
1655
- bt_stats.second.ToString().c_str());
1656
- }
1657
- }
1658
- }
1659
-
1660
- void BlockCacheTraceAnalyzer::PrintAccessCountStats(bool user_access_only,
1661
- uint32_t bottom_k,
1662
- uint32_t top_k) const {
1663
- HistogramStat access_stats;
1664
- std::map<TraceType, HistogramStat> bt_stats_map;
1665
- std::map<std::string, std::map<TraceType, HistogramStat>> cf_bt_stats_map;
1666
- std::map<uint64_t, std::vector<std::string>> access_count_blocks;
1667
- auto block_callback = [&](const std::string& cf_name, uint64_t /*fd*/,
1668
- uint32_t /*level*/, TraceType type,
1669
- const std::string& block_key, uint64_t /*block_id*/,
1670
- const BlockAccessInfo& block) {
1671
- uint64_t naccesses = 0;
1672
- for (auto const& caller_access : block.caller_num_access_map) {
1673
- if (!user_access_only || is_user_access(caller_access.first)) {
1674
- naccesses += caller_access.second;
1675
- }
1676
- }
1677
- if (naccesses == 0) {
1678
- return;
1679
- }
1680
- if (type == TraceType::kBlockTraceDataBlock) {
1681
- access_count_blocks[naccesses].push_back(block_key);
1682
- }
1683
- access_stats.Add(naccesses);
1684
- bt_stats_map[type].Add(naccesses);
1685
- cf_bt_stats_map[cf_name][type].Add(naccesses);
1686
- };
1687
- TraverseBlocks(block_callback);
1688
- fprintf(stdout,
1689
- "Block access count stats: The number of accesses per block. %s\n%s",
1690
- user_access_only ? "User accesses only" : "All accesses",
1691
- access_stats.ToString().c_str());
1692
- uint32_t bottom_k_index = 0;
1693
- for (auto naccess_it = access_count_blocks.begin();
1694
- naccess_it != access_count_blocks.end(); naccess_it++) {
1695
- bottom_k_index++;
1696
- if (bottom_k_index >= bottom_k) {
1697
- break;
1698
- }
1699
- std::map<TableReaderCaller, uint64_t> caller_naccesses;
1700
- uint64_t naccesses = 0;
1701
- for (auto const& block_id : naccess_it->second) {
1702
- BlockAccessInfo* block = block_info_map_.find(block_id)->second;
1703
- for (auto const& caller_access : block->caller_num_access_map) {
1704
- if (!user_access_only || is_user_access(caller_access.first)) {
1705
- caller_naccesses[caller_access.first] += caller_access.second;
1706
- naccesses += caller_access.second;
1707
- }
1708
- }
1709
- }
1710
- std::string statistics("Caller:");
1711
- for (auto const& caller_naccessess_it : caller_naccesses) {
1712
- statistics += caller_to_string(caller_naccessess_it.first);
1713
- statistics += ":";
1714
- statistics +=
1715
- std::to_string(percent(caller_naccessess_it.second, naccesses));
1716
- statistics += ",";
1717
- }
1718
- fprintf(stdout,
1719
- "Bottom %" PRIu32 " access count. Access count=%" PRIu64
1720
- " nblocks=%" ROCKSDB_PRIszt " %s\n",
1721
- bottom_k, naccess_it->first, naccess_it->second.size(),
1722
- statistics.c_str());
1723
- }
1724
-
1725
- uint32_t top_k_index = 0;
1726
- for (auto naccess_it = access_count_blocks.rbegin();
1727
- naccess_it != access_count_blocks.rend(); naccess_it++) {
1728
- top_k_index++;
1729
- if (top_k_index >= top_k) {
1730
- break;
1731
- }
1732
- for (auto const& block_id : naccess_it->second) {
1733
- BlockAccessInfo* block = block_info_map_.find(block_id)->second;
1734
- std::string statistics("Caller:");
1735
- uint64_t naccesses = 0;
1736
- for (auto const& caller_access : block->caller_num_access_map) {
1737
- if (!user_access_only || is_user_access(caller_access.first)) {
1738
- naccesses += caller_access.second;
1739
- }
1740
- }
1741
- assert(naccesses > 0);
1742
- for (auto const& caller_access : block->caller_num_access_map) {
1743
- if (!user_access_only || is_user_access(caller_access.first)) {
1744
- statistics += ",";
1745
- statistics += caller_to_string(caller_access.first);
1746
- statistics += ":";
1747
- statistics +=
1748
- std::to_string(percent(caller_access.second, naccesses));
1749
- }
1750
- }
1751
- uint64_t ref_keys_accesses = 0;
1752
- uint64_t ref_keys_does_not_exist_accesses = 0;
1753
- for (auto const& ref_key_caller_access : block->key_num_access_map) {
1754
- for (auto const& caller_access : ref_key_caller_access.second) {
1755
- if (!user_access_only || is_user_access(caller_access.first)) {
1756
- ref_keys_accesses += caller_access.second;
1757
- }
1758
- }
1759
- }
1760
- for (auto const& ref_key_caller_access :
1761
- block->non_exist_key_num_access_map) {
1762
- for (auto const& caller_access : ref_key_caller_access.second) {
1763
- if (!user_access_only || is_user_access(caller_access.first)) {
1764
- ref_keys_does_not_exist_accesses += caller_access.second;
1765
- }
1766
- }
1767
- }
1768
- statistics += ",nkeys=";
1769
- statistics += std::to_string(block->num_keys);
1770
- statistics += ",block_size=";
1771
- statistics += std::to_string(block->block_size);
1772
- statistics += ",num_ref_keys=";
1773
- statistics += std::to_string(block->key_num_access_map.size());
1774
- statistics += ",percent_access_ref_keys=";
1775
- statistics += std::to_string(percent(ref_keys_accesses, naccesses));
1776
- statistics += ",num_ref_keys_does_not_exist=";
1777
- statistics += std::to_string(block->non_exist_key_num_access_map.size());
1778
- statistics += ",percent_access_ref_keys_does_not_exist=";
1779
- statistics +=
1780
- std::to_string(percent(ref_keys_does_not_exist_accesses, naccesses));
1781
- statistics += ",ref_data_size=";
1782
- statistics += std::to_string(block->referenced_data_size);
1783
- fprintf(stdout,
1784
- "Top %" PRIu32 " access count blocks access_count=%" PRIu64
1785
- " %s\n",
1786
- top_k, naccess_it->first, statistics.c_str());
1787
- }
1788
- }
1789
-
1790
- for (auto const& bt_stats : bt_stats_map) {
1791
- print_break_lines(/*num_break_lines=*/1);
1792
- fprintf(stdout, "Break down by block type %s: \n%s",
1793
- block_type_to_string(bt_stats.first).c_str(),
1794
- bt_stats.second.ToString().c_str());
1795
- }
1796
- for (auto const& cf_bt_stats : cf_bt_stats_map) {
1797
- const std::string& cf_name = cf_bt_stats.first;
1798
- for (auto const& bt_stats : cf_bt_stats.second) {
1799
- print_break_lines(/*num_break_lines=*/1);
1800
- fprintf(stdout,
1801
- "Break down by column family %s and block type "
1802
- "%s: \n%s",
1803
- cf_name.c_str(), block_type_to_string(bt_stats.first).c_str(),
1804
- bt_stats.second.ToString().c_str());
1805
- }
1806
- }
1807
- }
1808
-
1809
- void BlockCacheTraceAnalyzer::PrintDataBlockAccessStats() const {
1810
- HistogramStat existing_keys_stats;
1811
- std::map<std::string, HistogramStat> cf_existing_keys_stats_map;
1812
- HistogramStat non_existing_keys_stats;
1813
- std::map<std::string, HistogramStat> cf_non_existing_keys_stats_map;
1814
- HistogramStat block_access_stats;
1815
- std::map<std::string, HistogramStat> cf_block_access_info;
1816
- HistogramStat percent_referenced_bytes;
1817
- std::map<std::string, HistogramStat> cf_percent_referenced_bytes;
1818
- // Total number of accesses in a data block / number of keys in a data block.
1819
- HistogramStat avg_naccesses_per_key_in_a_data_block;
1820
- std::map<std::string, HistogramStat> cf_avg_naccesses_per_key_in_a_data_block;
1821
- // The standard deviation on the number of accesses of a key in a data block.
1822
- HistogramStat stdev_naccesses_per_key_in_a_data_block;
1823
- std::map<std::string, HistogramStat>
1824
- cf_stdev_naccesses_per_key_in_a_data_block;
1825
- auto block_callback =
1826
- [&](const std::string& cf_name, uint64_t /*fd*/, uint32_t /*level*/,
1827
- TraceType /*type*/, const std::string& /*block_key*/,
1828
- uint64_t /*block_id*/, const BlockAccessInfo& block) {
1829
- if (block.num_keys == 0) {
1830
- return;
1831
- }
1832
- // Use four decimal points.
1833
- uint64_t percent_referenced_for_existing_keys =
1834
- (uint64_t)(((double)block.key_num_access_map.size() /
1835
- (double)block.num_keys) *
1836
- 10000.0);
1837
- uint64_t percent_referenced_for_non_existing_keys =
1838
- (uint64_t)(((double)block.non_exist_key_num_access_map.size() /
1839
- (double)block.num_keys) *
1840
- 10000.0);
1841
- uint64_t percent_accesses_for_existing_keys =
1842
- (uint64_t)(((double)block.num_referenced_key_exist_in_block /
1843
- (double)block.num_accesses) *
1844
- 10000.0);
1845
-
1846
- HistogramStat hist_naccess_per_key;
1847
- for (auto const& key_access : block.key_num_access_map) {
1848
- for (auto const& caller_access : key_access.second) {
1849
- hist_naccess_per_key.Add(caller_access.second);
1850
- }
1851
- }
1852
- uint64_t avg_accesses =
1853
- static_cast<uint64_t>(hist_naccess_per_key.Average());
1854
- uint64_t stdev_accesses =
1855
- static_cast<uint64_t>(hist_naccess_per_key.StandardDeviation());
1856
- avg_naccesses_per_key_in_a_data_block.Add(avg_accesses);
1857
- cf_avg_naccesses_per_key_in_a_data_block[cf_name].Add(avg_accesses);
1858
- stdev_naccesses_per_key_in_a_data_block.Add(stdev_accesses);
1859
- cf_stdev_naccesses_per_key_in_a_data_block[cf_name].Add(stdev_accesses);
1860
-
1861
- existing_keys_stats.Add(percent_referenced_for_existing_keys);
1862
- cf_existing_keys_stats_map[cf_name].Add(
1863
- percent_referenced_for_existing_keys);
1864
- non_existing_keys_stats.Add(percent_referenced_for_non_existing_keys);
1865
- cf_non_existing_keys_stats_map[cf_name].Add(
1866
- percent_referenced_for_non_existing_keys);
1867
- block_access_stats.Add(percent_accesses_for_existing_keys);
1868
- cf_block_access_info[cf_name].Add(percent_accesses_for_existing_keys);
1869
- };
1870
- TraverseBlocks(block_callback);
1871
- fprintf(stdout,
1872
- "Histogram on the number of referenced keys existing in a block over "
1873
- "the total number of keys in a block: \n%s",
1874
- existing_keys_stats.ToString().c_str());
1875
- for (auto const& cf_stats : cf_existing_keys_stats_map) {
1876
- print_break_lines(/*num_break_lines=*/1);
1877
- fprintf(stdout, "Break down by column family %s: \n%s",
1878
- cf_stats.first.c_str(), cf_stats.second.ToString().c_str());
1879
- }
1880
- print_break_lines(/*num_break_lines=*/1);
1881
- fprintf(
1882
- stdout,
1883
- "Histogram on the number of referenced keys DO NOT exist in a block over "
1884
- "the total number of keys in a block: \n%s",
1885
- non_existing_keys_stats.ToString().c_str());
1886
- for (auto const& cf_stats : cf_non_existing_keys_stats_map) {
1887
- print_break_lines(/*num_break_lines=*/1);
1888
- fprintf(stdout, "Break down by column family %s: \n%s",
1889
- cf_stats.first.c_str(), cf_stats.second.ToString().c_str());
1890
- }
1891
- print_break_lines(/*num_break_lines=*/1);
1892
- fprintf(stdout,
1893
- "Histogram on the number of accesses on keys exist in a block over "
1894
- "the total number of accesses in a block: \n%s",
1895
- block_access_stats.ToString().c_str());
1896
- for (auto const& cf_stats : cf_block_access_info) {
1897
- print_break_lines(/*num_break_lines=*/1);
1898
- fprintf(stdout, "Break down by column family %s: \n%s",
1899
- cf_stats.first.c_str(), cf_stats.second.ToString().c_str());
1900
- }
1901
- print_break_lines(/*num_break_lines=*/1);
1902
- fprintf(
1903
- stdout,
1904
- "Histogram on the average number of accesses per key in a block: \n%s",
1905
- avg_naccesses_per_key_in_a_data_block.ToString().c_str());
1906
- for (auto const& cf_stats : cf_avg_naccesses_per_key_in_a_data_block) {
1907
- fprintf(stdout, "Break down by column family %s: \n%s",
1908
- cf_stats.first.c_str(), cf_stats.second.ToString().c_str());
1909
- }
1910
- print_break_lines(/*num_break_lines=*/1);
1911
- fprintf(stdout,
1912
- "Histogram on the standard deviation of the number of accesses per "
1913
- "key in a block: \n%s",
1914
- stdev_naccesses_per_key_in_a_data_block.ToString().c_str());
1915
- for (auto const& cf_stats : cf_stdev_naccesses_per_key_in_a_data_block) {
1916
- fprintf(stdout, "Break down by column family %s: \n%s",
1917
- cf_stats.first.c_str(), cf_stats.second.ToString().c_str());
1918
- }
1919
- }
1920
-
1921
- void BlockCacheTraceAnalyzer::PrintStatsSummary() const {
1922
- uint64_t total_num_files = 0;
1923
- uint64_t total_num_blocks = 0;
1924
- uint64_t total_num_accesses = 0;
1925
- std::map<TraceType, uint64_t> bt_num_blocks_map;
1926
- std::map<TableReaderCaller, uint64_t> caller_num_access_map;
1927
- std::map<TableReaderCaller, std::map<TraceType, uint64_t>>
1928
- caller_bt_num_access_map;
1929
- std::map<TableReaderCaller, std::map<uint32_t, uint64_t>>
1930
- caller_level_num_access_map;
1931
- for (auto const& cf_aggregates : cf_aggregates_map_) {
1932
- // Stats per column family.
1933
- const std::string& cf_name = cf_aggregates.first;
1934
- uint64_t cf_num_files = 0;
1935
- uint64_t cf_num_blocks = 0;
1936
- std::map<TraceType, uint64_t> cf_bt_blocks;
1937
- uint64_t cf_num_accesses = 0;
1938
- std::map<TableReaderCaller, uint64_t> cf_caller_num_accesses_map;
1939
- std::map<TableReaderCaller, std::map<uint64_t, uint64_t>>
1940
- cf_caller_level_num_accesses_map;
1941
- std::map<TableReaderCaller, std::map<uint64_t, uint64_t>>
1942
- cf_caller_file_num_accesses_map;
1943
- std::map<TableReaderCaller, std::map<TraceType, uint64_t>>
1944
- cf_caller_bt_num_accesses_map;
1945
- total_num_files += cf_aggregates.second.fd_aggregates_map.size();
1946
- for (auto const& file_aggregates : cf_aggregates.second.fd_aggregates_map) {
1947
- // Stats per SST file.
1948
- const uint64_t fd = file_aggregates.first;
1949
- const uint32_t level = file_aggregates.second.level;
1950
- cf_num_files++;
1951
- for (auto const& block_type_aggregates :
1952
- file_aggregates.second.block_type_aggregates_map) {
1953
- // Stats per block type.
1954
- const TraceType type = block_type_aggregates.first;
1955
- cf_bt_blocks[type] +=
1956
- block_type_aggregates.second.block_access_info_map.size();
1957
- total_num_blocks +=
1958
- block_type_aggregates.second.block_access_info_map.size();
1959
- bt_num_blocks_map[type] +=
1960
- block_type_aggregates.second.block_access_info_map.size();
1961
- for (auto const& block_access_info :
1962
- block_type_aggregates.second.block_access_info_map) {
1963
- // Stats per block.
1964
- cf_num_blocks++;
1965
- for (auto const& stats :
1966
- block_access_info.second.caller_num_access_map) {
1967
- // Stats per caller.
1968
- const TableReaderCaller caller = stats.first;
1969
- const uint64_t num_accesses = stats.second;
1970
- // Overall stats.
1971
- total_num_accesses += num_accesses;
1972
- caller_num_access_map[caller] += num_accesses;
1973
- caller_bt_num_access_map[caller][type] += num_accesses;
1974
- caller_level_num_access_map[caller][level] += num_accesses;
1975
- // Column Family stats.
1976
- cf_num_accesses += num_accesses;
1977
- cf_caller_num_accesses_map[caller] += num_accesses;
1978
- cf_caller_level_num_accesses_map[caller][level] += num_accesses;
1979
- cf_caller_file_num_accesses_map[caller][fd] += num_accesses;
1980
- cf_caller_bt_num_accesses_map[caller][type] += num_accesses;
1981
- }
1982
- }
1983
- }
1984
- }
1985
-
1986
- // Print stats.
1987
- print_break_lines(/*num_break_lines=*/3);
1988
- fprintf(stdout, "Statistics for column family %s:\n", cf_name.c_str());
1989
- fprintf(stdout,
1990
- " Number of files:%" PRIu64 " Number of blocks: %" PRIu64
1991
- " Number of accesses: %" PRIu64 "\n",
1992
- cf_num_files, cf_num_blocks, cf_num_accesses);
1993
- for (auto block_type : cf_bt_blocks) {
1994
- fprintf(stdout, "Number of %s blocks: %" PRIu64 " Percent: %.2f\n",
1995
- block_type_to_string(block_type.first).c_str(), block_type.second,
1996
- percent(block_type.second, cf_num_blocks));
1997
- }
1998
- for (auto caller : cf_caller_num_accesses_map) {
1999
- const uint64_t naccesses = caller.second;
2000
- print_break_lines(/*num_break_lines=*/1);
2001
- fprintf(stdout,
2002
- "Caller %s: Number of accesses %" PRIu64 " Percent: %.2f\n",
2003
- caller_to_string(caller.first).c_str(), naccesses,
2004
- percent(naccesses, cf_num_accesses));
2005
- fprintf(stdout, "Caller %s: Number of accesses per level break down\n",
2006
- caller_to_string(caller.first).c_str());
2007
- for (auto naccess_level :
2008
- cf_caller_level_num_accesses_map[caller.first]) {
2009
- fprintf(stdout,
2010
- "\t Level %" PRIu64 ": Number of accesses: %" PRIu64
2011
- " Percent: %.2f\n",
2012
- naccess_level.first, naccess_level.second,
2013
- percent(naccess_level.second, naccesses));
2014
- }
2015
- fprintf(stdout, "Caller %s: Number of accesses per file break down\n",
2016
- caller_to_string(caller.first).c_str());
2017
- for (auto naccess_file : cf_caller_file_num_accesses_map[caller.first]) {
2018
- fprintf(stdout,
2019
- "\t File %" PRIu64 ": Number of accesses: %" PRIu64
2020
- " Percent: %.2f\n",
2021
- naccess_file.first, naccess_file.second,
2022
- percent(naccess_file.second, naccesses));
2023
- }
2024
- fprintf(stdout,
2025
- "Caller %s: Number of accesses per block type break down\n",
2026
- caller_to_string(caller.first).c_str());
2027
- for (auto naccess_type : cf_caller_bt_num_accesses_map[caller.first]) {
2028
- fprintf(stdout,
2029
- "\t Block Type %s: Number of accesses: %" PRIu64
2030
- " Percent: %.2f\n",
2031
- block_type_to_string(naccess_type.first).c_str(),
2032
- naccess_type.second, percent(naccess_type.second, naccesses));
2033
- }
2034
- }
2035
- }
2036
- print_break_lines(/*num_break_lines=*/3);
2037
- fprintf(stdout, "Overall statistics:\n");
2038
- fprintf(stdout,
2039
- "Number of files: %" PRIu64 " Number of blocks: %" PRIu64
2040
- " Number of accesses: %" PRIu64 "\n",
2041
- total_num_files, total_num_blocks, total_num_accesses);
2042
- for (auto block_type : bt_num_blocks_map) {
2043
- fprintf(stdout, "Number of %s blocks: %" PRIu64 " Percent: %.2f\n",
2044
- block_type_to_string(block_type.first).c_str(), block_type.second,
2045
- percent(block_type.second, total_num_blocks));
2046
- }
2047
- for (auto caller : caller_num_access_map) {
2048
- print_break_lines(/*num_break_lines=*/1);
2049
- uint64_t naccesses = caller.second;
2050
- fprintf(stdout, "Caller %s: Number of accesses %" PRIu64 " Percent: %.2f\n",
2051
- caller_to_string(caller.first).c_str(), naccesses,
2052
- percent(naccesses, total_num_accesses));
2053
- fprintf(stdout, "Caller %s: Number of accesses per level break down\n",
2054
- caller_to_string(caller.first).c_str());
2055
- for (auto naccess_level : caller_level_num_access_map[caller.first]) {
2056
- fprintf(stdout,
2057
- "\t Level %d: Number of accesses: %" PRIu64 " Percent: %.2f\n",
2058
- naccess_level.first, naccess_level.second,
2059
- percent(naccess_level.second, naccesses));
2060
- }
2061
- fprintf(stdout, "Caller %s: Number of accesses per block type break down\n",
2062
- caller_to_string(caller.first).c_str());
2063
- for (auto naccess_type : caller_bt_num_access_map[caller.first]) {
2064
- fprintf(stdout,
2065
- "\t Block Type %s: Number of accesses: %" PRIu64
2066
- " Percent: %.2f\n",
2067
- block_type_to_string(naccess_type.first).c_str(),
2068
- naccess_type.second, percent(naccess_type.second, naccesses));
2069
- }
2070
- }
2071
- }
2072
-
2073
- std::vector<CacheConfiguration> parse_cache_config_file(
2074
- const std::string& config_path) {
2075
- std::ifstream file(config_path);
2076
- if (!file.is_open()) {
2077
- return {};
2078
- }
2079
- std::vector<CacheConfiguration> configs;
2080
- std::string line;
2081
- while (getline(file, line)) {
2082
- CacheConfiguration cache_config;
2083
- std::stringstream ss(line);
2084
- std::vector<std::string> config_strs;
2085
- while (ss.good()) {
2086
- std::string substr;
2087
- getline(ss, substr, ',');
2088
- config_strs.push_back(substr);
2089
- }
2090
- // Sanity checks.
2091
- if (config_strs.size() < 4) {
2092
- fprintf(stderr, "Invalid cache simulator configuration %s\n",
2093
- line.c_str());
2094
- exit(1);
2095
- }
2096
- if (kSupportedCacheNames.find(" " + config_strs[0] + " ") ==
2097
- std::string::npos) {
2098
- fprintf(stderr, "Invalid cache name %s. Supported cache names are %s\n",
2099
- line.c_str(), kSupportedCacheNames.c_str());
2100
- exit(1);
2101
- }
2102
- cache_config.cache_name = config_strs[0];
2103
- cache_config.num_shard_bits = ParseUint32(config_strs[1]);
2104
- cache_config.ghost_cache_capacity = ParseUint64(config_strs[2]);
2105
- for (uint32_t i = 3; i < config_strs.size(); i++) {
2106
- uint64_t capacity = ParseUint64(config_strs[i]);
2107
- if (capacity == 0) {
2108
- fprintf(stderr, "Invalid cache capacity %s, %s\n",
2109
- config_strs[i].c_str(), line.c_str());
2110
- exit(1);
2111
- }
2112
- cache_config.cache_capacities.push_back(capacity);
2113
- }
2114
- configs.push_back(cache_config);
2115
- }
2116
- file.close();
2117
- return configs;
2118
- }
2119
-
2120
- std::vector<uint64_t> parse_buckets(const std::string& bucket_str) {
2121
- std::vector<uint64_t> buckets;
2122
- std::stringstream ss(bucket_str);
2123
- while (ss.good()) {
2124
- std::string bucket;
2125
- getline(ss, bucket, ',');
2126
- buckets.push_back(ParseUint64(bucket));
2127
- }
2128
- buckets.push_back(std::numeric_limits<uint64_t>::max());
2129
- return buckets;
2130
- }
2131
-
2132
- int block_cache_trace_analyzer_tool(int argc, char** argv) {
2133
- ParseCommandLineFlags(&argc, &argv, true);
2134
- if (FLAGS_block_cache_trace_path.empty()) {
2135
- fprintf(stderr, "block cache trace path is empty\n");
2136
- exit(1);
2137
- }
2138
- uint64_t warmup_seconds =
2139
- FLAGS_cache_sim_warmup_seconds > 0 ? FLAGS_cache_sim_warmup_seconds : 0;
2140
- uint32_t downsample_ratio = FLAGS_block_cache_trace_downsample_ratio > 0
2141
- ? FLAGS_block_cache_trace_downsample_ratio
2142
- : 0;
2143
- std::vector<CacheConfiguration> cache_configs =
2144
- parse_cache_config_file(FLAGS_block_cache_sim_config_path);
2145
- std::unique_ptr<BlockCacheTraceSimulator> cache_simulator;
2146
- if (!cache_configs.empty()) {
2147
- cache_simulator.reset(new BlockCacheTraceSimulator(
2148
- warmup_seconds, downsample_ratio, cache_configs));
2149
- Status s = cache_simulator->InitializeCaches();
2150
- if (!s.ok()) {
2151
- fprintf(stderr, "Cannot initialize cache simulators %s\n",
2152
- s.ToString().c_str());
2153
- exit(1);
2154
- }
2155
- }
2156
- BlockCacheTraceAnalyzer analyzer(
2157
- FLAGS_block_cache_trace_path, FLAGS_block_cache_analysis_result_dir,
2158
- FLAGS_human_readable_trace_file_path,
2159
- !FLAGS_reuse_distance_labels.empty(), FLAGS_mrc_only,
2160
- FLAGS_is_block_cache_human_readable_trace, std::move(cache_simulator));
2161
- Status s = analyzer.Analyze();
2162
- if (!s.IsIncomplete() && !s.ok()) {
2163
- // Read all traces.
2164
- fprintf(stderr, "Cannot process the trace %s\n", s.ToString().c_str());
2165
- exit(1);
2166
- }
2167
- fprintf(stdout, "Status: %s\n", s.ToString().c_str());
2168
- analyzer.WriteMissRatioCurves();
2169
- analyzer.WriteMissRatioTimeline(1);
2170
- analyzer.WriteMissRatioTimeline(kSecondInMinute);
2171
- analyzer.WriteMissRatioTimeline(kSecondInHour);
2172
- analyzer.WriteMissTimeline(1);
2173
- analyzer.WriteMissTimeline(kSecondInMinute);
2174
- analyzer.WriteMissTimeline(kSecondInHour);
2175
-
2176
- if (FLAGS_mrc_only) {
2177
- fprintf(stdout,
2178
- "Skipping the analysis statistics since the user wants to compute "
2179
- "MRC only");
2180
- return 0;
2181
- }
2182
-
2183
- analyzer.PrintStatsSummary();
2184
- if (FLAGS_print_access_count_stats) {
2185
- print_break_lines(/*num_break_lines=*/3);
2186
- analyzer.PrintAccessCountStats(
2187
- /*user_access_only=*/false, FLAGS_analyze_bottom_k_access_count_blocks,
2188
- FLAGS_analyze_top_k_access_count_blocks);
2189
- print_break_lines(/*num_break_lines=*/3);
2190
- analyzer.PrintAccessCountStats(
2191
- /*user_access_only=*/true, FLAGS_analyze_bottom_k_access_count_blocks,
2192
- FLAGS_analyze_top_k_access_count_blocks);
2193
- }
2194
- if (FLAGS_print_block_size_stats) {
2195
- print_break_lines(/*num_break_lines=*/3);
2196
- analyzer.PrintBlockSizeStats();
2197
- }
2198
- if (FLAGS_print_data_block_access_count_stats) {
2199
- print_break_lines(/*num_break_lines=*/3);
2200
- analyzer.PrintDataBlockAccessStats();
2201
- }
2202
- print_break_lines(/*num_break_lines=*/3);
2203
-
2204
- if (!FLAGS_timeline_labels.empty()) {
2205
- std::stringstream ss(FLAGS_timeline_labels);
2206
- while (ss.good()) {
2207
- std::string label;
2208
- getline(ss, label, ',');
2209
- if (label.find("block") != std::string::npos) {
2210
- analyzer.WriteAccessTimeline(label, kSecondInMinute, true);
2211
- analyzer.WriteAccessTimeline(label, kSecondInMinute, false);
2212
- analyzer.WriteAccessTimeline(label, kSecondInHour, true);
2213
- analyzer.WriteAccessTimeline(label, kSecondInHour, false);
2214
- } else {
2215
- analyzer.WriteAccessTimeline(label, kSecondInMinute, false);
2216
- analyzer.WriteAccessTimeline(label, kSecondInHour, false);
2217
- }
2218
- }
2219
- }
2220
-
2221
- if (!FLAGS_analyze_callers.empty()) {
2222
- analyzer.WritePercentAccessSummaryStats();
2223
- std::stringstream ss(FLAGS_analyze_callers);
2224
- while (ss.good()) {
2225
- std::string caller;
2226
- getline(ss, caller, ',');
2227
- analyzer.WriteDetailedPercentAccessSummaryStats(string_to_caller(caller));
2228
- }
2229
- }
2230
-
2231
- if (!FLAGS_access_count_buckets.empty()) {
2232
- std::vector<uint64_t> buckets = parse_buckets(FLAGS_access_count_buckets);
2233
- analyzer.WriteAccessCountSummaryStats(buckets, /*user_access_only=*/true);
2234
- analyzer.WriteAccessCountSummaryStats(buckets, /*user_access_only=*/false);
2235
- }
2236
-
2237
- if (!FLAGS_reuse_distance_labels.empty() &&
2238
- !FLAGS_reuse_distance_buckets.empty()) {
2239
- std::vector<uint64_t> buckets = parse_buckets(FLAGS_reuse_distance_buckets);
2240
- std::stringstream ss(FLAGS_reuse_distance_labels);
2241
- while (ss.good()) {
2242
- std::string label;
2243
- getline(ss, label, ',');
2244
- analyzer.WriteReuseDistance(label, buckets);
2245
- }
2246
- }
2247
-
2248
- if (!FLAGS_reuse_interval_labels.empty() &&
2249
- !FLAGS_reuse_interval_buckets.empty()) {
2250
- std::vector<uint64_t> buckets = parse_buckets(FLAGS_reuse_interval_buckets);
2251
- std::stringstream ss(FLAGS_reuse_interval_labels);
2252
- while (ss.good()) {
2253
- std::string label;
2254
- getline(ss, label, ',');
2255
- analyzer.WriteReuseInterval(label, buckets);
2256
- }
2257
- }
2258
-
2259
- if (!FLAGS_reuse_lifetime_labels.empty() &&
2260
- !FLAGS_reuse_lifetime_buckets.empty()) {
2261
- std::vector<uint64_t> buckets = parse_buckets(FLAGS_reuse_lifetime_buckets);
2262
- std::stringstream ss(FLAGS_reuse_lifetime_labels);
2263
- while (ss.good()) {
2264
- std::string label;
2265
- getline(ss, label, ',');
2266
- analyzer.WriteReuseLifetime(label, buckets);
2267
- }
2268
- }
2269
-
2270
- if (FLAGS_analyze_blocks_reuse_k_reuse_window != 0) {
2271
- std::vector<TraceType> block_types{TraceType::kBlockTraceIndexBlock,
2272
- TraceType::kBlockTraceDataBlock,
2273
- TraceType::kBlockTraceFilterBlock};
2274
- for (auto block_type : block_types) {
2275
- analyzer.WriteBlockReuseTimeline(
2276
- FLAGS_analyze_blocks_reuse_k_reuse_window,
2277
- /*user_access_only=*/true, block_type);
2278
- analyzer.WriteBlockReuseTimeline(
2279
- FLAGS_analyze_blocks_reuse_k_reuse_window,
2280
- /*user_access_only=*/false, block_type);
2281
- }
2282
- }
2283
-
2284
- if (!FLAGS_analyze_get_spatial_locality_labels.empty() &&
2285
- !FLAGS_analyze_get_spatial_locality_buckets.empty()) {
2286
- std::vector<uint64_t> buckets =
2287
- parse_buckets(FLAGS_analyze_get_spatial_locality_buckets);
2288
- std::stringstream ss(FLAGS_analyze_get_spatial_locality_labels);
2289
- while (ss.good()) {
2290
- std::string label;
2291
- getline(ss, label, ',');
2292
- analyzer.WriteGetSpatialLocality(label, buckets);
2293
- }
2294
- }
2295
-
2296
- if (!FLAGS_analyze_correlation_coefficients_labels.empty()) {
2297
- std::stringstream ss(FLAGS_analyze_correlation_coefficients_labels);
2298
- while (ss.good()) {
2299
- std::string label;
2300
- getline(ss, label, ',');
2301
- analyzer.WriteCorrelationFeatures(
2302
- label, FLAGS_analyze_correlation_coefficients_max_number_of_values);
2303
- }
2304
- analyzer.WriteCorrelationFeaturesForGet(
2305
- FLAGS_analyze_correlation_coefficients_max_number_of_values);
2306
- }
2307
-
2308
- if (!FLAGS_skew_labels.empty() && !FLAGS_skew_buckets.empty()) {
2309
- std::vector<uint64_t> buckets = parse_buckets(FLAGS_skew_buckets);
2310
- std::stringstream ss(FLAGS_skew_labels);
2311
- while (ss.good()) {
2312
- std::string label;
2313
- getline(ss, label, ',');
2314
- if (label.find("block") != std::string::npos) {
2315
- analyzer.WriteSkewness(label, buckets,
2316
- TraceType::kBlockTraceIndexBlock);
2317
- analyzer.WriteSkewness(label, buckets,
2318
- TraceType::kBlockTraceFilterBlock);
2319
- analyzer.WriteSkewness(label, buckets, TraceType::kBlockTraceDataBlock);
2320
- analyzer.WriteSkewness(label, buckets, TraceType::kTraceMax);
2321
- } else {
2322
- analyzer.WriteSkewness(label, buckets, TraceType::kTraceMax);
2323
- }
2324
- }
2325
- }
2326
- return 0;
2327
- }
2328
-
2329
- } // namespace ROCKSDB_NAMESPACE
2330
-
2331
- #endif // GFLAGS