With nit fixed. Reviewed-by: Christoph Schlameuß <schlameuss@xxxxxxxxxx> On Thu Sep 4, 2025 at 1:39 PM CEST, Christian Borntraeger wrote: > Turns out that picking an idle CPU for floating interrupts has some > negative side effects. The guest will keep the IO workload on its CPU > and rather use an IPI from the interrupt CPU instead of moving workload. > For example a guest with 2 vCPUss and 1 fio process might run that fio on ----------------------------------^ nit: vCPUs > vcpu1. If after diag500 both vCPUs are idle then vcpu0 is woken up. The > guest will then do an IPI from vcpu0 to vcpu1. > > So lets change the heuristics and prefer the last CPU that went to > sleep. This one is likely still in halt polling and can be woken up > quickly. > > This patch shows significant improvements in terms of bandwidth or > cpu consumption for fio and uperf workloads and seems to be a net > win. > > Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxxxxx> > --- > arch/s390/include/asm/kvm_host.h | 2 +- > arch/s390/kvm/interrupt.c | 20 +++++++++----------- > 2 files changed, 10 insertions(+), 12 deletions(-)