Skip to content

DAOS-18161 object: refine EC aggregation processing - #17092

Merged
gnailzenh merged 9 commits into
release/2.6from
lxz/ec_agg_start_eph_26
Nov 28, 2025
Merged

gnailzenh merged 9 commits into
release/2.6from
lxz/ec_agg_start_eph_26

Conversation

@liuxuezhao

@liuxuezhao liuxuezhao commented Nov 7, 2025 •

Copy link
Copy Markdown
Contributor
1. After restart take the sc_ec_agg_eph_boundary as ec aggregation's
   min epoch to avoid scan from epoch 0.
2. Consume more credits for layout calculate in EC agg.
3. Don't bump sc_ec_agg_eph after it reset during EC agg, to avoid data corruption.

Steps for the author:

  • Commit message follows the guidelines.
  • Appropriate Features or Test-tag pragmas were used.
  • Appropriate Functional Test Stages were run.
  • At least two positive code reviews including at least one code owner from each category referenced in the PR.
  • Testing is complete. If necessary, forced-landing label added and a reason added in a comment.

After all prior steps are complete:

  • Gatekeeper requested (daos-gatekeeper added as a reviewer).

@liuxuezhao
liuxuezhao requested review from a team as code owners November 7, 2025 08:13
@liuxuezhao
liuxuezhao requested review from a team, NiuYawei, gnailzenh and wangshilong November 7, 2025 08:13
@github-actions

github-actions Bot commented Nov 7, 2025 •

Copy link
Copy Markdown

Ticket title is 'Aurora daos_user: After PM work daos_user cluster is very slow to repond'
Status is 'In Review'
Labels: 'scrubbed_2.6.5,scrubbed_2.8'
Job should run at elevated priority (1)
https://daosio.atlassian.net/browse/DAOS-18161

@liuxuezhao
liuxuezhao force-pushed the lxz/ec_agg_start_eph_26 branch from a00301a to 0dda299 Compare November 7, 2025 08:28
@liuxuezhao
liuxuezhao force-pushed the lxz/ec_agg_start_eph_26 branch from 0dda299 to 4dae11f Compare November 7, 2025 11:22
@liuxuezhao
liuxuezhao removed request for a team November 7, 2025 11:23
@liuxuezhao
liuxuezhao force-pushed the lxz/ec_agg_start_eph_26 branch from 4dae11f to 109d9ec Compare November 7, 2025 11:47
@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage NLT on EL 8.8 completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos/job/PR-17092/3/display/redirect

@liuxuezhao
liuxuezhao requested a review from NiuYawei November 10, 2025 01:29
Comment thread src/container/srv_target.c Outdated
Comment thread src/object/srv_ec_aggregate.c Outdated
Comment thread src/container/srv_target.c
Comment thread src/object/srv_ec_aggregate.c
@liuxuezhao
liuxuezhao force-pushed the lxz/ec_agg_start_eph_26 branch from 109d9ec to 259b3b2 Compare November 10, 2025 09:10
@liuxuezhao liuxuezhao changed the title DAOS-18161 object: refine EC aggregation's epoch_min DAOS-18161 object: refine EC aggregation processing Nov 10, 2025
@liuxuezhao
liuxuezhao force-pushed the lxz/ec_agg_start_eph_26 branch 2 times, most recently from d08f374 to f936c07 Compare November 10, 2025 09:24
Comment thread src/object/srv_ec_aggregate.c Outdated
agg_reset_entry(&agg_param->ap_agg_entry, entry, &oca);
agg_reset_entry(&agg_param->ap_agg_entry, entry, &oca, false /* fini */, &layout_create);
if (!layout_create)
return rc;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

vos_iterate() ensures the iterator callback will never be called more than once, so the object layout won't be re-calculated on re-probe.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

right, reverted, thanks.

@liuxuezhao

Copy link
Copy Markdown
Contributor Author

we should before landing this. saw several engines asserting with:

