Public bug reported:

[Impact]

On Vera systems, find_new_ilb() can select an idle housekeeping CPU
without considering whether another thread is running on the same
physical core. The NOHZ idle load balancer can therefore wake an idle
SMT sibling even when another housekeeping CPU has an entirely idle
core.

On NVIDIA Olympus cores, waking the second processing element switches
the core into a resource-sharing mode that reduces the performance
available to the active sibling. Full single-thread performance is
restored only after the idle sibling has remained in WFI for a
qualification interval. Repeated short-lived ILB wakeups can therefore
sustain the interference and reduce CPU-intensive workload performance.

An earlier downstream fix attempted to improve SMT placement by
normalizing idle-core selection in select_idle_capacity(). With the
latest upstream ILB fix applied, testing shows that retaining this
normalization produces worse results than restoring the upstream CPU-
selection behavior.

[Fix]

Apply the latest fix proposed upstream, "sched/fair: Prefer fully idle
cores for NOHZ balancing". It makes find_new_ilb() prefer an idle
housekeeping CPU whose entire SMT core is idle. If no fully idle core is
available, it falls back to the first idle CPU so that NOHZ balancing
continues to make progress.

The upstream fix is available here:
https://lore.kernel.org/r/[email protected]

Also revert the previous asym-capacity-specific SMT-core normalization.
Together, these changes re-align task placement with the upstream
scheduler behavior and address the Vera performance issue at its source:
selection of the CPU that runs the NOHZ idle load balancer.

[Test plan]

Tests have been conducted on NVIDIA Vera Rubin (arm64, 176 CPUs/88 cores
per NUMA node) using an ad hoc GEMM benchmark running one CPU-intensive
task per SMT core within its CPU affinity mask.

Preferring fully idle cores for NOHZ balancing improved throughput from
approximately 6.2 TFLOP/s to 9.4 TFLOP/s. Additional comparisons showed
better results after reverting the previous select_idle_capacity()
normalization and relying only on the latest upstream ILB fix.

[Regression potential]

The NOHZ change may wake a fully idle physical core instead of using an
idle sibling of an active core, potentially increasing energy
consumption.

** Affects: linux-nvidia-7.0 (Ubuntu)
     Importance: Undecided
         Status: New

** Affects: linux-nvidia-7.0 (Ubuntu Noble)
     Importance: Undecided
         Status: New

** Affects: linux-nvidia-7.0 (Ubuntu Resolute)
     Importance: Undecided
         Status: New

** Also affects: linux-nvidia-7.0 (Ubuntu Resolute)
   Importance: Undecided
       Status: New

** Also affects: linux-nvidia-7.0 (Ubuntu Noble)
   Importance: Undecided
       Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2162749

Title:
  Re-align Vera SMT handling with upstream NOHZ fix

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux-nvidia-7.0/+bug/2162749/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to