Skip to content

IBMCEPH-17498: implement Elbencho S3 run loop and pdsh command builder (Story 3) - #360

Open
gitkenan wants to merge 3 commits into
ceph:masterfrom
gitkenan:elbencho-pdsh-init
Open

IBMCEPH-17498: implement Elbencho S3 run loop and pdsh command builder (Story 3)#360
gitkenan wants to merge 3 commits into
ceph:masterfrom
gitkenan:elbencho-pdsh-init

Conversation

@gitkenan

Copy link
Copy Markdown

Jira: IBMCEPH-17498 | Epic: IBMCEPH-15080 — Story 3 of 11

This fills in the _run_workloads() stub from Story 2. The three-tier nested loop (blocksize → threads → iodepth) now runs for real: for each cell it creates the run directory, builds the elbencho shell command, and fans it out to all client nodes via a single pdsh broadcast. The one non-obvious decision is the namespace-collision fix — rather than looping per-host, the bucket path is suffixed with $(hostname -s) inside the command string so the remote shell expands it independently on each node, matching the pattern already used by rbdfio for RBD volume naming.

stat and list modes are skipped with a warning per Story 5's explicit deferral decision; they produce no throughput or blocksize metrics so the formatter isn't ready for them yet.

32 new tests cover the blocksize parser, auth flag builder, command builder, and run-loop call count/path structure. Total test count: 54, all passing.

…are factory bypass

Add benchmark/elbencho.py (Elbencho class), wire it into benchmarkfactory.py with
_WORKLOADS_BENCHMARKS guard to prevent all_configs() Cartesian expansion, and cover
both with 25 unit tests in tests/test_bm_elbencho.py.

Signed-off-by: Kenan Al-Shamie <kenan.al-shamie@ibm.com>
Assisted-by: Bob 2.0
This was added to elbencho as part of the integration work, during which
it was realised that this kind of validation also suits hsbench due to
it also being a package external to tools included with Linux

Assisted-by: Bob 2.0
Signed-off-by: Kenan Al-Shamie <kenan.al-shamie@ibm.com>
…ory 3)

Three-tier nested loop (blocksize → threads → iodepth) in _run_workloads(),
fanning out one elbencho process per client node via pdsh for each run cell.

_build_elbencho_cmd() assembles the full CLI string from workload params:
all YAML schema keys map to their documented elbencho flags, --s3region is
always emitted (defaulting to 'default'), and the bucket path is suffixed
with $(hostname -s) at shell-evaluation time to prevent silent object-key
collisions when multiple clients write to the same bucket concurrently.

stat and list modes are skipped with a logged warning per Story 5's deferral
decision. The run directory follows the {mode}_{bs_bytes}/threads-NNN/
iodepth-MMM/ convention so the formatter (Stories 4/5) can reconstruct all
test parameters from the path without re-reading the YAML.

32 new tests across TestParseBlocskizeToBytes, TestBuildAuthFlags,
TestBuildElbenchoCmd, and TestRunLoop. Total: 54 tests, all passing.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants