On 2/9/21 11:12 PM, Miaohe Lin wrote:
> We should not transfer the per-node surplus state when we do not cross the
> node in order to save some cpu cycles
> 
> Signed-off-by: Miaohe Lin <linmia...@huawei.com>
> ---
>  mm/hugetlb.c | 6 ++++++
>  1 file changed, 6 insertions(+)

Thanks,

I was going to comment that the usual case is migrating to another node
and old_nid != new_nid.  However, this really is workload and system
configuration dependent.  In any case, the quick check is worth potentially
saving a lock/unlock cycle.

Reviewed-by: Mike Kravetz <mike.krav...@oracle.com>
-- 
Mike Kravetz

> 
> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> index da347047ea10..4f2c92ddbca4 100644
> --- a/mm/hugetlb.c
> +++ b/mm/hugetlb.c
> @@ -5632,6 +5632,12 @@ void move_hugetlb_state(struct page *oldpage, struct 
> page *newpage, int reason)
>               SetHPageTemporary(oldpage);
>               ClearHPageTemporary(newpage);
>  
> +             /*
> +              * There is no need to transfer the per-node surplus state
> +              * when we do not cross the node.
> +              */
> +             if (new_nid == old_nid)
> +                     return;
>               spin_lock(&hugetlb_lock);
>               if (h->surplus_huge_pages_node[old_nid]) {
>                       h->surplus_huge_pages_node[old_nid]--;
> 

Reply via email to