Messages in this thread Patch in this message | | | Date | Wed, 14 Nov 2012 11:20:22 +0000 | From | Mel Gorman <> | Subject | Re: [PATCH 29/31] sched: numa: CPU follows memory |
| |
On Tue, Nov 13, 2012 at 11:12:58AM +0000, Mel Gorman wrote: > @@ -864,6 +1106,21 @@ void task_numa_fault(int node, int pages, bool misplaced) > task_numa_placement(p); > } > > +static void reset_ptenuma_scan(struct task_struct *p) > +{ > + ACCESS_ONCE(p->mm->numa_scan_seq)++; > + > + if (p->mm && p->mm->mm_balancenuma) > + p->mm->mm_balancenuma->mm_numa_fault_tot >>= 1; > + if (p->task_balancenuma) { > + int nid; > + p->task_balancenuma->task_numa_fault_tot >>= 1; > + for_each_online_node(nid) { > + p->task_balancenuma->task_numa_fault[nid] >>= 1; > + } > + } > +}
Overnight tests indicated that cpu-follows is currently broken in this series but a large part of the problem is a missing
p->mm->numa_scan_offset = 0;
here. means that all tasks are only considered for convergence once without proper resetting of the scanner. It's effectly becomes the vanilla kernel with a bunch of system CPU overhead.
Of course it's not the only problem with this patch as the overhead of finding a proper placement is mnassive and due to the slow scanning rate, it converges very slowly. While it's based on autonuma, autonuma did the same job outside the context of a process so it's not exactly equivalent.
-- Mel Gorman SUSE Labs
| |