You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@yunikorn.apache.org by "Hedger Lai (Jira)" <ji...@apache.org> on 2026/10/07 17:49:00 UTC

[jira] [Created] (YUNIKORN-3499) [Core] Exempt shared ancestors in QueuePreemptionSnapshot.GetPreemptableResource for sibling preemption

Hedger Lai created YUNIKORN-3499:
------------------------------------

             Summary: [Core] Exempt shared ancestors in QueuePreemptionSnapshot.GetPreemptableResource for sibling preemption
                 Key: YUNIKORN-3499
                 URL: https://issues.apache.org/jira/browse/YUNIKORN-3499
             Project: Apache YuniKorn
          Issue Type: Sub-task
            Reporter: Hedger Lai
            Assignee: Hedger Lai


h3. Problem

In {{{}YUNIKORN-2795{}}}, {{QueuePreemptionSnapshot.GetRemainingGuaranteedResource()}} was updated so that a parent/ancestor queue shared between the victim queue and the ask queue does not propagate its guaranteed floor down to block sibling preemption when the ask queue is starving below its own guaranteed quota.

However, the corresponding method {{QueuePreemptionSnapshot.GetPreemptableResource()}} was not updated with this shared-ancestor exemption. It unconditionally caps a victim queue's preemptable resource by {{parentPreemptableResource}} via {{{}ComponentWiseMinOnlyExisting(preemptableResource, parentPreemptableResource){}}}:
 * Example: {{root.parent}} has {{{}Guaranteed = 10{}}}, {{child1}} has {{Guaranteed = 0}} (using {{{}8{}}}), and {{child2}} has {{Guaranteed = 10}} (using {{{}8{}}}, asking for {{{}2{}}}).
 * {{root.parent}} total usage is {{16}} ({{{}6{}}} above {{{}root.parent{}}}'s guaranteed {{{}10{}}}).
 * Even though {{child1}} is using {{8}} above its own guarantee ({{{}0{}}}) and resources stay within {{root.parent}} during sibling preemption, {{child1.GetPreemptableResource()}} is capped at {{{}min(8, 6) = 6{}}}, preventing {{child2}} from preempting an {{{}8{}}}-unit victim in {{{}child1{}}}.

h3. Proposed Fix

Align {{QueuePreemptionSnapshot.GetPreemptableResource()}} with {{GetRemainingGuaranteedResource()}} so that shared ancestors on the ask queue path do not cap the victim queue's preemptable resources during sibling preemption.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@yunikorn.apache.org
For additional commands, e-mail: issues-help@yunikorn.apache.org