YARN-11967. Addendum: don't enable pmem/vmem checks in DistributedShellBaseTest#8595
YARN-11967. Addendum: don't enable pmem/vmem checks in DistributedShellBaseTest#8595singer-bin wants to merge 1 commit into
Conversation
…llBaseTest After YARN-11967, strictMemoryEnforcement defaults to false (it now requires yarn.nodemanager.resource.memory.enabled in addition to .enforced), so the polling-based memory check actually runs in these MiniYARNCluster tests and kills containers that exceed the tiny MIN_ALLOCATION_MB limit. These checks were previously no-ops (silently skipped by strict enforcement) and the tests do not exercise memory enforcement. Disable NM_PMEM_CHECK_ENABLED/NM_VMEM_CHECK_ENABLED while keeping ContainersMonitorImpl enabled for the resource-utilization tracking used by opportunistic containers.
|
Hi @pan3793 , thanks for flagging this — I've looked into it and opened an addendum PR: #8595. Root cause: Fix (in #8595): disable the polling pmem/vmem checks in the base test config. Would appreciate your review on #8595. Thanks again! |
|
🎊 +1 overall
This message was automatically generated. |
|
@Hexiaoqiao are you fine with this change? |
Description of PR
Follow-up / addendum to #8573 (YARN-11967).
After #8573,
strictMemoryEnforcementdefaults tofalse— it now requires bothyarn.nodemanager.resource.memory.enabled(defaultfalse) andyarn.nodemanager.resource.memory.enforced(defaulttrue). As a result,ContainersMonitorImpl#checkLimit()no longer takes the strict-only early-return path by default and the polling-based pmem/vmem check actually runs.DistributedShellBaseTest#setupInternalenables the polling checks:Historically these settings were silent no-ops, because strict enforcement was on by default and
checkLimit()short-circuited before reaching the polling logic. After YARN-11967 they take effect, and MiniYARNCluster containers running under the tinyMIN_ALLOCATION_MBlimit get killed for exceeding pmem/vmem, which is what @pan3793 observed on trunk after the merge.Fix
Disable the polling pmem/vmem checks in the base test config.
ContainersMonitorImplitself is still enabled (governed byNM_CONTAINER_MONITOR_ENABLED, defaulttrue), so resource-utilization tracking used by the opportunistic-container setup below is preserved. These tests do not exercise memory enforcement (noKILLED_EXCEEDED_PMEM/KILLED_EXCEEDED_VMEMassertions anywhere in the module).Why the fix is safe
isContainerMonitorEnabled()reads onlyNM_CONTAINER_MONITOR_ENABLED— it does not depend on the pmem/vmem check flags, soContainersMonitorImplremains active and reports utilization for opportunistic scheduling.How was this patch tested?
Only Linux CI can reproduce the original failure (macOS has no
/proc, soProcfsBasedProcessTreecannot sample memory locally). Relying on GHA to validate onapache/hadooptrunk.For code changes:
cc @pan3793 @Hexiaoqiao