SIGN IN SIGN UP

Add randomization option to allow random reads and writes to nixlbench (#1711)

## What?
nixlbench currently does sequential transfers from each memory location
to a matching location on storage transfers.
To maintain a more real-world scenario, randomizing the storage
addresses has been introduced.

## Why?
This is a requested feature to do a randomized read / write pattern

## How?
There are now two modes for randomized location usage, byte aligned and
block aligned. Byte aligned randomizes the offset used for the
transfers, block aligned reorders the iov's (which are originally
sequentially block aligned) that are sent to be transferred.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added a new --randomize_location_mode option (none, blockaligned,
bytealigned; default: none) to control how storage-backed benchmarks
randomize block/offset locations. The setting is shown in benchmark
configuration output.
* Storage I/O now supports shuffling and byte-/block-aligned offset
randomization; worker-side RNG added to drive randomized behavior.

* **Bug Fixes / Reliability**
* Invalid mode values are validated and reported to prevent
misconfiguration.
* Empty-sample handling and several conditional branches made more
explicit for clearer behavior.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Ofer Achler <ofer.achler@gmail.com>
Co-authored-by: Guy Ealey Morag <guymorag142@gmail.com>
Co-authored-by: Adit Ranadive <aranadive@nvidia.com>
O
Ofer Achler committed
53be1d43a415ff3a14b8bc942ca7242307adb70d
Parent: 2183708
Committed by GitHub <noreply@github.com> on 7/29/2026, 5:17:34 PM