Hedger Lai created YUNIKORN-3459:
------------------------------------
Summary: [Core] Decouple ask queue quota accounting from victim
sizes in calculateVictimsByNode
Key: YUNIKORN-3459
URL: https://issues.apache.org/jira/browse/YUNIKORN-3459
Project: Apache YuniKorn
Issue Type: Improvement
Components: core - scheduler
Reporter: Hedger Lai
Assignee: Hedger Lai
Fix For: 1.6.0
In {{calculateVictimsByNode()}} ({{preemption.go}}), which evaluates candidate
victims on a single node, the scheduler accumulates the victim's full resource
size against {{askQueue}}:
{code:go}
askQueueRemaining := askQueue.GetRemainingGuaranteedResource()
if askQueueRemaining != nil &&
askQueueRemaining.FitInActual(victim.GetAllocatedResource()) {
askQueue.AddAllocation(victim.GetAllocatedResource())
} else {
queueSnapshot.AddAllocation(victim.GetAllocatedResource())
break
}
{code}
However, preempting a victim only allocates the preemptor ask's required
resources, not the victim's raw size. Charging victim sizes against
{{askQueue}} incorrectly rejects viable candidates on the node when a victim's
size exceeds {{askQueueRemaining}} (e.g., an 8 CPU victim for a 2 CPU ask when
{{askQueueRemaining}} is 2 CPU).
Single-node evaluation should focus strictly on physical node capacity and
victim queue limits. Cluster-wide ask queue quota preemption belongs to
{{calculateAdditionalVictims()}}.
h3. Proposed Fix
Decouple {{askQueue}} quota accounting from {{calculateVictimsByNode()}} so
candidate victims are not rejected based on their raw size exceeding
{{askQueueRemaining}}.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]