Skip to content
  • Paul Mackerras's avatar
    KVM: PPC: Book3S HV: Use msgsnd for signalling threads on POWER8 · 66feed61
    Paul Mackerras authored
    
    
    This uses msgsnd where possible for signalling other threads within
    the same core on POWER8 systems, rather than IPIs through the XICS
    interrupt controller.  This includes waking secondary threads to run
    the guest, the interrupts generated by the virtual XICS, and the
    interrupts to bring the other threads out of the guest when exiting.
    
    Aggregated statistics from debugfs across vcpus for a guest with 32
    vcpus, 8 threads/vcore, running on a POWER8, show this before the
    change:
    
     rm_entry:     3387.6ns (228 - 86600, 1008969 samples)
      rm_exit:     4561.5ns (12 - 3477452, 1009402 samples)
      rm_intr:     1660.0ns (12 - 553050, 3600051 samples)
    
    and this after the change:
    
     rm_entry:     3060.1ns (212 - 65138, 953873 samples)
      rm_exit:     4244.1ns (12 - 9693408, 954331 samples)
      rm_intr:     1342.3ns (12 - 1104718, 3405326 samples)
    
    for a test of booting Fedora 20 big-endian to the login prompt.
    
    The time taken for a H_PROD hcall (which is handled in the host
    kernel) went down from about 35 microseconds to about 16 microseconds
    with this change.
    
    The noinline added to kvmppc_run_core turned out to be necessary for
    good performance, at least with gcc 4.9.2 as packaged with Fedora 21
    and a little-endian POWER8 host.
    
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
    66feed61