The root cause of the problem is that s390x kernels are built with
kernel preemption enabled (CONFIG_PREEMPTION=y). On s390 that forces
CONFIG_GENERIC_LOCKBREAK=y.

GENERIC_LOCKBREAK=y forces a generic, non-optimized, implementation of a
spinlock, instead of using the optimized arch_spin_lock_wait() (which is
now basically dead code). What actually runs therefore is a simple
compare-and-swap on a single shared word across all logical CPUs.

Before 7dadeaa6e851e (“sched: Further restrict the preemption modes”),
which landed in v7.0-rc1, s390x was built with CONFIG_PREEMPT_VOLUNTARY,
therefore CONFIG_PREEMPTION=n and therefore with
CONFIG_GENERIC_LOCKBREAK=n.

Commit 7dadeaa6e851e forces architectures having
CONFIG_ARCH_HAS_PREEMPT_LAZY=y to select CONFIG_PREEMPT_LAZY=y which
selects CONFIG_PREEMPTION=y, which selects CONFIG_GENERIC_LOCKBREAK=y.

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

Title:
  [Ubuntu 26.04] Severe Performance Degradation on kernel 7.0.0-15

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-z-systems/+bug/2154748/+subscriptions


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

Reply via email to