Concurrent Read/Write Benchmark
This page reflects the benchmark wrappers in build/tests/curvine-bench.sh and build/tests/java-bench.sh, plus the Rust benchmark implementation under curvine-tests/src.
Supported benchmark modesâ
Both wrappers support the same four actions:
fs.writefs.readfuse.writefuse.read
The Rust wrapper launches ${CURVINE_HOME}/lib/curvine-bench. The Java wrapper launches io.curvine.bench.CurvineBenchV2.
Default target directories come from the checked-in scripts:
fs.*actions default to/fs-benchfuse.*actions default to/curvine-fuse/fs-bench
The top-level README and README_zh both describe /curvine-fuse as the default mount point for Curvine FUSE.
Default checked-in workloadâ
The active wrapper settings in both scripts are:
- Client threads:
10 - File count:
10 - File size:
100MB - Buffer size:
128KB - Checksum:
true
Rust wrapper:
${CURVINE_HOME}/lib/curvine-bench --action ${ACTION} --dir $DIR --conf $CURVINE_HOME/conf/curvine-cluster.toml --checksum true --client-threads 10 --buf-size 128KB --file-size 100MB --file-num 10
Java wrapper:
java -Xms256m -Xmx1g -Dcurvine.conf.dir=${CURVINE_HOME}/conf io.curvine.bench.CurvineBenchV2 -action $ACTION -dataDir $DIR -threads 10 -bufferSize 128kb -fileSize 100mb -fileNum 10 -checksum true -clearDir false
Both wrappers still contain commented heavier profiles, but those are examples only. They are not the active defaults in the checked-in scripts.
How the Rust benchmark behavesâ
The current Rust implementation supports only the four actions above. For each run it:
- creates the target directory if needed
- launches one task per file
- writes or reads each file in
128KBchunks until100MBper file is reached - prints total bytes, checksum, and the parsed arguments at the end
How to runâ
From the source tree:
# Rust client against Curvine RPC
bash build/tests/curvine-bench.sh fs.write
bash build/tests/curvine-bench.sh fs.read
# Rust client through the mounted FUSE path
bash build/tests/curvine-bench.sh fuse.write /curvine-fuse/fs-bench
bash build/tests/curvine-bench.sh fuse.read /curvine-fuse/fs-bench
# Java client against Curvine RPC
bash build/tests/java-bench.sh fs.write
bash build/tests/java-bench.sh fs.read
# Java client through the mounted FUSE path
bash build/tests/java-bench.sh fuse.write /curvine-fuse/fs-bench
bash build/tests/java-bench.sh fuse.read /curvine-fuse/fs-bench
Before running fuse.* actions, make sure /curvine-fuse is mounted.
Resultsâ
The current reference tree does not publish official throughput tables for these wrappers. Treat any throughput numbers as environment-specific measurements, not repository defaults.