#0 0x00007f686997cc6b in raise () from /lib64/libc.so.6 #1 0x00007f686997e305 in abort () from /lib64/libc.so.6 #2 0x00007f6869974c6a in __assert_fail_base () from /lib64/libc.so.6 #3 0x00007f6869974cf2 in __assert_fail () from /lib64/libc.so.6 #4 0x00007f6864704338 in cont_ec_aggregate_cb (cont=cont@entry=0x7e43723ff840, epr=epr@entry=0x7e437244c620, flags=0, agg_param=agg_param@entry=0x7e437244c720) at src/object/srv_ec_aggregate.c:2743 #5 0x00007f686477b7e9 in cont_child_aggregate (param=, agg_cb=0x7f6864703590 <cont_ec_aggregate_cb>, cont=0x7e43723ff840) at src/container/srv_target.c:432 #6 cont_aggregate_interval (cont=cont@entry=0x7e43723ff840, cb=cb@entry=0x7f6864703590 <cont_ec_aggregate_cb>, param=param@entry=0x7e437244c720) at src/container/srv_target.c:478 #7 0x00007f686470766e in ds_obj_ec_aggregate (arg=0x7e43723ff840) at src/object/srv_ec_aggregate.c:2882 #8 0x00007f6869c52f48 in ABTD_ythread_func_wrapper () from /scratchbox/daos/builds/20251111-162956_lxz_ec_agg_start_eph_26/install/bin/../prereq/release/argobots/lib/libabt.so.1 #9 0x00007f6869c428e9 in ABTD_ythread_context_func_wrapper () from /scratchbox/daos/builds/20251111-162956_lxz_ec_agg_start_eph_26/install/bin/../prereq/release/argobots/lib/libabt.so.1 #10 0x0000000000000000 in ?? ()

Thanks for testing. I checked some details and think that assertion cannot be satisfied for some special case, so I just removed it. @NiuYawei please re-check if the latest code is good for you, thanks.

@NiuYawei

Copy link
Copy Markdown
Contributor

we should before landing this. saw several engines asserting with:
#0 0x00007f686997cc6b in raise () from /lib64/libc.so.6 #1 0x00007f686997e305 in abort () from /lib64/libc.so.6 #2 0x00007f6869974c6a in __assert_fail_base () from /lib64/libc.so.6 #3 0x00007f6869974cf2 in __assert_fail () from /lib64/libc.so.6 #4 0x00007f6864704338 in cont_ec_aggregate_cb (cont=cont@entry=0x7e43723ff840, epr=epr@entry=0x7e437244c620, flags=0, agg_param=agg_param@entry=0x7e437244c720) at src/object/srv_ec_aggregate.c:2743 #5 0x00007f686477b7e9 in cont_child_aggregate (param=, agg_cb=0x7f6864703590 <cont_ec_aggregate_cb>, cont=0x7e43723ff840) at src/container/srv_target.c:432 #6 cont_aggregate_interval (cont=cont@entry=0x7e43723ff840, cb=cb@entry=0x7f6864703590 <cont_ec_aggregate_cb>, param=param@entry=0x7e437244c720) at src/container/srv_target.c:478 #7 0x00007f686470766e in ds_obj_ec_aggregate (arg=0x7e43723ff840) at src/object/srv_ec_aggregate.c:2882 #8 0x00007f6869c52f48 in ABTD_ythread_func_wrapper () from /scratchbox/daos/builds/20251111-162956_lxz_ec_agg_start_eph_26/install/bin/../prereq/release/argobots/lib/libabt.so.1 #9 0x00007f6869c428e9 in ABTD_ythread_context_func_wrapper () from /scratchbox/daos/builds/20251111-162956_lxz_ec_agg_start_eph_26/install/bin/../prereq/release/argobots/lib/libabt.so.1 #10 0x0000000000000000 in ?? ()

Thanks for testing. I checked some details and think that assertion cannot be satisfied for some special case, so I just removed it. @NiuYawei please re-check if the latest code is good for you, thanks.

It might because the rank was excluded during the test? @mchaarawi is exclusion involved in the test?

@mchaarawi

Copy link
Copy Markdown
Contributor

