> > if we want to prioritize STREAM like workloads (i.e private faults) one simpler > > fix could be to change the quadtraic equation > > > > from: > > if (!cpupid_pid_unset(last_cpupid) && > > cpupid_to_nid(last_cpupid) != dst_nid) > > return false; > > to: > > if (!cpupid_pid_unset(last_cpupid) && > > cpupid_to_nid(last_cpupid) == dst_nid) > > return true; > > > > i.e to say if the group tasks likely consolidated to a node or the task was > > moved to a different node but access were private, just move the memory. > > > > The drawback though is we keep pulling memory everytime the task moves > > across nodes. (which is probably restricted for long running tasks to some > > extent by your fix) > > > > This has way more consequences as it changes the behaviour for the entire > lifetime of the workload. It could cause excessive migrations in the case > where a machine is almost fully utilised and getting load balanced or in > cases where tasks are pulled frequently cross-node (e.g. worker thread > model or a pipelined computation). > > I'm only looking to address the case where the load balancer spreads a > workload early and the memory should move to the new node quickly. If it > turns out there are cases where that decision is wrong, it gets remedied > quickly but if your proposal is ever wrong, the system doesn't recover. > Agree. -- Thanks and Regards Srikar Dronamraju