Re: [PATCH v3 0/9] Parallel CPU bringup for x86_64

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dear David,


Am 15.12.21 um 15:56 schrieb David Woodhouse:
Doing the INIT/SIPI/SIPI in parallel for all APs and *then* waiting for
them shaves about 80% off the AP bringup time on a 96-thread socket
Skylake box (EC2 c5.metal) — from about 500ms to 100ms.

There are more wins to be had with further parallelisation, but this is
the simple part.

v2: Cut it back to just INIT/SIPI/SIPI in parallel for now, nothing more
v3: Clean up x2apic patch, add MTRR optimisation, lock topology update
     in preparation for more parallelisation.


David Woodhouse (8):
       x86/apic/x2apic: Fix parallel handling of cluster_mask
       cpu/hotplug: Move idle_thread_get() to <linux/smpboot.h>
       cpu/hotplug: Add dynamic parallel bringup states before CPUHP_BRINGUP_CPU
       x86/smpboot: Reference count on smpboot_setup_warm_reset_vector()
       x86/smpboot: Split up native_cpu_up into separate phases and document them
       x86/smpboot: Send INIT/SIPI/SIPI to secondary CPUs in parallel
       x86/mtrr: Avoid repeated save of MTRRs on boot-time CPU bringup
       x86/smpboot: Serialize topology updates for secondary bringup

Thomas Gleixner (1):
       x86/smpboot: Support parallel startup of secondary CPUs

  arch/x86/include/asm/realmode.h       |   3 +
  arch/x86/include/asm/smp.h            |  13 +-
  arch/x86/include/asm/topology.h       |   2 -
  arch/x86/kernel/acpi/sleep.c          |   1 +
  arch/x86/kernel/apic/apic.c           |   2 +-
  arch/x86/kernel/apic/x2apic_cluster.c | 108 +++++++-----
  arch/x86/kernel/cpu/common.c          |   6 +-
  arch/x86/kernel/cpu/mtrr/mtrr.c       |   9 +
  arch/x86/kernel/head_64.S             |  71 ++++++++
  arch/x86/kernel/smpboot.c             | 324 ++++++++++++++++++++++++----------
  arch/x86/realmode/init.c              |   3 +
  arch/x86/realmode/rm/trampoline_64.S  |  14 ++
  arch/x86/xen/smp_pv.c                 |   4 +-
  include/linux/cpuhotplug.h            |   2 +
  include/linux/smpboot.h               |   7 +
  kernel/cpu.c                          |  27 ++-
  kernel/smpboot.c                      |   2 +-
  kernel/smpboot.h                      |   2 -
  18 files changed, 441 insertions(+), 159 deletions(-)

Thank you for working on this. I tested this on a MSI MS-7A37/B350M MORTAR (BIOS 1.MW 11/01/2021) with a Ryzen 3 2200G, but nothing was printed to the screen after the GRUB loading messages, so it crashed or hung somewhere. Unfortunately, this device is used by others, and no serial console is connected and I do not know how to capture the Linux log with other means.


Kind regards,

Paul



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux