(Ledger store benchmark - 3/N) Add comments about the benchmark and its arguments (#22160)
* Avoid shred generation in ledger_cleanup.rs * Update comment for test_ledger_cleanup_compaction to include benchmark information.
This commit is contained in:
parent
9f63493789
commit
44d61465f1
|
@ -151,6 +151,42 @@ mod tests {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Obtains the benchmark config from the following environmental arguments:
|
||||||
|
///
|
||||||
|
/// Basic benchmark settings:
|
||||||
|
/// - `BENCHMARK_SLOTS`: the number of slots in the benchmark.
|
||||||
|
/// - `BATCH_SIZE`: the number of slots in each write batch.
|
||||||
|
/// - `SHREDS_PER_SLOT`: the number of shreds in each slot. Together with
|
||||||
|
/// the `BATCH_SIZE` and `BENCHMARK_SLOTS`, it means:
|
||||||
|
/// - the number of shreds in one write batch is `BATCH_SIZE` * `SHREDS_PER_SLOT`.
|
||||||
|
/// - the total number of batches is `BENCHMARK_SLOTS` / `BATCH_SIZE`.
|
||||||
|
/// - the total number of shreds is `BENCHMARK_SLOTS` * `SHREDS_PER_SLOT`.
|
||||||
|
/// - `NUM_WRITERS`: controls the number of concurrent threads performing
|
||||||
|
/// shred insertion. Default: 1.
|
||||||
|
///
|
||||||
|
/// Advanced benchmark settings:
|
||||||
|
/// - `STOP_SIZE_BYTES`: if specified, the benchmark will count how
|
||||||
|
/// many times the ledger store size exceeds the specified threshold.
|
||||||
|
/// - `STOP_SIZE_ITERATIONS`: when `STOP_SIZE_BYTES` is specified, the
|
||||||
|
/// benchmark will stop immediately when the number of times where the
|
||||||
|
/// ledger store size exceeds the configured `STOP_SIZE_BYTES`. These
|
||||||
|
/// configs are used to make sure the benchmark runs successfully under
|
||||||
|
/// the storage limitation.
|
||||||
|
/// - `CLEANUP_BLOCKSTORE`: if true, the ledger store created in the current
|
||||||
|
/// benchmark run will be deleted. Default: true.
|
||||||
|
/// - `NO_COMPACTION`: whether to stop rocksdb's background compaction
|
||||||
|
/// completely. Default: false.
|
||||||
|
///
|
||||||
|
/// Cleanup-service related settings:
|
||||||
|
/// - `MAX_LEDGER_SHREDS`: when the clean-up service is on, the service will
|
||||||
|
/// clean up the ledger store when the number of shreds exceeds this value.
|
||||||
|
/// - `COMPACTION_INTERVAL`: if set, the clean-up service will compact all
|
||||||
|
/// slots that are older than the specified interval. The interval is
|
||||||
|
/// measured by slots.
|
||||||
|
/// Default: the number of slots per day (`TICKS_PER_DAY` / `DEFAULT_TICKS_PER_SLOT`)
|
||||||
|
/// - `ASSERT_COMPACTION`: if true, then the benchmark will perform a sanity check
|
||||||
|
/// on whether clean-up service triggers the expected compaction at the end of
|
||||||
|
/// the benchmark run. Default: false.
|
||||||
fn get_benchmark_config() -> BenchmarkConfig {
|
fn get_benchmark_config() -> BenchmarkConfig {
|
||||||
let benchmark_slots = read_env("BENCHMARK_SLOTS", DEFAULT_BENCHMARK_SLOTS);
|
let benchmark_slots = read_env("BENCHMARK_SLOTS", DEFAULT_BENCHMARK_SLOTS);
|
||||||
let batch_size_slots = read_env("BATCH_SIZE", DEFAULT_BATCH_SIZE_SLOTS);
|
let batch_size_slots = read_env("BATCH_SIZE", DEFAULT_BATCH_SIZE_SLOTS);
|
||||||
|
@ -223,12 +259,16 @@ mod tests {
|
||||||
*storage_previous = storage_now;
|
*storage_previous = storage_now;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/// The ledger cleanup compaction test which can also be used as a benchmark
|
||||||
* Example run command:
|
/// measuring shred insertion performance of the blockstore.
|
||||||
* BENCHMARK_SLOTS=10000 BATCH_SIZE=10 SHREDS_PER_SLOT=1000 NUM_WRITERS=1 \
|
///
|
||||||
* PRE_GENERATE_DATA=true cargo test --release tests::test_ledger_cleanup_compaction \
|
/// The benchmark is controlled by several environmental arguments.
|
||||||
* -- --exact --nocapture
|
/// Check [`get_benchmark_config`] for the full list of arguments.
|
||||||
*/
|
///
|
||||||
|
/// Example command:
|
||||||
|
/// BENCHMARK_SLOTS=1000000 BATCH_SIZE=1 SHREDS_PER_SLOT=25 NUM_WRITERS=8 \
|
||||||
|
/// PRE_GENERATE_DATA=false cargo test --release tests::test_ledger_cleanup_compaction \
|
||||||
|
/// -- --exact --nocapture
|
||||||
#[test]
|
#[test]
|
||||||
fn test_ledger_cleanup_compaction() {
|
fn test_ledger_cleanup_compaction() {
|
||||||
solana_logger::setup_with("error,ledger_cleanup::tests=info");
|
solana_logger::setup_with("error,ledger_cleanup::tests=info");
|
||||||
|
|
Loading…
Reference in New Issue