RocksDB系列十:Benchmarking tools

db_bench

  db_bench是测试RocksDB性能的主要工具。RocksDB从LevelDB继承了db_bench,并扩展了其功能以支持更多的功能。db_bench支持产生多种类型的workload以便对RocksDB更多的benchmark,而且有很多的选项以支持配置测试环境。
  快速上手

  • 1 启动一个简单的benchmark,创建一个数据库,并添加相关数据
./db_bench --benchmarks="fillseq"

如果需要添加一些统计,使用--statistic

./db_bench --benchmarks="fillseq,stats" --statistics
  • 2 读数据
./db_bench --benchmarks="readrandom" --use_existing_db

也可以顺序执行多个benchmark

./db_bench --benchmarks="fillseq,readrandom,readseq"

Benchmark list

fillseq       -- write N values in sequential key order in async mode
        fillseqdeterministic       -- write N values in the specified key order and keep the shape of the LSM tree
        fillrandom    -- write N values in random key order in async mode
        filluniquerandomdeterministic       -- write N values in a random key order and keep the shape of the LSM tree
        overwrite     -- overwrite N values in random key order in async mode
        fillsync      -- write N/100 values in random key order in sync mode
        fill100K      -- write N/1000 100K values in random order in async mode
        deleteseq     -- delete N keys in sequential order
        deleterandom  -- delete N keys in random order
        readseq       -- read N times sequentially
        readtocache   -- 1 thread reading database sequentially
        readreverse   -- read N times in reverse order
        readrandom    -- read N times in random order
        readmissing   -- read N missing keys in random order
        readwhilewriting      -- 1 writer, N threads doing random reads
        readwhilemerging      -- 1 merger, N threads doing random reads
        readrandomwriterandom -- N threads doing random-read, random-write
        prefixscanrandom      -- prefix scan N times in random order
        updaterandom  -- N threads doing read-modify-write for random keys
        appendrandom  -- N threads doing read-modify-write with growing values
        mergerandom   -- same as updaterandom/appendrandom using merge operator. Must be used with merge_operator
        readrandommergerandom -- perform N random read-or-merge operations. Must be used with merge_operator
        newiterator   -- repeated iterator creation
        seekrandom    -- N random seeks, call Next seek_nexts times per seek
        seekrandomwhilewriting -- seekrandom and 1 thread doing overwrite
        seekrandomwhilemerging -- seekrandom and 1 thread doing merge
        crc32c        -- repeated crc32c of 4K of data
        xxhash        -- repeated xxHash of 4K of data
        acquireload   -- load N*1000 times
        fillseekseq   -- write N values in sequential key, then read them by seeking to each key
        randomtransaction     -- execute N random transactions and verify correctness
        randomreplacekeys     -- randomly replaces N keys by deleting the old version and putting the new version
        timeseries            -- 1 writer generates time series data and multiple readers doing random reads on id

db_bench option

$ ./db_bench -help
db_bench:
USAGE:
./db_bench [OPTIONS]...

  Flags from tools/db_bench_tool.cc:
    -advise_random_on_open (Advise random access on table file open) type: bool
      default: true
    -allow_concurrent_memtable_write (Allow multi-writers to update mem tables
      in parallel.) type: bool default: false
    -base_background_compactions (The base number of concurrent background
      compactions to occur in parallel.) type: int32 default: 1
    -batch_size (Batch size) type: int64 default: 1
    -benchmark_read_rate_limit (If non-zero, db_bench will rate-limit the reads
      from RocksDB. This is the global rate in ops/second.) type: uint64
      default: 0
    -benchmark_write_rate_limit (If non-zero, db_bench will rate-limit the
      writes going into RocksDB. This is the global rate in bytes/second.)
      type: uint64 default: 0
    -benchmarks (Comma-separated list of operations to run in the specified
      order. Available benchmarks:
        fillseq       -- write N values in sequential key order in async mode
        fillseqdeterministic       -- write N values in the specified key order
      and keep the shape of the LSM tree
        fillrandom    -- write N values in random key order in async mode
        filluniquerandomdeterministic       -- write N values in a random key
      order and keep the shape of the LSM tree
        overwrite     -- overwrite N values in random key order in async mode
        fillsync      -- write N/100 values in random key order in sync mode
        fill100K      -- write N/1000 100K values in random order in async mode
        deleteseq     -- delete N keys in sequential order
        deleterandom  -- delete N keys in random order
        readseq       -- read N times sequentially
        readtocache   -- 1 thread reading database sequentially
        readreverse   -- read N times in reverse order
        readrandom    -- read N times in random order
        readmissing   -- read N missing keys in random order
        readwhilewriting      -- 1 writer, N threads doing random reads
        readwhilemerging      -- 1 merger, N threads doing random reads
        readrandomwriterandom -- N threads doing random-read, random-write
        prefixscanrandom      -- prefix scan N times in random order
        updaterandom  -- N threads doing read-modify-write for random keys
        appendrandom  -- N threads doing read-modify-write with growing values
        mergerandom   -- same as updaterandom/appendrandom using merge operator.
      Must be used with merge_operator
        readrandommergerandom -- perform N random read-or-merge operations. Must
      be used with merge_operator
        newiterator   -- repeated iterator creation
        seekrandom    -- N random seeks, call Next seek_nexts times per seek
        seekrandomwhilewriting -- seekrandom and 1 thread doing overwrite
        seekrandomwhilemerging -- seekrandom and 1 thread doing merge
        crc32c        -- repeated crc32c of 4K of data
        xxhash        -- repeated xxHash of 4K of data
        acquireload   -- load N*1000 times
        fillseekseq   -- write N values in sequential key, then read them by
      seeking to each key
        randomtransaction     -- execute N random transactions and verify
      correctness
        randomreplacekeys     -- randomly replaces N keys by deleting the old
      version and putting the new version

        timeseries            -- 1 writer generates time series data and
      multiple readers doing random reads on id

      Meta operations:
        compact     -- Compact the entire DB
        stats       -- Print DB stats
        resetstats  -- Reset DB stats
        levelstats  -- Print the number of files and bytes per level
        sstables    -- Print sstable info
        heapprofile -- Dump a heap profile (if supported by this port)
      ) type: string
      default: "fillseq,fillseqdeterministic,fillsync,fillrandom,filluniquerandomdeterministic,overwrite,readrandom,newiterator,newiteratorwhilewriting,seekrandom,seekrandomwhilewriting,seekrandomwhilemerging,readseq,readreverse,compact,readrandom,multireadrandom,readseq,readtocache,readreverse,readwhilewriting,readwhilemerging,readrandomwriterandom,updaterandom,randomwithverify,fill100K,crc32c,xxhash,compress,uncompress,acquireload,fillseekseq,randomtransaction,randomreplacekeys,timeseries"
    -block_restart_interval (Number of keys between restart points for delta
      encoding of keys in data block.) type: int32 default: 16
    -block_size (Number of bytes in a block.) type: int32 default: 4096
    -bloom_bits (Bloom filter bits per key. Negative means use default
      settings.) type: int32 default: -1
    -bloom_locality (Control bloom filter probes locality) type: int32
      default: 0
    -bytes_per_sync (Allows OS to incrementally sync SST files to disk while
      they are being written, in the background. Issue one request for every
      bytes_per_sync written. 0 turns it off.) type: uint64 default: 0
    -cache_high_pri_pool_ratio (Ratio of block cache reserve for high pri
      blocks. If > 0.0, we also enable
      cache_index_and_filter_blocks_with_high_priority.) type: double
      default: 0
    -cache_index_and_filter_blocks (Cache index/filter blocks in block cache.)
      type: bool default: false
    -cache_numshardbits (Number of shards for the block cache is 2 **
      cache_numshardbits. Negative means use default settings. This is applied
      only if FLAGS_cache_size is non-negative.) type: int32 default: 6
    -cache_size (Number of bytes to use as a cache of uncompressed data)
      type: int64 default: 8388608
    -compaction_fadvice (Access pattern advice when a file is compacted)
      type: string default: "NORMAL"
    -compaction_pri (priority of files to compaction: by size or by data age)
      type: int32 default: 0
    -compaction_readahead_size (Compaction readahead size) type: int32
      default: 0
    -compaction_style (style of compaction: level-based, universal and fifo)
      type: int32 default: 0
    -compressed_cache_size (Number of bytes to use as a cache of compressed
      data.) type: int64 default: -1
    -compression_level (Compression level. For zlib this should be -1 for the
      default level, or between 0 and 9.) type: int32 default: -1
    -compression_max_dict_bytes (Maximum size of dictionary used to prime the
      compression library.) type: int32 default: 0
    -compression_ratio (Arrange to generate values that shrink to this fraction
      of their original size after compression) type: double default: 0.5
    -compression_type (Algorithm to use to compress the database) type: string
      default: "snappy"
    -cuckoo_hash_ratio (Hash ratio for Cuckoo SST table.) type: double
      default: 0.90000000000000002
    -db (Use the db with the following name.) type: string default: ""
    -db_write_buffer_size (Number of bytes to buffer in all memtables before
      compacting) type: int64 default: 0
    -delayed_write_rate (Limited bytes allowed to DB when soft_rate_limit or
      level0_slowdown_writes_trigger triggers) type: uint64 default: 8388608
    -delete_obsolete_files_period_micros (Ignored. Left here for backward
      compatibility) type: uint64 default: 0
    -deletepercent (Percentage of deletes out of reads/writes/deletes (used in
      RandomWithVerify only). RandomWithVerify calculates writepercent as (100
      - FLAGS_readwritepercent - deletepercent), so deletepercent must be
      smaller than (100 - FLAGS_readwritepercent)) type: int32 default: 2
    -deletes (Number of delete operations to do.  If negative, do FLAGS_num
      deletions.) type: int64 default: -1
    -disable_auto_compactions (Do not auto trigger compactions) type: bool
      default: false
    -disable_seek_compaction (Not used, left here for backwards compatibility)
      type: int32 default: 0
    -disable_wal (If true, do not write WAL for write.) type: bool
      default: false
    -dump_malloc_stats (Dump malloc stats in LOG ) type: bool default: true
    -duration (Time in seconds for the random-ops tests to run. When 0 then num
      & reads determine the test duration) type: int32 default: 0
    -enable_io_prio (Lower the background flush/compaction threads' IO
      priority) type: bool default: false
    -enable_numa (Make operations aware of NUMA architecture and bind memory
      and cpus corresponding to nodes together. In NUMA, memory in same node as
      CPUs are closer when compared to memory in other nodes. Reads can be
      faster when the process is bound to CPU and memory of same node. Use
      "$numactl --hardware" command to see NUMA memory architecture.)
      type: bool default: false
    -enable_write_thread_adaptive_yield (Use a yielding spin loop for brief
      writer thread waits.) type: bool default: false
    -env_uri (URI for registry Env lookup. Mutually exclusive with --hdfs.)
      type: string default: ""
    -expand_range_tombstones (Expand range tombstone into sequential regular
      tombstones.) type: bool default: false
    -expire_style (Style to remove expired time entries. Can be one of the
      options below: none (do not expired data), compaction_filter (use a
      compaction filter to remove expired data), delete (seek IDs and remove
      expired data) (used in TimeSeries only).) type: string default: "none"
    -fifo_compaction_allow_compaction (Allow compaction in FIFO compaction.)
      type: bool default: true
    -fifo_compaction_max_table_files_size_mb (The limit of total table file
      sizes to trigger FIFO compaction) type: uint64 default: 0
    -file_opening_threads (If open_files is set to -1, this option set the
      number of threads that will be used to open files during DB::Open())
      type: int32 default: 16
    -finish_after_writes (Write thread terminates after all writes are
      finished) type: bool default: false
    -hard_pending_compaction_bytes_limit (Stop writes if pending compaction
      bytes exceed this number) type: uint64 default: 137438953472
    -hard_rate_limit (DEPRECATED) type: double default: 0
    -hash_bucket_count (hash bucket count) type: int64 default: 1048576
    -hdfs (Name of hdfs environment. Mutually exclusive with --env_uri.)
      type: string default: ""
    -histogram (Print histogram of operation timings) type: bool default: false
    -identity_as_first_hash (the first hash function of cuckoo table becomes an
      identity function. This is only valid when key is 8 bytes) type: bool
      default: false
    -index_block_restart_interval (Number of keys between restart points for
      delta encoding of keys in index block.) type: int32 default: 1
    -key_id_range (Range of possible value of key id (used in TimeSeries
      only).) type: int32 default: 100000
    -key_size (size of each key) type: int32 default: 16
    -keys_per_prefix (control average number of keys generated per prefix, 0
      means no special handling of the prefix, i.e. use the prefix comes with
      the generated random number.) type: int64 default: 0
    -level0_file_num_compaction_trigger (Number of files in level-0 when
      compactions start) type: int32 default: 4
    -level0_slowdown_writes_trigger (Number of files in level-0 that will slow
      down writes.) type: int32 default: 20
    -level0_stop_writes_trigger (Number of files in level-0 that will trigger
      put stop.) type: int32 default: 36
    -level_compaction_dynamic_level_bytes (Whether level size base is dynamic)
      type: bool default: false
    -max_background_compactions (The maximum number of concurrent background
      compactions that can occur in parallel.) type: int32 default: 1
    -max_background_flushes (The maximum number of concurrent background
      flushes that can occur in parallel.) type: int32 default: 1
    -max_bytes_for_level_base (Max bytes for level-1) type: uint64
      default: 268435456
    -max_bytes_for_level_multiplier (A multiplier to compute max bytes for
      level-N (N >= 2)) type: double default: 10
    -max_bytes_for_level_multiplier_additional (A vector that specifies
      additional fanout per level) type: string default: ""
    -max_compaction_bytes (Max bytes allowed in one compaction) type: uint64
      default: 0
    -max_num_range_tombstones (Maximum number of range tombstones to insert.)
      type: int64 default: 0
    -max_successive_merges (Maximum number of successive merge operations on a
      key in the memtable) type: int32 default: 0
    -max_total_wal_size (Set total max WAL size) type: uint64 default: 0
    -max_write_buffer_number (The number of in-memory memtables. Each memtable
      is of sizewrite_buffer_size.) type: int32 default: 2
    -max_write_buffer_number_to_maintain (The total maximum number of write
      buffers to maintain in memory including copies of buffers that have
      already been flushed. Unlike max_write_buffer_number, this parameter does
      not affect flushing. This controls the minimum amount of write history
      that will be available in memory for conflict checking when Transactions
      are used. If this value is too low, some transactions may fail at commit
      time due to not being able to determine whether there were any write
      conflicts. Setting this value to 0 will cause write buffers to be freed
      immediately after they are flushed.  If this value is set to -1,
      'max_write_buffer_number' will be used.) type: int32 default: 0
    -memtable_bloom_size_ratio (Ratio of memtable size used for bloom filter. 0
      means no bloom filter.) type: double default: 0
    -memtable_insert_with_hint_prefix_size (If non-zero, enable memtable insert
      with hint with the given prefix size.) type: int32 default: 0
    -memtable_use_huge_page (Try to use huge page in memtables.) type: bool
      default: false
    -memtablerep () type: string default: "skip_list"
    -merge_keys (Number of distinct keys to use for MergeRandom and
      ReadRandomMergeRandom. If negative, there will be FLAGS_num keys.)
      type: int64 default: -1
    -merge_operator (The merge operator to use with the database.If a new merge
      operator is specified, be sure to use fresh database The possible merge
      operators are defined in utilities/merge_operators.h) type: string
      default: ""
    -mergereadpercent (Ratio of merges to merges&reads (expressed as
      percentage) for the ReadRandomMergeRandom workload. The default value 70
      means 70% out of all read and merge operations are merges. In other
      words, 7 merges for every 3 gets.) type: int32 default: 70
    -min_level_to_compress (If non-negative, compression starts from this
      level. Levels with number < min_level_to_compress are not compressed.
      Otherwise, apply compression_type to all levels.) type: int32 default: -1
    -min_write_buffer_number_to_merge (The minimum number of write buffers that
      will be merged togetherbefore writing to storage. This is cheap because
      it is anin-memory merge. If this feature is not enabled, then all
      thesewrite buffers are flushed to L0 as separate files and this increases
      read amplification because a get request has to check in all of these
      files. Also, an in-memory merge may result in writing less data to
      storage if there are duplicate records  in each of these individual write
      buffers.) type: int32 default: 1
    -mmap_read (Allow reads to occur via mmap-ing files) type: bool
      default: false
    -mmap_write (Allow writes to occur via mmap-ing files) type: bool
      default: false
    -new_table_reader_for_compaction_inputs (If true, uses a separate file
      handle for compaction inputs) type: int32 default: 1
    -num (Number of key/values to place in database) type: int64
      default: 1000000
    -num_column_families (Number of Column Families to use.) type: int32
      default: 1
    -num_deletion_threads (Number of threads to do deletion (used in TimeSeries
      and delete expire_style only).) type: int32 default: 1
    -num_hot_column_families (Number of Hot Column Families. If more than 0,
      only write to this number of column families. After finishing all the
      writes to them, create new set of column families and insert to them.
      Only used when num_column_families > 1.) type: int32 default: 0
    -num_levels (The total number of levels) type: int32 default: 7
    -num_multi_db (Number of DBs used in the benchmark. 0 means single DB.)
      type: int32 default: 0
    -numdistinct (Number of distinct keys to use. Used in RandomWithVerify to
      read/write on fewer keys so that gets are more likely to find the key and
      puts are more likely to update the same key) type: int64 default: 1000
    -open_files (Maximum number of files to keep open at the same time (use
      default if == 0)) type: int32 default: -1
    -optimistic_transaction_db (Open a OptimisticTransactionDB instance.
      Required for randomtransaction benchmark.) type: bool default: false
    -optimize_filters_for_hits (Optimizes bloom filters for workloads for most
      lookups return a value. For now this doesn't create bloom filters for the
      max level of the LSM to reduce metadata that should fit in RAM. )
      type: bool default: false
    -options_file (The path to a RocksDB options file.  If specified, then
      db_bench will run with the RocksDB options in the default column family
      of the specified options file. Note that with this setting, db_bench will
      ONLY accept the following RocksDB options related command-line arguments,
      all other arguments that are related to RocksDB options will be ignored:
        --use_existing_db
        --statistics
        --row_cache_size
        --row_cache_numshardbits
        --enable_io_prio
        --dump_malloc_stats
        --num_multi_db
      ) type: string default: ""
    -perf_level (Level of perf collection) type: int32 default: 1
    -pin_l0_filter_and_index_blocks_in_cache (Pin index/filter blocks of L0
      files in block cache.) type: bool default: false
    -pin_slice (use pinnable slice for point lookup) type: bool default: true
    -prefix_size (control the prefix size for HashSkipList and plain table)
      type: int32 default: 0
    -random_access_max_buffer_size (Maximum windows randomaccess buffer size)
      type: int32 default: 1048576
    -range_tombstone_width (Number of keys in tombstone's range) type: int64
      default: 100
    -rate_limit_delay_max_milliseconds (When hard_rate_limit is set then this
      is the max time a put will be stalled.) type: int32 default: 1000
    -rate_limiter_bytes_per_sec (Set options.rate_limiter value.) type: uint64
      default: 0
    -read_amp_bytes_per_bit (Number of bytes per bit to be used in block
      read-amp bitmap) type: int32 default: 0
    -read_cache_direct_read (Whether to use Direct IO for reading from read
      cache) type: bool default: true
    -read_cache_direct_write (Whether to use Direct IO for writing to the read
      cache) type: bool default: true
    -read_cache_path (If not empty string, a read cache will be used in this
      path) type: string default: ""
    -read_cache_size (Maximum size of the read cache) type: int64
      default: 4294967296
    -read_random_exp_range (Read random's key will be generated using
      distribution of num * exp(-r) where r is uniform number from 0 to this
      value. The larger the number is, the more skewed the reads are. Only used
      in readrandom and multireadrandom benchmarks.) type: double default: 0
    -readonly (Run read only benchmarks.) type: bool default: false
    -reads (Number of read operations to do.  If negative, do FLAGS_num reads.)
      type: int64 default: -1
    -readwritepercent (Ratio of reads to reads/writes (expressed as percentage)
      for the ReadRandomWriteRandom workload. The default value 90 means 90%
      operations out of all reads and writes operations are reads. In other
      words, 9 gets for every 1 put.) type: int32 default: 90
    -report_bg_io_stats (Measure times spents on I/Os while in compactions. )
      type: bool default: false
    -report_file (Filename where some simple stats are reported to (if
      --report_interval_seconds is bigger than 0)) type: string
      default: "report.csv"
    -report_file_operations (if report number of file operations) type: bool
      default: false
    -report_interval_seconds (If greater than zero, it will write simple stats
      in CVS format to --report_file every N seconds) type: int64 default: 0
    -reverse_iterator (When true use Prev rather than Next for iterators that
      do Seek and then Next) type: bool default: false
    -row_cache_size (Number of bytes to use as a cache of individual rows (0 =
      disabled).) type: int64 default: 0
    -seed (Seed base for random number generators. When 0 it is deterministic.)
      type: int64 default: 0
    -seek_nexts (How many times to call Next() after Seek() in fillseekseq,
      seekrandom, seekrandomwhilewriting and seekrandomwhilemerging)
      type: int32 default: 0
    -show_table_properties (If true, then per-level table properties will be
      printed on every stats-interval when stats_interval is set and
      stats_per_interval is on.) type: bool default: false
    -simcache_size (Number of bytes to use as a simcache of uncompressed data.
      Nagative value disables simcache.) type: int64 default: -1
    -skip_list_lookahead (Used with skip_list memtablerep; try linear search
      first for this many steps from the previous position) type: int32
      default: 0
    -soft_pending_compaction_bytes_limit (Slowdown writes if pending compaction
      bytes exceed this number) type: uint64 default: 68719476736
    -soft_rate_limit (DEPRECATED) type: double default: 0
    -statistics (Database statistics) type: bool default: false
    -statistics_string (Serialized statistics string) type: string default: ""
    -stats_interval (Stats are reported every N operations when this is greater
      than zero. When 0 the interval grows over time.) type: int64 default: 0
    -stats_interval_seconds (Report stats every N seconds. This overrides
      stats_interval when both are > 0.) type: int64 default: 0
    -stats_per_interval (Reports additional stats per interval when this is
      greater than 0.) type: int32 default: 0
    -stddev (Standard deviation of normal distribution used for picking keys
      (used in RandomReplaceKeys only).) type: double default: 2000
    -subcompactions (Maximum number of subcompactions to divide L0-L1
      compactions into.) type: uint64 default: 1
    -sync (Sync all writes to disk) type: bool default: false
    -table_cache_numshardbits () type: int32 default: 4
    -target_file_size_base (Target file size at level-1) type: int64
      default: 67108864
    -target_file_size_multiplier (A multiplier to compute target level-N file
      size (N >= 2)) type: int32 default: 1
    -thread_status_per_interval (Takes and report a snapshot of the current
      status of each thread when this is greater than 0.) type: int32
      default: 0
    -threads (Number of concurrent threads to run.) type: int32 default: 1
    -time_range (Range of timestamp that store in the database (used in
      TimeSeries only).) type: uint64 default: 100000
    -transaction_db (Open a TransactionDB instance. Required for
      randomtransaction benchmark.) type: bool default: false
    -transaction_lock_timeout (If using a transaction_db, specifies the lock
      wait timeout in milliseconds before failing a transaction waiting on a
      lock) type: uint64 default: 100
    -transaction_set_snapshot (Setting to true will have each transaction call
      SetSnapshot() upon creation.) type: bool default: false
    -transaction_sets (Number of keys each transaction will modify (use in
      RandomTransaction only).  Max: 9999) type: uint64 default: 2
    -transaction_sleep (Max microseconds to sleep in between reading and
      writing a value (used in RandomTransaction only). ) type: int32
      default: 0
    -truth_db (Truth key/values used when using verify) type: string
      default: "/dev/shm/truth_db/dbbench"
    -universal_allow_trivial_move (Allow trivial move in universal compaction.)
      type: bool default: false
    -universal_compression_size_percent (The percentage of the database to
      compress for universal compaction. -1 means compress everything.)
      type: int32 default: -1
    -universal_max_merge_width (The max number of files to compact in universal
      style compaction) type: int32 default: 0
    -universal_max_size_amplification_percent (The max size amplification for
      universal style compaction) type: int32 default: 0
    -universal_min_merge_width (The minimum number of files in a single
      compaction run (for universal compaction only).) type: int32 default: 0
    -universal_size_ratio (Percentage flexibility while comparing file size
      (for universal compaction only).) type: int32 default: 0
    -use_adaptive_mutex (Use adaptive mutex) type: bool default: false
    -use_blob_db (Open a BlobDB instance. Required for largevalue benchmark.)
      type: bool default: false
    -use_block_based_filter (if use kBlockBasedFilter instead of kFullFilter
      for filter block. This is valid if only we use BlockTable) type: bool
      default: false
    -use_clock_cache (Replace default LRU block cache with clock cache.)
      type: bool default: false
    -use_cuckoo_table (if use cuckoo table format) type: bool default: false
    -use_direct_io_for_flush_and_compaction (Use O_DIRECT for background flush
      and compaction I/O) type: bool default: false
    -use_direct_reads (Use O_DIRECT for reading data) type: bool default: false
    -use_existing_db (If true, do not destroy the existing database.  If you
      set this flag and also specify a benchmark that wants a fresh database,
      that benchmark will fail.) type: bool default: false
    -use_fsync (If true, issue fsync instead of fdatasync) type: bool
      default: false
    -use_hash_search (if use kHashSearch instead of kBinarySearch. This is
      valid if only we use BlockTable) type: bool default: false
    -use_plain_table (if use plain table instead of block-based table format)
      type: bool default: false
    -use_single_deletes (Use single deletes (used in RandomReplaceKeys only).)
      type: bool default: true
    -use_stderr_info_logger (Write info logs to stderr instead of to LOG file.
      ) type: bool default: false
    -use_tailing_iterator (Use tailing iterator to access a series of keys
      instead of get) type: bool default: false
    -use_uint64_comparator (use Uint64 user comparator) type: bool
      default: false
    -value_size (Size of each value) type: int32 default: 100
    -verify_checksum (Verify checksum for every block read from storage)
      type: bool default: false
    -wal_bytes_per_sync (Allows OS to incrementally sync WAL files to disk
      while they are being written, in the background. Issue one request for
      every wal_bytes_per_sync written. 0 turns it off.) type: uint64
      default: 0
    -wal_dir (If not empty, use the given dir for WAL) type: string default: ""
    -wal_size_limit_MB (Set the size limit for the WAL Files in MB.)
      type: uint64 default: 0
    -wal_ttl_seconds (Set the TTL for the WAL Files in seconds.) type: uint64
      default: 0
    -writable_file_max_buffer_size (Maximum write buffer for Writable File)
      type: int32 default: 1048576
    -write_buffer_size (Number of bytes to buffer in memtable before
      compacting) type: int64 default: 67108864
    -write_thread_max_yield_usec (Maximum microseconds for
      enable_write_thread_adaptive_yield operation.) type: uint64 default: 100
    -write_thread_slow_yield_usec (The threshold at which a slow yield is
      considered a signal that other processes or threads want the core.)
      type: uint64 default: 3
    -writes (Number of write operations to do. If negative, do --num reads.)
      type: int64 default: -1
    -writes_per_range_tombstone (Number of writes between range tombstones)
      type: int64 default: 0

cache_bench

./cache_bench --help
cache_bench: Warning: SetUsageMessage() never called
...
  Flags from cache/cache_bench.cc:
    -cache_size (Number of bytes to use as a cache of uncompressed data.)
      type: int64 default: 8388608
    -erase_percent (Ratio of erase to total workload (expressed as a
      percentage)) type: int32 default: 10
    -insert_percent (Ratio of insert to total workload (expressed as a
      percentage)) type: int32 default: 40
    -lookup_percent (Ratio of lookup to total workload (expressed as a
      percentage)) type: int32 default: 50
    -max_key (Max number of key to place in cache) type: int64
      default: 1073741824
    -num_shard_bits (shard_bits.) type: int32 default: 4
    -ops_per_thread (Number of operations per thread.) type: uint64
      default: 1200000
    -populate_cache (Populate cache before operations) type: bool
      default: false
    -threads (Number of concurrent threads to run.) type: int32 default: 16
    -use_clock_cache () type: bool default: false

persistent_cache_bench

$ ./persistent_cache_bench -help
persistent_cache_bench:
USAGE:
./persistent_cache_bench [OPTIONS]...
...
  Flags from utilities/persistent_cache/persistent_cache_bench.cc:
    -benchmark (Benchmark mode) type: bool default: false
    -cache_size (Cache size) type: uint64 default: 18446744073709551615
    -cache_type (Cache type. (block_cache, volatile, tiered)) type: string
      default: "block_cache"
    -enable_pipelined_writes (Enable async writes) type: bool default: false
    -iosize (Read IO size) type: int32 default: 4096
    -log_path (Path for the log file) type: string default: "/tmp/log"
    -nsec (nsec) type: int32 default: 10
    -nthread_read (Lookup threads) type: int32 default: 1
    -nthread_write (Insert threads) type: int32 default: 1
    -path (Path for cachefile) type: string default: "/tmp/microbench/blkcache"
    -volatile_cache_pct (Percentage of cache in memory tier.) type: int32
      default: 10
    -writer_iosize (File writer IO size) type: int32 default: 4096
    -writer_qdepth (File writer qdepth) type: int32 default: 1
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,790评论 2 89
  • 刚刚你在空间发了条说说,配搭你去小学志愿讲课的图片,照片中的你现在讲台上给小学生讲“绑架外星人的事件”,照片中的你...
    初暖姑娘阅读 535评论 14 10
  • -- 裙子姑娘 这里原本是一条僻静的小路,窄走道,长板凳,上面挤着一堆一堆的树荫,下面铺着一层一层的卵石,靠着很大...
    对她说阅读 418评论 0 2
  • 我如果爱你—— 绝不让你做我肩上的鸟儿, 借你的清脆的歌声炫耀自己; 我如果爱你—— 绝不学愚蠢的猪猡, 只为了泥...
    韩庭龙阅读 178评论 0 1