> > 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

Reply via email to