[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <ff1f4bcd728c3500f80259d1bd9319f6d4cabef2.camel@infradead.org>
Date: Tue, 16 Feb 2021 21:18:24 +0000
From: David Woodhouse <dwmw2@...radead.org>
To: Thomas Gleixner <tglx@...utronix.de>
Cc: Andy Lutomirski <luto@...nel.org>,
"shenkai (D)" <shenkai8@...wei.com>,
"Schander, Johanna 'Mimoja' Amelie" <mimoja@...zon.com>,
LKML <linux-kernel@...r.kernel.org>,
Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de>,
X86 ML <x86@...nel.org>, "H. Peter Anvin" <hpa@...or.com>,
hewenliang4@...wei.com, hushiyuan@...wei.com,
luolongjun@...wei.com, hejingxian <hejingxian@...wei.com>
Subject: Re: [PATCH] use x86 cpu park to speedup smp_init in kexec situation
On Tue, 2021-02-16 at 15:10 +0000, David Woodhouse wrote:
> Actually it breaks before that, in rcu_cpu_starting(). A spinlock
> around that, an atomic_t to let the APs do their TSC sync one at a time
> (both in the above tree now), and I have a 75% saving on CPU bringup
> time for my 28-thread Haswell:
Here's a dual-socket Skylake box (EC2 c5.metal)... before:
[ 1.449015] smp: Bringing up secondary CPUs ...
[ 1.449358] x86: Booting SMP configuration:
[ 1.449578] .... node #0, CPUs: #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 #16 #17 #18 #19 #20 #21 #22 #23
[ 1.514986] .... node #1, CPUs: #24 #25 #26 #27 #28 #29 #30 #31 #32 #33 #34 #35 #36 #37 #38 #39 #40 #41 #42 #43 #44 #45 #46 #47
[ 1.644978] .... node #0, CPUs: #48 #49 #50 #51 #52 #53 #54 #55 #56 #57 #58 #59 #60 #61 #62 #63 #64 #65 #66 #67 #68 #69 #70 #71
[ 1.711970] .... node #1, CPUs: #72 #73 #74 #75 #76 #77 #78 #79 #80 #81 #82 #83 #84 #85 #86 #87 #88 #89 #90 #91 #92 #93 #94 #95
[ 1.781438] Brought CPUs online in 1063391744 cycles
[ 1.782289] smp: Brought up 2 nodes, 96 CPUs
[ 1.782515] smpboot: Max logical packages: 2
[ 1.782738] smpboot: Total of 96 processors activated (576364.89 BogoMIPS)
... and after:
[ 1.445661] smp: Bringing up secondary CPUs ...
[ 1.446004] x86: Booting SMP configuration:
[ 1.446047] .... node #0, CPUs: #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 #16 #17 #18 #19 #20 #21 #22 #23
[ 1.451048] .... node #1, CPUs: #24 #25 #26 #27 #28 #29 #30 #31 #32 #33 #34 #35 #36 #37 #38 #39 #40 #41 #42 #43 #44 #45 #46 #47
[ 1.455046] .... node #0, CPUs: #48 #49 #50 #51 #52 #53 #54 #55 #56 #57 #58 #59 #60 #61 #62 #63 #64 #65 #66 #67 #68 #69 #70 #71
[ 1.462050] .... node #1, CPUs: #72 #73 #74 #75 #76 #77 #78 #79 #80 #81 #82 #83 #84 #85 #86 #87 #88 #89 #90 #91 #92 #93 #94 #95
[ 1.465983] Brought 96 CPUs to x86/cpu:kick in 68802688 cycles
[ 0.094170] smpboot: CPU 26 Converting physical 1 to logical package 2
[ 1.468078] Brought 96 CPUs to x86/cpu:wait-init in 5178300 cycles
[ 1.476112] Brought CPUs online in 23479546 cycles
[ 1.476298] smp: Brought up 2 nodes, 96 CPUs
[ 1.476520] smpboot: Max logical packages: 2
[ 1.476743] smpboot: Total of 96 processors activated (576000.00 BogoMIPS)
So the CPU bringup went from 334ms to 31ms on that one.
I might try that without spewing over 1KiB to the serial port at 115200
baud during the proceedings, and see if it makes a bigger difference :)
Download attachment "smime.p7s" of type "application/x-pkcs7-signature" (5174 bytes)
Powered by blists - more mailing lists