mirror of
https://github.com/rustfs/rustfs.git
synced 2026-07-26 08:18:18 +00:00
feat(perf): add large PUT tuning and encode optimization (#3816)
This commit is contained in:
@@ -34,6 +34,7 @@ SAMPLES=20000
|
||||
ROUNDS=3
|
||||
RETRY_PER_ROUND=2
|
||||
RETRY_SLEEP_SECS=2
|
||||
COOLDOWN_SECS=0
|
||||
BASELINE_CSV=""
|
||||
EXTRA_ARGS=()
|
||||
|
||||
@@ -71,6 +72,7 @@ Enhanced options:
|
||||
--rounds Benchmark rounds per size (default: 3)
|
||||
--retry-per-round Retry count per failed round (default: 2)
|
||||
--retry-sleep-secs Sleep seconds between retries (default: 2)
|
||||
--cooldown-secs Sleep seconds between rounds/sizes (default: 0)
|
||||
--baseline-csv Baseline median CSV to compare
|
||||
--extra-args Extra args appended to tool command, quoted as one string
|
||||
|
||||
@@ -127,6 +129,7 @@ parse_args() {
|
||||
--rounds) ROUNDS="$2"; shift 2 ;;
|
||||
--retry-per-round) RETRY_PER_ROUND="$2"; shift 2 ;;
|
||||
--retry-sleep-secs) RETRY_SLEEP_SECS="$2"; shift 2 ;;
|
||||
--cooldown-secs) COOLDOWN_SECS="$2"; shift 2 ;;
|
||||
--baseline-csv) BASELINE_CSV="$2"; shift 2 ;;
|
||||
--extra-args)
|
||||
# shellcheck disable=SC2206
|
||||
@@ -152,6 +155,27 @@ validate_positive_int() {
|
||||
fi
|
||||
}
|
||||
|
||||
validate_nonnegative_int() {
|
||||
local v="$1"
|
||||
local n="$2"
|
||||
if ! [[ "$v" =~ ^[0-9]+$ ]]; then
|
||||
echo "ERROR: $n must be a nonnegative integer, got: $v" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
cooldown_sleep() {
|
||||
local secs="$1"
|
||||
if (( secs <= 0 )); then
|
||||
return 0
|
||||
fi
|
||||
if [[ "$DRY_RUN" == "true" ]]; then
|
||||
echo "[DRY-RUN] sleep ${secs}"
|
||||
else
|
||||
sleep "$secs"
|
||||
fi
|
||||
}
|
||||
|
||||
validate_args() {
|
||||
if [[ "$TOOL" != "warp" && "$TOOL" != "s3bench" ]]; then
|
||||
echo "ERROR: --tool must be warp or s3bench" >&2
|
||||
@@ -165,6 +189,7 @@ validate_args() {
|
||||
validate_positive_int "$ROUNDS" "--rounds"
|
||||
validate_positive_int "$RETRY_PER_ROUND" "--retry-per-round"
|
||||
validate_positive_int "$RETRY_SLEEP_SECS" "--retry-sleep-secs"
|
||||
validate_nonnegative_int "$COOLDOWN_SECS" "--cooldown-secs"
|
||||
if [[ "$TOOL" == "s3bench" ]]; then
|
||||
validate_positive_int "$SAMPLES" "--samples"
|
||||
fi
|
||||
@@ -416,6 +441,11 @@ run_size() {
|
||||
if [[ "$success" == "no" ]]; then
|
||||
echo "WARN: size=$size round=$round failed after retries."
|
||||
fi
|
||||
|
||||
if (( COOLDOWN_SECS > 0 && round < ROUNDS )); then
|
||||
echo "Cooldown after size=$size round=$round: ${COOLDOWN_SECS}s"
|
||||
cooldown_sleep "$COOLDOWN_SECS"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
@@ -498,12 +528,20 @@ main() {
|
||||
echo "Concurrency: $CONCURRENCY"
|
||||
echo "Rounds: $ROUNDS"
|
||||
echo "Retry per round: $RETRY_PER_ROUND"
|
||||
echo "Cooldown secs: $COOLDOWN_SECS"
|
||||
|
||||
IFS=',' read -r -a size_arr <<< "$SIZES"
|
||||
local total_sizes="${#size_arr[@]}"
|
||||
local size_index=0
|
||||
for raw in "${size_arr[@]}"; do
|
||||
size="$(trim "$raw")"
|
||||
[[ -z "$size" ]] && continue
|
||||
size_index=$(( size_index + 1 ))
|
||||
run_size "$size"
|
||||
if (( COOLDOWN_SECS > 0 && size_index < total_sizes )); then
|
||||
echo "Cooldown after size=$size: ${COOLDOWN_SECS}s"
|
||||
cooldown_sleep "$COOLDOWN_SECS"
|
||||
fi
|
||||
done
|
||||
|
||||
build_median_summary
|
||||
|
||||
Reference in New Issue
Block a user