• Li Zhijian's avatar
    mm/demotion: print demotion targets · 601e793a
    Li Zhijian authored
    Currently, when a demotion occurs, it will prioritize selecting a node
    from the preferred targets as the destination node for the demotion.  If
    the preferred node does not meet the requirements, it will try from all
    the lower memory tier nodes until it finds a suitable demotion destination
    node or ultimately fails.
    
    However, the demotion target information isn't exposed to the users,
    especially the preferred target information, which relies on more factors.
    This makes it hard for users to understand the exact demotion behavior.
    
    Rather than having a new sysfs interface to expose this information,
    printing directly to kernel messages, just like the current page
    allocation fallback order does.
    
    A dmesg example with this patch is as follows:
    [    0.704860] Demotion targets for Node 0: null
    [    0.705456] Demotion targets for Node 1: null
    // node 2 is onlined
    [   32.259775] Demotion targets for Node 0: perferred: 2, fallback: 2
    [   32.261290] Demotion targets for Node 1: perferred: 2, fallback: 2
    [   32.262726] Demotion targets for Node 2: null
    // node 3 is onlined
    [   42.448809] Demotion targets for Node 0: perferred: 2, fallback: 2-3
    [   42.450704] Demotion targets for Node 1: perferred: 2, fallback: 2-3
    [   42.452556] Demotion targets for Node 2: perferred: 3, fallback: 3
    [   42.454136] Demotion targets for Node 3: null
    // node 4 is onlined
    [   52.676833] Demotion targets for Node 0: perferred: 2, fallback: 2-4
    [   52.678735] Demotion targets for Node 1: perferred: 2, fallback: 2-4
    [   52.680493] Demotion targets for Node 2: perferred: 4, fallback: 3-4
    [   52.682154] Demotion targets for Node 3: null
    [   52.683405] Demotion targets for Node 4: null
    // node 5 is onlined
    [   62.931902] Demotion targets for Node 0: perferred: 2, fallback: 2-5
    [   62.938266] Demotion targets for Node 1: perferred: 5, fallback: 2-5
    [   62.943515] Demotion targets for Node 2: perferred: 4, fallback: 3-4
    [   62.947471] Demotion targets for Node 3: null
    [   62.949908] Demotion targets for Node 4: null
    [   62.952137] Demotion targets for Node 5: perferred: 3, fallback: 3-4
    
    Regarding this requirement, we have previously discussed [1].  The initial
    proposal involved introducing a new sysfs interface.  However, due to
    concerns about potential changes and compatibility issues with the
    interface in the future, a consensus was not reached with the community. 
    Therefore, this time, we are directly printing out the information.
    
    [1] https://lore.kernel.org/all/d1d5add8-8f4a-4578-8bf0-2cbe79b09989@fujitsu.com/
    
    Link: https://lkml.kernel.org/r/20240206020151.605516-1-lizhijian@fujitsu.comSigned-off-by: default avatarLi Zhijian <lizhijian@fujitsu.com>
    Reviewed-by: default avatar"Huang, Ying" <ying.huang@intel.com>
    Cc: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    601e793a
memory-tiers.c 24.2 KB