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 B1D3AC433FE for ; Wed, 27 Apr 2022 19:49:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 196B96B0071; Wed, 27 Apr 2022 15:49:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 145156B0073; Wed, 27 Apr 2022 15:49:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F28996B0074; Wed, 27 Apr 2022 15:49:41 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay.hostedemail.com [64.99.140.26]) by kanga.kvack.org (Postfix) with ESMTP id DFD2F6B0071 for ; Wed, 27 Apr 2022 15:49:41 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id BE2D420FB2 for ; Wed, 27 Apr 2022 19:49:41 +0000 (UTC) X-FDA: 79403698962.16.F4AB30E Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf18.hostedemail.com (Postfix) with ESMTP id 9DEDF1C004C for ; Wed, 27 Apr 2022 19:49:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1651088980; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=PCK8TE8nYsd6sb38/7n9P+pnxGNNajA50g5MyXHuO7M=; b=KhWfLvHMp19n/LMhcfprxL/dDh0Ji/ZrGqjvZCYhg1214wk+MF5yOJaod9k1dHwW9/aMXt 46qADp1kNzM/e8SrNlu2cCQBr65GCNjQ61vjUgiroapDI4FYarmw/DTI9CGT6TZkjSAbqo FKXdLdOTrESBncTnojdjdOlk2yjGi5w= Received: from mail-io1-f69.google.com (mail-io1-f69.google.com [209.85.166.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-599-O4Gg7OP5OEupfUyZDIhV3Q-1; Wed, 27 Apr 2022 15:49:39 -0400 X-MC-Unique: O4Gg7OP5OEupfUyZDIhV3Q-1 Received: by mail-io1-f69.google.com with SMTP id n9-20020a056602340900b006572c443316so3017333ioz.23 for ; Wed, 27 Apr 2022 12:49:39 -0700 (PDT) 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:message-id:references :mime-version:content-disposition:in-reply-to; bh=PCK8TE8nYsd6sb38/7n9P+pnxGNNajA50g5MyXHuO7M=; b=lrBxZbVE+2ABy1GrB0QXMRNGJVAkvSvBVL8QwJnGq8RG9hOz9eKT7PLjlO7exB5KAv auM+yc+DiNyl1vwu5Ppj5GApXviWBUKgoBOYUzHsF3I8zb02b0CbUveaS85jKG+GCqnO BPf4SIZkTxZxP9AD1Ytl3MN7f9AOm7o/Qi0URwE3y9BEiICEb9AS9i/CnzWdbXl/bd1k R3P0vEIZV/CQWWB5Wzw+2fz7VHoI5hRoKfLT8VeKZVxBpJ+K2LxFi3+5P4SHQuTLP5XL mGA0R21CS7BKDySoJviZZ+pVL9ssLrmh9g9Vh4ggDGPPoZHcWm0yyBEiFEulVjoWlKiY DxPg== X-Gm-Message-State: AOAM530AUcvZDOP+S/PVQV/f08tUxMe8SI3/ZaSKT1MoVzEFpdx622d5 W7FfuxX7JuENKNiJ5arpAZ9eRYDcdia1iUK59UdFNAEBwZ0ivOJLxt5250cZO/737Fbz1adGjFk +yKDlZb+j4Gg= X-Received: by 2002:a05:6638:2403:b0:32b:1146:cbdb with SMTP id z3-20020a056638240300b0032b1146cbdbmr3245275jat.67.1651088978225; Wed, 27 Apr 2022 12:49:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz6UviCkP2UXl8ryHJwa+UELIcDlxRs/wZ6JvW5LbbkT1iIjWPnRNrc2ScoT54sj+lI1BGzXw== X-Received: by 2002:a05:6638:2403:b0:32b:1146:cbdb with SMTP id z3-20020a056638240300b0032b1146cbdbmr3245236jat.67.1651088977786; Wed, 27 Apr 2022 12:49:37 -0700 (PDT) Received: from xz-m1.local (cpec09435e3e0ee-cmc09435e3e0ec.cpe.net.cable.rogers.com. [99.241.198.116]) by smtp.gmail.com with ESMTPSA id a2-20020a5d9ec2000000b00645ab33390dsm11490827ioe.9.2022.04.27.12.49.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Apr 2022 12:49:37 -0700 (PDT) Date: Wed, 27 Apr 2022 15:49:34 -0400 From: Peter Xu To: Zach O'Keefe Cc: Alex Shi , David Hildenbrand , David Rientjes , Matthew Wilcox , Michal Hocko , Pasha Tatashin , 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 v3 02/12] mm/khugepaged: add struct collapse_control Message-ID: References: <20220426144412.742113-1-zokeefe@google.com> <20220426144412.742113-3-zokeefe@google.com> MIME-Version: 1.0 In-Reply-To: <20220426144412.742113-3-zokeefe@google.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=KhWfLvHM; spf=none (imf18.hostedemail.com: domain of peterx@redhat.com has no SPF policy when checking 170.10.129.124) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=none) header.from=redhat.com X-Rspam-User: X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 9DEDF1C004C X-Stat-Signature: f7hmz6ijbekmaycnzon3kxm4tg8qd5sf X-HE-Tag: 1651088976-583957 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 Tue, Apr 26, 2022 at 07:44:02AM -0700, Zach O'Keefe wrote: > Modularize hugepage collapse by introducing struct collapse_control. > This structure serves to describe the properties of the requested > collapse, as well as serve as a local scratch pad to use during the > collapse itself. Reasonable, but IMHO worth mentioning that "we're introducing the context by first moving the per-node statistics into ...", or something like that. > > Signed-off-by: Zach O'Keefe > --- > mm/khugepaged.c | 79 ++++++++++++++++++++++++++++--------------------- > 1 file changed, 46 insertions(+), 33 deletions(-) > > diff --git a/mm/khugepaged.c b/mm/khugepaged.c > index 2933b13fc975..9d42fa330812 100644 > --- a/mm/khugepaged.c > +++ b/mm/khugepaged.c > @@ -86,6 +86,14 @@ static struct kmem_cache *mm_slot_cache __read_mostly; > > #define MAX_PTE_MAPPED_THP 8 > > +struct collapse_control { > + /* Num pages scanned per node */ > + int node_load[MAX_NUMNODES]; > + > + /* Last target selected in khugepaged_find_target_node() for this scan */ Not really important, but.. iiuc this is not only for this scan but for all scans of the khugepaged thread. > + int last_target_node; > +}; [...] > @@ -829,28 +835,28 @@ static inline gfp_t alloc_hugepage_khugepaged_gfpmask(void) > } > > #ifdef CONFIG_NUMA > -static int khugepaged_find_target_node(void) > +static int khugepaged_find_target_node(struct collapse_control *cc) > { > - static int last_khugepaged_target_node = NUMA_NO_NODE; > int nid, target_node = 0, max_value = 0; > > /* find first node with max normal pages hit */ > for (nid = 0; nid < MAX_NUMNODES; nid++) > - if (khugepaged_node_load[nid] > max_value) { > - max_value = khugepaged_node_load[nid]; > + if (cc->node_load[nid] > max_value) { > + max_value = cc->node_load[nid]; > target_node = nid; > } > > /* do some balance if several nodes have the same hit record */ > - if (target_node <= last_khugepaged_target_node) > - for (nid = last_khugepaged_target_node + 1; nid < MAX_NUMNODES; > - nid++) > - if (max_value == khugepaged_node_load[nid]) { > + if (target_node <= cc->last_target_node) > + for (nid = cc->last_target_node + 1; nid < MAX_NUMNODES; > + nid++) { > + if (max_value == cc->node_load[nid]) { > target_node = nid; > break; > } > + } I'm not sure what's the coding style for this case, but IIUC we could either add both (to both outer "if" and "for") or none; adding one pair of brackets seems a bit odd. > > - last_khugepaged_target_node = target_node; > + cc->last_target_node = target_node; > return target_node; > } -- Peter Xu