@@ -160,7 +160,7 @@ meson configure build
160160#### Device and Network Configuration
161161```
162162--device_list LIST # Comma-separated device names (default: all)
163- --etcd_endpoints URL # ETCD server URL for coordination (default: http://localhost:2379 )
163+ --etcd_endpoints URL # ETCD server URL for coordination (optional for storage backends )
164164```
165165
166166#### Storage Backend Options (GDS, GDS_MT, POSIX, HF3FS, OBJ)
@@ -208,11 +208,25 @@ meson configure build
208208
209209NIXL Benchmark uses an ETCD key-value store for coordination between benchmark workers. This is useful in containerized or cloud-native environments.
210210
211- To run the benchmark:
211+ ** ETCD Requirements:**
212+ - ** Required** : Network backends (UCX, UCX_MO, GPUNETIO, Mooncake) and multi-node setups
213+ - ** Optional** : Storage backends (GDS, GDS_MT, POSIX, HF3FS, OBJ) running as single instances
214+ - ** Required** : Storage backends when ` --etcd_endpoints ` is explicitly specified
215+
216+ ** For multi-node benchmarks:**
212217
2132181 . Ensure ETCD server is running (e.g., ` docker run -p 2379:2379 quay.io/coreos/etcd `
2142192 . Launch multiple nixlbench instances pointing to the same ETCD server
215220
221+ ** For single-instance storage benchmarks:**
222+ ``` bash
223+ # No ETCD needed - just run directly
224+ ./nixlbench --backend GDS --filepath /mnt/storage/testfile
225+
226+ # Or with explicit ETCD if coordination is needed
227+ ./nixlbench --etcd_endpoints http://etcd-server:2379 --backend GDS --filepath /mnt/storage/testfile
228+ ```
229+
216230Note: etcd can be installed directly on host as well:
217231``` bash
218232apt install etcd-server
@@ -255,26 +269,29 @@ The workers automatically coordinate ranks through ETCD as they connect.
255269
256270** GDS (GPU Direct Storage)**
257271``` bash
258- # Basic GDS benchmark
272+ # Basic GDS benchmark (no ETCD needed for single instance)
273+ ./nixlbench --backend GDS --filepath /mnt/storage/testfile --storage_enable_direct
274+
275+ # GDS with ETCD coordination
259276./nixlbench --etcd_endpoints http://etcd-server:2379 --backend GDS --filepath /mnt/storage/testfile --storage_enable_direct
260277
261278# GDS with custom batch settings
262- ./nixlbench --etcd_endpoints http://etcd-server:2379 -- backend GDS --filepath /mnt/storage/testfile --gds_batch_pool_size 64 --gds_batch_limit 256
279+ ./nixlbench --backend GDS --filepath /mnt/storage/testfile --gds_batch_pool_size 64 --gds_batch_limit 256
263280```
264281
265282** GDS_MT (Multi-threaded GDS)**
266283``` bash
267- # Multi-threaded GDS
268- ./nixlbench --etcd_endpoints http://etcd-server:2379 -- backend GDS_MT --filepath /mnt/storage/testfile --gds_mt_num_threads 8
284+ # Multi-threaded GDS (no ETCD needed for single instance)
285+ ./nixlbench --backend GDS_MT --filepath /mnt/storage/testfile --gds_mt_num_threads 8
269286```
270287
271288** POSIX Backend**
272289``` bash
273- # POSIX with AIO
274- ./nixlbench --etcd_endpoints http://etcd-server:2379 -- backend POSIX --filepath /mnt/storage/testfile --posix_api_type AIO
290+ # POSIX with AIO (no ETCD needed for single instance)
291+ ./nixlbench --backend POSIX --filepath /mnt/storage/testfile --posix_api_type AIO
275292
276293# POSIX with io_uring
277- ./nixlbench --etcd_endpoints http://etcd-server:2379 -- backend POSIX --filepath /mnt/storage/testfile --posix_api_type URING --storage_enable_direct
294+ ./nixlbench --backend POSIX --filepath /mnt/storage/testfile --posix_api_type URING --storage_enable_direct
278295```
279296
280297#### Worker Types
@@ -287,27 +304,30 @@ The workers automatically coordinate ranks through ETCD as they connect.
287304
288305### Benchmarking the OBJ (S3) Backend
289306
290- For OBJ plugin benchmarking run etcd-server and a single nixlbench instance .
307+ For OBJ plugin benchmarking, ETCD is optional for single instances .
291308
292309Example:
293310``` bash
294- # Basic S3 benchmark using environment variables
311+ # Basic S3 benchmark using environment variables (no ETCD needed)
295312AWS_ACCESS_KEY_ID=< access_key> AWS_SECRET_ACCESS_KEY=< secret_key> AWS_DEFAULT_REGION=< region> \
296- ./nixlbench --etcd_endpoints http://etcd-server:2379 -- backend OBJ --obj_bucket_name < bucket_name>
313+ ./nixlbench --backend OBJ --obj_bucket_name < bucket_name>
297314
298- # S3 benchmark using command line flags
299- ./nixlbench --etcd_endpoints http://etcd-server:2379 -- backend OBJ \
315+ # S3 benchmark using command line flags (no ETCD needed)
316+ ./nixlbench --backend OBJ \
300317 --obj_access_key < access_key> \
301318 --obj_secret_key < secret_key> \
302319 --obj_region < region> \
303320 --obj_bucket_name < bucket_name>
321+
322+ # S3 benchmark with ETCD coordination (if needed)
323+ ./nixlbench --etcd_endpoints http://etcd-server:2379 --backend OBJ --obj_bucket_name < bucket_name>
304324```
305325
306326** Performance Considerations:**
307327Transfer times are higher than local storage, so consider reducing iterations:
308328
309329``` bash
310- ./nixlbench --etcd_endpoints http://etcd-server:2379 -- backend OBJ \
330+ ./nixlbench --backend OBJ \
311331 --obj_bucket_name test-bucket \
312332 --warmup_iter 32 --num_iter 32 --large_blk_iter_ftr 2
313333```
0 commit comments