crawler-commons / url-frontier

API definition, resources and reference implementation of URL Frontiers
Apache License 2.0
44 stars 11 forks source link

Tuning Rockdb configuration #38

Closed jnioche closed 3 years ago

jnioche commented 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'}