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
