> > do { > > oldpte = *pte; > > @@ -94,6 +100,13 @@ static unsigned long change_pte_range(struct > > vm_area_struct *vma, pmd_t *pmd, > > /* Avoid TLB flush if possible */ > > if (pte_protnone(oldpte)) > > continue; > > + > > + /* > > + * Don't mess with PTEs if page is already on > > the node > > + * a single-threaded process is running on. > > + */ > > + if (target_node == page_to_nid(page)) > > + continue; > > } > > > > Check target_node != NUMA_NODE && target_node == page_to_nid(page) to > avoid unnecessary page->flag masking and shifts?
I didn't do this last change because I expect a potentially mispredicted check is more expensive than some shifting/masking. -Andi