>Gregory Price wrote: >Implements interleave weighting for bandwidth optimization. > >The mempolicy MPOL_INTERLEAVE utilizes the node weights to implement >weighted interleave. > >There are 3 integration points: > >interleave_nodes: > Counts the number of allocations as they occur, and applies the > weight for the current node. When the weight reaches 0, switch > to the next node. > >offset_il_node: > Gets the total weight of the nodemask as well as each individual > node weight, then calculates the node based on the given index n. > >bulk_array_interleave: > Gets the total weight of the nodemask as well as each individual > node weight, then calculates the number of "interleave rounds" as > well as any delta ("partial round"). Calculates the number of > pages for each node and allocates them. > > If a node was scheduled for interleave via interleave_nodes, the > current weight (pol->cur_weight) will be allocated first, before > the remaining bulk calculation is done. This simplifies the > calculation at the cost of an additional allocation call. > >The functions mempolicy_get_il_weight and mempolicy_get_il_weights >were added so that should mempolicy be extended in the future to >include local mempolicy weights, there is a clear integration point. > >Signed-off-by: Gregory Price <gregory.price@xxxxxxxxxxxx> Thank you for the collaboration. Please add the following signatures to this commit. Co-authored-by: Srinivasulu Thanneeru <sthanneeru.opensrc@xxxxxxxxxx> Co-authored-by: Ravi Jonnalagadda <ravis.opensrc@xxxxxxxxxx> Signed-off-by: Srinivasulu Thanneeru <sthanneeru.opensrc@xxxxxxxxxx> Signed-off-by: Ravi Jonnalagadda <ravis.opensrc@xxxxxxxxxx> -- Best Regards, Ravi Jonnalagadda