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 4B35DC00140 for ; Fri, 12 Aug 2022 04:49:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2F48C6B0073; Fri, 12 Aug 2022 00:49:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2A2AE6B0075; Fri, 12 Aug 2022 00:49:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 16BBA8E0001; Fri, 12 Aug 2022 00:49:44 -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 0540D6B0073 for ; Fri, 12 Aug 2022 00:49:44 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id C7A8C1407B5 for ; Fri, 12 Aug 2022 04:49:43 +0000 (UTC) X-FDA: 79789712646.01.CE3AA5B Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) by imf16.hostedemail.com (Postfix) with ESMTP id 7C260180181 for ; Fri, 12 Aug 2022 04:49:42 +0000 (UTC) Received: by mail-pf1-f175.google.com with SMTP id f28so18251897pfk.1 for ; Thu, 11 Aug 2022 21:49:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc; bh=WJS72dvtFXYi5pD5mzwuxGTEk9o9IeYNQbFa82DCy4I=; b=I8WudUyA1q1tagwtAJVmfs5vhMa7SoVIqm98l0muF354WAhWTSA95ysV9PwSPn1HO0 2vzbqZSPPL+T3Tg5T7DaqzigK1d+UZZ9uwBu8uHgechYY/v/aoR208ukXenG6ptImbnn aD9Jnsyaot4975dWL6psH1elmG8irCn+Taa+fwWlK0j3Dpfc5gdXBBfLubHNG16P/RzU uD5iEYfMhEpx6L4RQowQYcERuYXhBiT6orIc+yVjFCnwpY0C3pKbxFXBw2NHsOVaTvg+ fAHkL2V8foGTH7/DQpTnAOQE4oG/U+bceCiZdD4CvZ2NxL1BGUEZfZO1Ucp0TkV19KZf 2YSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc; bh=WJS72dvtFXYi5pD5mzwuxGTEk9o9IeYNQbFa82DCy4I=; b=JLcHnU1mOS3xQTtl2REbZ8SOPVRBQqX6o7O/Ymff6/ViMM67YzSUrYahXVlo3r549t vjpX0DpptyPsoyCaEVTD8653ptBK0B4WD+zwis+37A4/Qo+YmIUK5sQfIgM8suHiPw2X +wGKVi1PUNMQfQwg6ULhQZ0WL6haLwXyHg+lqPb30qPRD3HtERcMGxLtNsJ4ap+A8RT8 EIBNsHSm1js5AeU2t+eW4RnWDbtp4RC0bDZ05sPMwNF78VTi2oL/dE4tjrTy5T2XCuYF o1fHBgQuYyDncxOSK2mVcMfUdkojBTu/czDbMT881bPtplLMonQh/T2zpD1tCY/hAv2m PZSw== X-Gm-Message-State: ACgBeo26QbZv1UDdRJGq7losumZDhWWtV8H6U+PoJIYMjH7uOvlzzzIk nrcIuOIOeccskHp8emMDK2ugYV6TPiohSOxHseI= X-Google-Smtp-Source: AA6agR5bFW7pAjTlEOLEk3Bp1wmhqunho3EPofhv7GPByJMJHAK281Akfe2ACVLhG45c8zcsWyY0zF3StLaFOeQ9qnM= X-Received: by 2002:a62:6347:0:b0:531:c5a7:b209 with SMTP id x68-20020a626347000000b00531c5a7b209mr2336023pfb.60.1660279781406; Thu, 11 Aug 2022 21:49:41 -0700 (PDT) MIME-Version: 1.0 References: <20220801173155.92008-1-ryncsn@gmail.com> <20220811160739.ea6b0f9c2912317c49287cda@linux-foundation.org> In-Reply-To: <20220811160739.ea6b0f9c2912317c49287cda@linux-foundation.org> From: Kairui Song Date: Fri, 12 Aug 2022 12:49:29 +0800 Message-ID: Subject: Re: [PATCH] mm/util: reduce stack usage of folio_mapcount To: Andrew Morton Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Matthew Wilcox Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1660279782; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=WJS72dvtFXYi5pD5mzwuxGTEk9o9IeYNQbFa82DCy4I=; b=CcK0gGLy8EHxSNqITUGPeLoKROTfeNuWxYYJZB9P/I5xxOSNyu6zBPDLr4YL2Vdp4dxIXr HUO98KwlbNUqGxds19JVw9icH9rmRboHVVWsg1xaNLwss3DV/dglcJFnLgUtHrXdxfnNje beRcTPvBnLOj7Ir898IQIYROYAy5MbE= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=I8WudUyA; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf16.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.210.175 as permitted sender) smtp.mailfrom=ryncsn@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1660279782; a=rsa-sha256; cv=none; b=Rx5Jrf7lEdeh6jU23h68ARgHME0YxWTd6g22Tx4mV1SRkwzLGroLMrBUc9bSR7o6kwsJG1 eaaXZTGOqva6n247Vk5GzIb9A72CXrDOwPEANFww+JEaagAPdH7ZJ1YoDcgYzHiYfUj6g4 r/zmiRkSrgwLgBzbzOw9HBjqn6lrL60= X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 7C260180181 X-Rspam-User: X-Stat-Signature: txmomouj879a3ddcp8r8dymuanp9yoju Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=I8WudUyA; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf16.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.210.175 as permitted sender) smtp.mailfrom=ryncsn@gmail.com X-HE-Tag: 1660279782-205104 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: Andrew Morton =E4=BA=8E2022=E5=B9=B48=E6=9C=881= 2=E6=97=A5=E5=91=A8=E4=BA=94 07:07=E5=86=99=E9=81=93=EF=BC=9A > > On Tue, 2 Aug 2022 01:31:55 +0800 Kairui Song wrote: > > > From: Kairui Song > > > > folio_entire_mapcount will call PageHeadHuge which is a function call, > > and blocks the compiler from recognizing this redundant load. > > Did you mean folio_test_hugetlb() rather than folio_entire_mapcount()? Thanks for checking out this patch, and Yes, it's folio_test_hugetlb, my mistake... > > > > After rearranging the code, stack usage is dropped from 32 to 24, and > > the function size is smaller (tested on GCC 12): > > > > Before: > > Stack usage: > > mm/util.c:845:5:folio_mapcount 32 static > > Size: > > 0000000000000ea0 00000000000000c7 T folio_mapcount > > > > After: > > Stack usage: > > mm/util.c:845:5:folio_mapcount 24 static > > Size: > > 0000000000000ea0 00000000000000b0 T folio_mapcount > > > > ... > > > > @@ -850,10 +850,10 @@ int folio_mapcount(struct folio *folio) > > return atomic_read(&folio->_mapcount) + 1; > > > > compound =3D folio_entire_mapcount(folio); > > - nr =3D folio_nr_pages(folio); > > if (folio_test_hugetlb(folio)) > > return compound; > > ret =3D compound; > > + nr =3D folio_nr_pages(folio); > > for (i =3D 0; i < nr; i++) > > ret +=3D atomic_read(&folio_page(folio, i)->_mapcount) + = 1; > > /* File pages has compound_mapcount included in _mapcount */ > > -- > > 2.35.2 Is the rest of the patch a valid fix? Should I send V2?