• Tim Chen's avatar
    sched: Add cluster scheduler level for x86 · 66558b73
    Tim Chen authored
    There are x86 CPU architectures (e.g. Jacobsville) where L2 cahce is
    shared among a cluster of cores instead of being exclusive to one
    single core.
    
    To prevent oversubscription of L2 cache, load should be balanced
    between such L2 clusters, especially for tasks with no shared data.
    On benchmark such as SPECrate mcf test, this change provides a boost
    to performance especially on medium load system on Jacobsville.  on a
    Jacobsville that has 24 Atom cores, arranged into 6 clusters of 4
    cores each, the benchmark number is as follow:
    
     Improvement over baseline kernel for mcf_r
     copies		run time	base rate
     1		-0.1%		-0.2%
     6		25.1%		25.1%
     12		18.8%		19.0%
     24		0.3%		0.3%
    
    So this looks pretty good. In terms of the system's task distribution,
    some pretty bad clumping can be seen for the vanilla kernel without
    the L2 cluster domain for the 6 and 12 copies case. With the extra
    domain for cluster, the load does get evened out between the clusters.
    
    Note this patch isn't an universal win as spreading isn't necessarily
    a win, particually for those workload who can benefit from packing.
    Signed-off-by: default avatarTim Chen <tim.c.chen@linux.intel.com>
    Signed-off-by: default avatarBarry Song <song.bao.hua@hisilicon.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20210924085104.44806-4-21cnbao@gmail.com
    66558b73
cacheinfo.c 28.3 KB