From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8EB6BC433EF for ; Thu, 12 May 2022 20:02:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2741A8D0001; Thu, 12 May 2022 16:02:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 249F36B007B; Thu, 12 May 2022 16:02:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 112698D0001; Thu, 12 May 2022 16:02:54 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 04E7F6B0078 for ; Thu, 12 May 2022 16:02:54 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay11.hostedemail.com (Postfix) with ESMTP id D1BC880925 for ; Thu, 12 May 2022 20:02:53 +0000 (UTC) X-FDA: 79458164226.28.AC266F4 Received: from mail-pg1-f171.google.com (mail-pg1-f171.google.com [209.85.215.171]) by imf24.hostedemail.com (Postfix) with ESMTP id BF29F1800DB for ; Thu, 12 May 2022 20:02:44 +0000 (UTC) Received: by mail-pg1-f171.google.com with SMTP id 137so5542888pgb.5 for ; Thu, 12 May 2022 13:02:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:from:to:cc:subject:in-reply-to:message-id:references :mime-version; bh=tYwq8BZYyu22hfsnhkzpMRn1oGh9iKQiqjWqWR6tQrE=; b=H1pRFqELnK0tTdgBIkWYhRrwOD4VkPdnVHWlO8mbpojsUKnoEDnQEoyeynYQ5rd8Uz Jmm3P1Cgkn0lnm6g3AtyRZdR6j4SIT2roYIsOBs2uAAfgs3ECqP24wWWc9wRxbr86xcE 6sgfGyelZrBeJWaPIb5/vdu4FWF8LcCu4ylWm9XSPQC96TE/Upe89SYpTcsMKMnrmCWK gmEMzTBb05rkIe/rmI3IhyBeLaHS1a+bXv5OApWePnN8/WsLYiNdXnaOzrjsFVPcHteL SncBax46kj9ZxSZlg5/mubuyWe7C8tq+P4H4vthbHyRJe0GNcwt0ORgPN3/Zg9Z+SYF+ CZ5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:in-reply-to:message-id :references:mime-version; bh=tYwq8BZYyu22hfsnhkzpMRn1oGh9iKQiqjWqWR6tQrE=; b=nYg92fnE4jzaEaD+oVRzag5nhWKEy3YDZGqqABz/zp6HDc7/uOZVuqHeDgqFjxzwl/ QW+/RNpaBujweqSwdU3xN0pPnAeiKyRvrk6Lvo26dbDdVtU5Yi0cn6SGCqrXILwIMdLr y60JjImjUEuOAH86NCabRea6cTJISUkx7/OWnN4qZuvwcYJSmwkvL0skwWwRtUSqn8lg gEoa1A1OHr0MX6VqKfDcfZFjN7glDdxAYwHlMflZ6+ggkB/VVOyj1CV8KyF4NgDFsAME rZniMGHLABk2DQkOPk2kcI7VmQJeuLpGU7e1oznW7Rcn76sXRJyMLoKNaM9Ql+3T8iuo kwsA== X-Gm-Message-State: AOAM5308Q2wAgiQvfYE1tBPuyFt5mwsxw/7bG6EAn1K9a0Kok914MxR6 BhDgtHqUsbiB/JyadOUmtLl9sw== X-Google-Smtp-Source: ABdhPJzKvE56Rr2gEklsou+AlRp1nKKpL2KZxy3V6/SYm9zBFRUI8+sqy4I4DqFapQJK8FmHLDqHrQ== X-Received: by 2002:a05:6a00:cd6:b0:510:49f7:1265 with SMTP id b22-20020a056a000cd600b0051049f71265mr1308812pfv.19.1652385771998; Thu, 12 May 2022 13:02:51 -0700 (PDT) Received: from [2620:15c:29:204:8122:ccb0:c783:c757] ([2620:15c:29:204:8122:ccb0:c783:c757]) by smtp.gmail.com with ESMTPSA id b13-20020a170902e94d00b0015e8d4eb208sm314294pll.82.2022.05.12.13.02.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 May 2022 13:02:51 -0700 (PDT) Date: Thu, 12 May 2022 13:02:50 -0700 (PDT) From: David Rientjes To: Zach O'Keefe cc: Alex Shi , David Hildenbrand , Matthew Wilcox , Michal Hocko , Pasha Tatashin , Peter Xu , SeongJae Park , Song Liu , Vlastimil Babka , Yang Shi , Zi Yan , linux-mm@kvack.org, Andrea Arcangeli , Andrew Morton , Arnd Bergmann , Axel Rasmussen , Chris Kennelly , Chris Zankel , Helge Deller , Hugh Dickins , Ivan Kokshaysky , "James E.J. Bottomley" , Jens Axboe , "Kirill A. Shutemov" , Matt Turner , Max Filippov , Miaohe Lin , Minchan Kim , Patrick Xia , Pavel Begunkov , Thomas Bogendoerfer Subject: Re: [PATCH v5 03/13] mm/khugepaged: dedup and simplify hugepage alloc and charging In-Reply-To: <20220504214437.2850685-4-zokeefe@google.com> Message-ID: References: <20220504214437.2850685-1-zokeefe@google.com> <20220504214437.2850685-4-zokeefe@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=H1pRFqEL; spf=pass (imf24.hostedemail.com: domain of rientjes@google.com designates 209.85.215.171 as permitted sender) smtp.mailfrom=rientjes@google.com; dmarc=pass (policy=reject) header.from=google.com X-Rspam-User: X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: BF29F1800DB X-Stat-Signature: ue4hjr3ybsnunig7zadzn6yfrxas3syq X-HE-Tag: 1652385764-409098 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Wed, 4 May 2022, Zach O'Keefe wrote: > @@ -1069,10 +1067,34 @@ static bool __collapse_huge_page_swapin(struct mm_struct *mm, > return true; > } > > -static void collapse_huge_page(struct mm_struct *mm, > - unsigned long address, > - struct page **hpage, > - int node, int referenced, int unmapped) > +static int alloc_charge_hpage(struct page **hpage, struct mm_struct *mm, > + struct collapse_control *cc) > +{ > +#ifdef CONFIG_NUMA > + const struct cpumask *cpumask; > +#endif > + gfp_t gfp = alloc_hugepage_khugepaged_gfpmask() | __GFP_THISNODE; > + int node = khugepaged_find_target_node(cc); > + > +#ifdef CONFIG_NUMA > + /* sched to specified node before huge page memory copy */ > + if (task_node(current) != node) { > + cpumask = cpumask_of_node(node); > + if (!cpumask_empty(cpumask)) > + set_cpus_allowed_ptr(current, cpumask); > + } > +#endif > + if (!khugepaged_alloc_page(hpage, gfp, node)) > + return SCAN_ALLOC_HUGE_PAGE_FAIL; > + if (unlikely(mem_cgroup_charge(page_folio(*hpage), mm, gfp))) > + return SCAN_CGROUP_CHARGE_FAIL; > + count_memcg_page_event(*hpage, THP_COLLAPSE_ALLOC); > + return SCAN_SUCCEED; > +} Lots of ifdefs here, I wonder if we can define a helper function that is a no-op when CONFIG_NUMA is disabled that we can call into here instead. Otherwise this looks like a nice unification. After this is cleaned up feel free to add Acked-by: David Rientjes