On Tue, Jan 21, 2020 at 09:42:05AM +0100, Michal Hocko wrote: >On Tue 21-01-20 06:25:40, Wei Yang wrote: >> On Mon, Jan 20, 2020 at 10:36:46AM +0100, Michal Hocko wrote: >> >On Sun 19-01-20 11:06:29, Wei Yang wrote: >> >> Before move page to target node, we would check if the node id is valid. >> >> In case we would try to move pages to the same target node, it is not >> >> necessary to do the check each time. >> >> >> >> This patch tries to skip the check if the node has been checked. >> >> >> >> Signed-off-by: Wei Yang <richardw.yang@xxxxxxxxxxxxxxx> >> >> --- >> >> mm/migrate.c | 19 +++++++++++-------- >> >> 1 file changed, 11 insertions(+), 8 deletions(-) >> >> >> >> diff --git a/mm/migrate.c b/mm/migrate.c >> >> index 430fdccc733e..ba7cf4fa43a0 100644 >> >> --- a/mm/migrate.c >> >> +++ b/mm/migrate.c >> >> @@ -1612,15 +1612,18 @@ static int do_pages_move(struct mm_struct *mm, nodemask_t task_nodes, >> >> goto out_flush; >> >> addr = (unsigned long)untagged_addr(p); >> >> >> >> - err = -ENODEV; >> >> - if (node < 0 || node >= MAX_NUMNODES) >> >> - goto out_flush; >> >> - if (!node_state(node, N_MEMORY)) >> >> - goto out_flush; >> >> + /* Check node if it is not checked. */ >> >> + if (current_node == NUMA_NO_NODE || node != current_node) { >> >> + err = -ENODEV; >> >> + if (node < 0 || node >= MAX_NUMNODES) >> >> + goto out_flush; >> >> + if (!node_state(node, N_MEMORY)) >> >> + goto out_flush; >> > >> >This makes the code harder to read IMHO. The original code checks the >> >valid node first and it doesn't conflate that with the node caching >> >logic which your change does. >> > >> >> I am sorry, would you mind showing me an example about the conflate in my >> change? I don't get it. > >NUMA_NO_NODE is the iteration logic, right? It resets the batching node. >Node check read from the userspace is an input sanitization. Do not put >those two into the same checks. More clear now? Yes, I see your point. Can we think like this: On each iteration, we do an input sanitization? Well, this is a trivial one. If you don't like it, I would remove this. >-- >Michal Hocko >SUSE Labs -- Wei Yang Help you, Help me