On 10/12/2014 10:56 AM, Peter Zijlstra wrote:
On Wed, Oct 08, 2014 at 03:37:30PM -0400, [email protected] wrote:+static int preferred_group_nid(struct task_struct *p, int nid) +{ + nodemask_t nodes; + int hops; + + /* Direct connections between all NUMA nodes. */ + if (sched_numa_topology_type == NUMA_DIRECT) + return nid; + + /* + * On a system with glueless mesh NUMA topology, group_weight + * scores nodes according to the number of NUMA hinting faults on + * both the node itself, and on nearby nodes. + */ + if (sched_numa_topology_type == NUMA_GLUELESS_MESH) { + unsigned long score, max_score = 0; + int node, max_node = nid; + + hops = sched_domains_numa_levels; + + for_each_online_node(node) { + score = group_weight(p, node, hops); + if (score > max_score) { + max_score = score; + max_node = node; + } + } + return max_node; + }This too is O(nr_nodes^2), right?
It is, but I suspect the glueless mesh topologies are never larger than on the order of a dozen nodes or so. Would you prefer me to make the optimization I proposed in the other email, or should I just add in a comment stating that that optimization could be made if it turns out to be necessary? -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