we should before landing this. saw several engines asserting with:
#0 0x00007f686997cc6b in raise () from /lib64/libc.so.6 #1 0x00007f686997e305 in abort () from /lib64/libc.so.6 #2 0x00007f6869974c6a in __assert_fail_base () from /lib64/libc.so.6 #3 0x00007f6869974cf2 in __assert_fail () from /lib64/libc.so.6 #4 0x00007f6864704338 in cont_ec_aggregate_cb (cont=cont@entry=0x7e43723ff840, epr=epr@entry=0x7e437244c620, flags=0, agg_param=agg_param@entry=0x7e437244c720) at src/object/srv_ec_aggregate.c:2743 #5 0x00007f686477b7e9 in cont_child_aggregate (param=, agg_cb=0x7f6864703590 <cont_ec_aggregate_cb>, cont=0x7e43723ff840) at src/container/srv_target.c:432 #6 cont_aggregate_interval (cont=cont@entry=0x7e43723ff840, cb=cb@entry=0x7f6864703590 <cont_ec_aggregate_cb>, param=param@entry=0x7e437244c720) at src/container/srv_target.c:478 #7 0x00007f686470766e in ds_obj_ec_aggregate (arg=0x7e43723ff840) at src/object/srv_ec_aggregate.c:2882 #8 0x00007f6869c52f48 in ABTD_ythread_func_wrapper () from /scratchbox/daos/builds/20251111-162956_lxz_ec_agg_start_eph_26/install/bin/../prereq/release/argobots/lib/libabt.so.1 #9 0x00007f6869c428e9 in ABTD_ythread_context_func_wrapper () from /scratchbox/daos/builds/20251111-162956_lxz_ec_agg_start_eph_26/install/bin/../prereq/release/argobots/lib/libabt.so.1 #10 0x0000000000000000 in ?? ()

Thanks for testing. I checked some details and think that assertion cannot be satisfied for some special case, so I just removed it. @NiuYawei please re-check if the latest code is good for you, thanks.

It might because the rank was excluded during the test? @mchaarawi is exclusion involved in the test?

no.. the cluster was idle with no IO running to it either

@liuxuezhao

Copy link
Copy Markdown
Contributor Author

the assertion should due to ds_cont_child_reset_ec_agg_eph_all() followed by a sc_ec_agg_eph_boundary refresh. unrelated with this PR.

@daosbuild3

Copy link
Copy Markdown
Collaborator

@liuxuezhao

Copy link
Copy Markdown
Contributor Author

the assertion should due to ds_cont_child_reset_ec_agg_eph_all() followed by a sc_ec_agg_eph_boundary refresh. unrelated with this PR.

yes, things is clear after some discussion with @NiuYawei, and I added the 3rd commit to fix a potential data corruption issue.

To avoid possible data corruption, dont bump sc_ec_agg_eph after it
reset during EC agg.

Signed-off-by: Xuezhao Liu <xuezhao.liu@hpe.com>
@liuxuezhao
liuxuezhao force-pushed the lxz/ec_agg_start_eph_26 branch from a07d2a5 to 7dc2110 Compare November 14, 2025 08:38
@daosbuild3

Copy link
Copy Markdown
Collaborator

Test stage Functional Hardware Medium Verbs Provider completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net//job/daos-stack/job/daos/view/change-requests/job/PR-17092/18/execution/node/1435/log

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

@daosbuild3

Copy link
Copy Markdown
Collaborator

@github-actions github-actions Bot added the priority Ticket has high priority (automatically managed) label Nov 26, 2025

@gnailzenh gnailzenh left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a clean cherry-pick and only has one irrelevant failure.

@gnailzenh
gnailzenh merged commit bc8d9a2 into release/2.6 Nov 28, 2025
40 of 41 checks passed
@gnailzenh
gnailzenh deleted the lxz/ec_agg_start_eph_26 branch November 28, 2025 06:19
daltonbohning pushed a commit that referenced this pull request Dec 3, 2025
* DAOS-18161 object: refine EC aggregation processing

1. After restart take the sc_ec_agg_eph_boundary as ec aggregation's
   min epoch to avoid scan from epoch 0.
2. Consume more credits for layout calculate in EC agg.

* DAOS-18161 object: remove an assertion

D_ASSERTF(cont->sc_ec_agg_eph >= cont->sc_ec_agg_eph_boundary) possibly
cannot be satisfied with considering ap_min_unagg_eph. So remove it.
Refine Sluggish EC boundary bumping comparison.

Signed-off-by: Xuezhao Liu <xuezhao.liu@hpe.com>

* DAOS-18161 object: don't bump sc_ec_agg_eph after it reset

To avoid possible data corruption, dont bump sc_ec_agg_eph after it
reset during EC agg.

Signed-off-by: Xuezhao Liu <xuezhao.liu@hpe.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

priority Ticket has high priority (automatically managed)

Development

Successfully merging this pull request may close these issues.

6 participants