Srikar Dronamraju <sri...@linux.vnet.ibm.com> writes: > If there are shared processor LPARs, underlying Hypervisor can have more > virtual cores to handle than actual physical cores. > > Starting with Power 9, a big core (aka SMT8 core) has 2 nearly > independent thread groups. On a shared processors LPARs, it helps to > pack threads to lesser number of cores so that the overall system > performance and utilization improves. PowerVM schedules at a big core > level. Hence packing to fewer cores helps. > > For example: Lets says there are two 8-core Shared LPARs that are > actually sharing a 8 Core shared physical pool, each running 8 threads > each. Then Consolidating 8 threads to 4 cores on each LPAR would help > them to perform better. This is because each of the LPAR will get > 100% time to run applications and there will no switching required by > the Hypervisor. > > To achieve this, enable SD_ASYM_PACKING flag at CACHE, MC and DIE level > when the system is running in shared processor mode and has big cores. > > Signed-off-by: Srikar Dronamraju <sri...@linux.vnet.ibm.com> > --- > Changelog: > v3 -> v4: > - Dont use splpar_asym_pack with SMT > - Conflict resolution due to rebase > (DIE changed to PKG) > v2 -> v3: > - Handle comments from Michael Ellerman. > - Rework using existing cpu_has_features static key > v1->v2: Using Jump label instead of a variable. > > arch/powerpc/kernel/smp.c | 37 +++++++++++++++++++++++++++++-------- > 1 file changed, 29 insertions(+), 8 deletions(-) > > diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c > index ab691c89d787..69a3262024f1 100644 > --- a/arch/powerpc/kernel/smp.c > +++ b/arch/powerpc/kernel/smp.c > @@ -993,16 +993,20 @@ static bool shared_caches; > /* cpumask of CPUs with asymmetric SMT dependency */ > static int powerpc_smt_flags(void) > { > - int flags = SD_SHARE_CPUCAPACITY | SD_SHARE_PKG_RESOURCES; > + if (!cpu_has_feature(CPU_FTR_ASYM_SMT)) > + return SD_SHARE_CPUCAPACITY | SD_SHARE_PKG_RESOURCES; > > - if (cpu_has_feature(CPU_FTR_ASYM_SMT)) { > - printk_once(KERN_INFO "Enabling Asymmetric SMT scheduling\n"); > - flags |= SD_ASYM_PACKING; > - } > - return flags; > + return SD_SHARE_CPUCAPACITY | SD_SHARE_PKG_RESOURCES | SD_ASYM_PACKING; > } > #endif >
Only relevant change there is dropping printk_once(). Rest of the changes are not needed? -aneesh