Fix db_bench default compression level (#4248)

Summary:
db_bench's previous default compression level (-1) was not the default compression level in all libraries. In particular, in ZSTD negative values are valid compression levels, while ZSTD's default compression level is three.

This PR changes db_bench's default to be RocksDB's library-independent default compression level (see #3895). I also changed a couple other flags to get their default values from an options object directly rather than hardcoding.
Pull Request resolved: https://github.com/facebook/rocksdb/pull/4248

Differential Revision: D9235140

Pulled By: ajkr

fbshipit-source-id: be4e0722d59fa1968832183db36d1d20fcf11e5b
main
Andrew Kryczka 6 years ago committed by Facebook Github Bot
parent eb8885a08a
commit 7a9a164276
  1. 25
      tools/db_bench_tool.cc

@ -769,30 +769,21 @@ DEFINE_string(compression_type, "snappy",
static enum rocksdb::CompressionType FLAGS_compression_type_e = static enum rocksdb::CompressionType FLAGS_compression_type_e =
rocksdb::kSnappyCompression; rocksdb::kSnappyCompression;
DEFINE_int32(compression_level, -1, DEFINE_int32(compression_level, rocksdb::CompressionOptions().level,
"Compression level. For zlib this should be -1 for the " "Compression level. The meaning of this value is library-"
"default level, or between 0 and 9."); "dependent. If unset, we try to use the default for the library "
"specified in `--compression_type`");
DEFINE_int32(compression_max_dict_bytes, 0, DEFINE_int32(compression_max_dict_bytes,
rocksdb::CompressionOptions().max_dict_bytes,
"Maximum size of dictionary used to prime the compression " "Maximum size of dictionary used to prime the compression "
"library."); "library.");
DEFINE_int32(compression_zstd_max_train_bytes, 0, DEFINE_int32(compression_zstd_max_train_bytes,
rocksdb::CompressionOptions().zstd_max_train_bytes,
"Maximum size of training data passed to zstd's dictionary " "Maximum size of training data passed to zstd's dictionary "
"trainer."); "trainer.");
static bool ValidateCompressionLevel(const char* flagname, int32_t value) {
if (value < -1 || value > 9) {
fprintf(stderr, "Invalid value for --%s: %d, must be between -1 and 9\n",
flagname, value);
return false;
}
return true;
}
static const bool FLAGS_compression_level_dummy __attribute__((__unused__)) =
RegisterFlagValidator(&FLAGS_compression_level, &ValidateCompressionLevel);
DEFINE_int32(min_level_to_compress, -1, "If non-negative, compression starts" DEFINE_int32(min_level_to_compress, -1, "If non-negative, compression starts"
" from this level. Levels with number < min_level_to_compress are" " from this level. Levels with number < min_level_to_compress are"
" not compressed. Otherwise, apply compression_type to " " not compressed. Otherwise, apply compression_type to "

Loading…
Cancel
Save