Skip to content
  • Daniel Henrique Barboza's avatar
    690fbe42
    spapr_numa: consider user input when defining associativity · 690fbe42
    Daniel Henrique Barboza authored
    A new function called spapr_numa_define_associativity_domains()
    is created to calculate the associativity domains and change
    the associativity arrays considering user input. This is how
    the associativity domain between two NUMA nodes A and B is
    calculated:
    
    - get the distance D between them
    
    - get the correspondent NUMA level 'n_level' for D. This is done
    via a helper called spapr_numa_get_numa_level()
    
    - all associativity arrays were initialized with their own
    numa_ids, and we're calculating the distance in node_id ascending
    order, starting from node id 0 (the first node retrieved by
    numa_state). This will have a cascade effect in the algorithm because
    the associativity domains that node 0 defines will be carried over to
    other nodes, and node 1 associativities will be carried over after
    taking node 0 associativities into account, and so on. This
    happens because we'll assign assoc_src as the associativity domain
    of dst as well, for all NUMA levels beyond and including n_level.
    
    The PPC kernel expects the associativity domains of the first node
    (node id 0) to be always 0 [1], and this algorithm will grant that
    by default.
    
    Ultimately, all of this results in a best effort approximation for
    the actual NUMA distances the user input in the command line. Given
    the nature of how PAPR itself interprets NUMA distances versus the
    expectations risen by how ACPI SLIT works, there might be better
    algorithms but, in the end, it'll also result in another way to
    approximate what the user really wanted.
    
    To keep this commit message no longer than it already is, the next
    patch will update the existing documentation in ppc-spapr-numa.rst
    with more in depth details and design considerations/drawbacks.
    
    [1] https://lore.kernel.org/linuxppc-dev/5e8fbea3-8faf-0951-172a-b41a2138fbcf@gmail.com/
    
    
    
    Signed-off-by: default avatarDaniel Henrique Barboza <danielhb413@gmail.com>
    Message-Id: <20201007172849.302240-5-danielhb413@gmail.com>
    Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
    690fbe42
    spapr_numa: consider user input when defining associativity
    Daniel Henrique Barboza authored
    A new function called spapr_numa_define_associativity_domains()
    is created to calculate the associativity domains and change
    the associativity arrays considering user input. This is how
    the associativity domain between two NUMA nodes A and B is
    calculated:
    
    - get the distance D between them
    
    - get the correspondent NUMA level 'n_level' for D. This is done
    via a helper called spapr_numa_get_numa_level()
    
    - all associativity arrays were initialized with their own
    numa_ids, and we're calculating the distance in node_id ascending
    order, starting from node id 0 (the first node retrieved by
    numa_state). This will have a cascade effect in the algorithm because
    the associativity domains that node 0 defines will be carried over to
    other nodes, and node 1 associativities will be carried over after
    taking node 0 associativities into account, and so on. This
    happens because we'll assign assoc_src as the associativity domain
    of dst as well, for all NUMA levels beyond and including n_level.
    
    The PPC kernel expects the associativity domains of the first node
    (node id 0) to be always 0 [1], and this algorithm will grant that
    by default.
    
    Ultimately, all of this results in a best effort approximation for
    the actual NUMA distances the user input in the command line. Given
    the nature of how PAPR itself interprets NUMA distances versus the
    expectations risen by how ACPI SLIT works, there might be better
    algorithms but, in the end, it'll also result in another way to
    approximate what the user really wanted.
    
    To keep this commit message no longer than it already is, the next
    patch will update the existing documentation in ppc-spapr-numa.rst
    with more in depth details and design considerations/drawbacks.
    
    [1] https://lore.kernel.org/linuxppc-dev/5e8fbea3-8faf-0951-172a-b41a2138fbcf@gmail.com/
    
    
    
    Signed-off-by: default avatarDaniel Henrique Barboza <danielhb413@gmail.com>
    Message-Id: <20201007172849.302240-5-danielhb413@gmail.com>
    Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
Loading