On 26/04/2017 16:31, Eduardo Habkost wrote: > On Wed, Apr 26, 2017 at 12:07:01PM +0200, Laurent Vivier wrote: >> When there is more nodes than memory available to put the minimum >> allowed memory by node, all the memory is put on the last node. >> >> This is because we put (ram_size / nb_numa_nodes) & >> ~((1 << mc->numa_mem_align_shift) - 1); on each node, and in this >> case the value is 0. This is particularly true with pseries, >> as the memory must be aligned to 256MB. >> >> To avoid this problem, this patch uses an error diffusion algorithm [1] >> to distribute equally the memory on nodes. > > Nice. > > But we need compat code to keep the previous behavior on older > machine-types. We can use either a new boolean MachineClass > field, or a MachineClass method (mc->auto_assign_ram(), maybe?) > that 2.9 machine-types could override.
You're right. I'm going to introduce a "numa_auto_assign_ram()" function it the MachineClass. Thanks, Laurent