Messages in this thread Patch in this message | | | Date | Thu, 12 Oct 2023 13:36:41 +0800 | From | Feng Tang <> | Subject | Re: [PATCH v9 2/3] x86/mce: Add per-bank CMCI storm mitigation |
| |
On Thu, Oct 12, 2023 at 01:23:54AM +0800, Luck, Tony wrote: > > IIRC, CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B was enabled in 0Day's > > kernel config for quite a while, to force each funtion's start > > address aligned on 64 bytes. Don't know if this has been changed > > recently. > > > > Also I noticed the patch introduce a new per-cpu variable 'storm_desc", > > if the function address is 64B aligned, then per-cpu data alignment > > may be related. > > If adding (removing, changing) per-cpu variables can cause 8% performance > changes, then maybe there needs to be some way to insulate the builds > from these side effects (as was done with the 64-byte function alignment). > I've no ideas on how to achieve that :-(
Philip helped to clarify that 0Day kernel build does enable the 64 bytes function address alignment.
> "storm_desc" is a largish per-cpu variable at 1568 bytes. But that doesn't > quite get it into the top 20. > > In the config used for my kernel build, it does appear just before a bunch > of interrupt related per-cpu variables. Those might be sensitive to alignment? > > 000000000001ff40 d smca_misc_banks_map > 000000000001ff48 d bank_map > 000000000001ff50 d threshold_banks > 000000000001ff60 d storm_desc > 0000000000020580 d tsc_adjust > 00000000000205c0 d lapic_events > 00000000000206c0 d vector_cleanup > 0000000000020720 D __uv_cpu_info > 0000000000020738 d ipi_mask
I did further check by putting 'storm_desc' into another section with below patch, and the regression is restored, which indictes it is related with these per-cpu data alignment change.
diff --git a/arch/x86/kernel/cpu/mce/threshold.c b/arch/x86/kernel/cpu/mce/threshold.c index ecdf13f1bb7d5..7f32126f216bc 100644 --- a/arch/x86/kernel/cpu/mce/threshold.c +++ b/arch/x86/kernel/cpu/mce/threshold.c @@ -41,7 +41,7 @@ struct mca_storm_desc { bool poll_mode; }; -static DEFINE_PER_CPU(struct mca_storm_desc, storm_desc); +static DEFINE_PER_CPU_SHARED_ALIGNED(struct mca_storm_desc, storm_desc);
Thanks, Feng
> > -Tony
| |