Closed jnioche closed 3 years ago
RocksDB has many options for its configuration, some of them might impact the performance. Luckily, Rocksdb-Adviser can be used to suggest changes based on RockDB's log.
Here are the suggestions I got when running
python3 -m advisor.rule_parser_example --rules_spec=rules.ini --rocksdb_options=OPTIONS-000007 --log_files_path_prefix=LOG --stats_dump_period_sec=20
WARNING(TimeSeriesData) check_and_trigger: float division by zero Rule: stall-too-many-L0 LogCondition: stall-too-many-L0 regex: Stalling writes because we have \d+ level-0 files Suggestion: inc-max-subcompactions option : DBOptions.max_subcompactions action : increase Suggestion: inc-max-bg-compactions option : DBOptions.max_background_compactions action : increase suggested_values : ['2'] Suggestion: inc-write-buffer-size option : CFOptions.write_buffer_size action : increase Suggestion: dec-max-bytes-for-level-base option : CFOptions.max_bytes_for_level_base action : decrease Suggestion: inc-l0-slowdown-writes-trigger option : CFOptions.level0_slowdown_writes_trigger action : increase scope: col_fam: {'queues'} Rule: level0-level1-ratio OptionCondition: level0-level1-ratio options: ['CFOptions.level0_file_num_compaction_trigger', 'CFOptions.write_buffer_size', 'CFOptions.max_bytes_for_level_base'] expression: int(options[0])*int(options[1])-int(options[2])>=1 trigger: {'default': ['4', '134217728', '268435456'], 'queues': ['4', '134217728', '268435456']} Suggestion: inc-base-max-bytes option : CFOptions.max_bytes_for_level_base action : increase scope: col_fam: {'queues', 'default'} Rule: tuning-iostat-burst TimeSeriesCondition: large-db-get-p99 statistics: ['[]rocksdb.db.get.micros.p50', '[]rocksdb.db.get.micros.p99'] behavior: evaluate_expression expression: (keys[1]/keys[0])>5 trigger: {'ENTITY_PLACEHOLDER': {1632913979: [9.09997, 55.291267], 1632914579: [14.765463, 108.578789], 1632915179: [16.563531, 104.759209]}} Suggestion: bytes-per-sync-non0 option : DBOptions.bytes_per_sync action : set suggested_values : ['1048576'] Suggestion: wal-bytes-per-sync-non0 option : DBOptions.wal_bytes_per_sync action : set suggested_values : ['1048576'] Suggestion: set-rate-limiter option : rate_limiter_bytes_per_sec action : set suggested_values : ['1024000'] scope: entities: {'ENTITY_PLACEHOLDER'} scope: col_fam: {'queues', 'default'}
RocksDB has many options for its configuration, some of them might impact the performance. Luckily, Rocksdb-Adviser can be used to suggest changes based on RockDB's log.
Here are the suggestions I got when running
python3 -m advisor.rule_parser_example --rules_spec=rules.ini --rocksdb_options=OPTIONS-000007 --log_files_path_prefix=LOG --stats_dump_period_sec=20