DAOS-18487 object: control EC rebuild resource consumption#17439
DAOS-18487 object: control EC rebuild resource consumption#17439
Conversation
A degraded EC read will allocate and register an extra buffer to recover data, which may cause ENOMEM in some cases. this workaround does not prevent dynamic buffer allocation and registration, it does provide relatively precise control over the resources consumed by degraded EC reads. Signed-off-by: Liang Zhen <gnailzenh@gmail.com>
|
Errors are Unable to load ticket data |
src/object/srv_obj_migrate.c
Outdated
| * registration, it does provide relatively precise control over the | ||
| * resources consumed by degraded EC reads. | ||
| */ | ||
| data_size *= MIN(8, obj_ec_data_tgt_nr(&mrone->mo_oca)); |
There was a problem hiding this comment.
See below L2052, the data_size pass to migrate_dkey(tls, mrone, data_size);
So the added size can define a new variable only pass to migrate_res_hold()/release(), to avoid affect migrate_dkey()?
And some fetch cases need not the data recovery process so will not allocate extra buffers, so maybe need not add so much size? as this may affect RB performance
|
Test stage NLT on EL 8.8 completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-17439/1/testReport/ |
|
Test stage Functional Hardware Medium MD on SSD completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net//job/daos-stack/job/daos/view/change-requests/job/PR-17439/1/execution/node/1282/log |
|
Test stage Functional Hardware Medium Verbs Provider MD on SSD completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net//job/daos-stack/job/daos/view/change-requests/job/PR-17439/1/execution/node/1323/log |
Signed-off-by: Liang Zhen <gnailzenh@gmail.com>
|
Test stage Functional Hardware Medium Verbs Provider MD on SSD completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net//job/daos-stack/job/daos/view/change-requests/job/PR-17439/2/execution/node/1352/log |
Signed-off-by: Liang Zhen <gnailzenh@gmail.com>
cf0d064
|
Test stage NLT on EL 8.8 completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-17439/3/testReport/ |
For data migration, after being waken up, the ULT should try to wake up another ULT if there is still available resource. Signed-off-by: Liang Zhen <gnailzenh@gmail.com>
|
Test stage Functional Hardware Medium Verbs Provider MD on SSD completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net//job/daos-stack/job/daos/view/change-requests/job/PR-17439/4/execution/node/1392/log |
Signed-off-by: Liang Zhen <gnailzenh@gmail.com>
|
Test stage NLT on EL 8.8 completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-17439/5/testReport/ |
|
Test stage Functional Hardware Medium MD on SSD completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net//job/daos-stack/job/daos/view/change-requests/job/PR-17439/5/execution/node/1306/log |
|
Test stage Functional Hardware Medium Verbs Provider MD on SSD completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net//job/daos-stack/job/daos/view/change-requests/job/PR-17439/5/execution/node/1365/log |
Signed-off-by: Liang Zhen <gnailzenh@gmail.com>
|
Test stage NLT on EL 8.8 completed with status UNSTABLE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net/job/daos-stack/job/daos//view/change-requests/job/PR-17439/21/testReport/ |
|
Test stage Functional Hardware Medium MD on SSD completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net//job/daos-stack/job/daos/view/change-requests/job/PR-17439/21/execution/node/1358/log |
- hulk data handling is not required anymore, it's replaced by starveling mechanism - remove the "yield" and simplify code Signed-off-by: Liang Zhen <gnailzenh@gmail.com>
|
Test stage Build on Leap 15.5 with Intel-C and TARGET_PREFIX completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net//job/daos-stack/job/daos/view/change-requests/job/PR-17439/22/execution/node/304/log |
Signed-off-by: Liang Zhen <gnailzenh@gmail.com>
|
Test stage Build on Leap 15.5 with Intel-C and TARGET_PREFIX completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net//job/daos-stack/job/daos/view/change-requests/job/PR-17439/23/execution/node/304/log |
If a rebuild hang is detected, dump resource bucket information and the waiter queue head Signed-off-by: Wang Shilong <shilong.wang@hpe.com>
src/object/srv_obj_migrate.c
Outdated
| return 0; | ||
| } | ||
|
|
||
| if (!migr_res_is_private(res)) |
There was a problem hiding this comment.
you can just take the mutex now, it's very cheap on private resource. I've made other parts of the PR consistent
src/object/srv_obj_migrate.c
Outdated
| if (!migr_res_is_private(res)) | ||
| ABT_mutex_unlock(res->res_mutex); | ||
|
|
||
| snprintf(buf + off, bufsz - off, " used/limit=%ld/%ld h=%d w=%d", used, limit, holders, |
There was a problem hiding this comment.
should we add resource name as well?
There was a problem hiding this comment.
resource name is printed in the caller.
Signed-off-by: Wang Shilong <shilong.wang@hpe.com>
Signed-off-by: Liang Zhen <gnailzenh@gmail.com>
|
Test stage Functional Hardware Large MD on SSD completed with status FAILURE. https://jenkins-3.daos.hpc.amslabs.hpecorp.net//job/daos-stack/job/daos/view/change-requests/job/PR-17439/25/execution/node/1281/log |
- remove private resource - add hulk data back, but as a separate resource type - other cleanups Signed-off-by: Liang Zhen <gnailzenh@gmail.com>
Signed-off-by: Liang Zhen <gnailzenh@gmail.com>
Signed-off-by: Wang Shilong <shilong.wang@hpe.com>
Signed-off-by: Wang Shilong <shilong.wang@hpe.com>
|
@wangshilong @NiuYawei @liuxuezhao @kccain this PR is ready for review |
|
This PR was merged with lint failures and now that failure is going to appear on every master PR and landing runs for master |
I pushed #17762 to fix |
| /* migration init error */ | ||
| int mpt_init_err; | ||
|
|
||
| /* Watchdog: track progress to detect complete rebuild hang */ |
There was a problem hiding this comment.
minor, "detect complete rebuild hang", complete can remove?
| MIGR_KEY, | ||
| MIGR_DATA, | ||
| MIGR_MAX, | ||
| MIGR_HULK_INF_MIN = 0, /* disable hulk data */ |
There was a problem hiding this comment.
looks like MIGR_HULK_INF_MIN is an INVALID setting, but it can be set
| if (units == -1ULL) { | ||
| D_ASSERT(!uuid_is_null(pool_id)); | ||
| if (uuid_compare(pool_id, waiter->rw_tls->mpt_pool_uuid) != 0) | ||
| continue; |
There was a problem hiding this comment.
seems possible that no any pool_uuid matched, for this case should not do below L2049 ~ 2051?
A degraded EC read will allocate and register an extra buffer to recover data, which may cause ENOMEM in some cases.
this workaround does not prevent dynamic buffer allocation and registration, it does provide relatively precise control over the resources consumed by degraded EC reads.
Steps for the author:
After all prior steps are complete: