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 AD467C4332F for ; Wed, 13 Dec 2023 15:01:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 45A926B04DA; Wed, 13 Dec 2023 10:01:49 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3E4AC6B04DB; Wed, 13 Dec 2023 10:01:49 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 284B96B04DC; Wed, 13 Dec 2023 10:01:49 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 15DB96B04DA for ; Wed, 13 Dec 2023 10:01:49 -0500 (EST) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id D04ECC0BAF for ; Wed, 13 Dec 2023 15:01:48 +0000 (UTC) X-FDA: 81562109496.27.AEFD535 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf03.hostedemail.com (Postfix) with ESMTP id C235A20051 for ; Wed, 13 Dec 2023 15:01:43 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=wTeEIfYu; spf=none (imf03.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1702479704; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=uSpzskSxj2X/kHA/iIDZHiWRnQDxjXrWl7oGiwPBvpo=; b=h7+jJz2fAz36NadRFa29EyMuAxPNXqj7ppHB7YQm2jCbUJbVdvcdrBUbwhs9NBrmAVaPLc yicooW0rQlVDC/dOm+fPDtxLjM8OpRId9KfpwawVSInV28kQtN1m16IVLkvjA/FBlNcHLQ 96D+5vJDw/dC8ljKUQNMRDV0/ki6oYc= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702479704; a=rsa-sha256; cv=none; b=NuNzg7TVWQaznFn1dMSjJuKJBpNS3FXPniqVCT2eE8rpZw8TP2NBajTCtWDPp62P7ZL/cd Qa0VFVbW7RDjBAU5dsCgHwyW1ktdgsq2QDJGfSqGBONQowFwfbQyNs/rFbvMB3bcfoqoNs iwDts9I9YFPV0cDdysWx0dUjXdSrDtk= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=wTeEIfYu; spf=none (imf03.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=uSpzskSxj2X/kHA/iIDZHiWRnQDxjXrWl7oGiwPBvpo=; b=wTeEIfYuCmWSRM58ytXknZCac7 /MGb969f+q7LJh6ZcPqRwZZOIYFto0hWOqKnB2rJYFj1yGNnCdvvWMeGLND8qgvYdEAGDsKcViEpG AQ6tcMPE1LDGSrAnvozhFrcUvh0YmSBgZuHp/car7Y+9hAxledyT/WQl4Vk26HGwZMJa7DUi1R81m dHNFGVgwXlgN194GCnkTlS8MhrS1zLDT8acLWLs5K5E0Os5CfbhsC6J21EwQu4P3dKiOfvsnIQWfz o+5/iTitK/62zkO2ABoTEHXQMw1UDuE0VWoy4sigUgXjYfpkij4MPuEXvKfMde3wKBGDFjpqGBmE1 pouWFVEw==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1rDQjo-0020VS-Mp; Wed, 13 Dec 2023 15:01:28 +0000 Date: Wed, 13 Dec 2023 15:01:28 +0000 From: Matthew Wilcox To: Yosry Ahmed Cc: Andrew Morton , Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , cgroups@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH] mm: memcg: remove direct use of __memcg_kmem_uncharge_page Message-ID: References: <20231213130414.353244-1-yosryahmed@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20231213130414.353244-1-yosryahmed@google.com> X-Rspamd-Queue-Id: C235A20051 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: 3duz5a1ordy9jnrfp1cwcsygyenyia34 X-HE-Tag: 1702479703-182443 X-HE-Meta: U2FsdGVkX1/gFDJaIYfTc5aZN9cLM3V3BjcRA3YTAV3OIb6HGL9cH2ygCv8lqTzA1Nf4qoBc1SBl6rLHTnzDYo9k7FvGQ9HgR4pFrW64XtAPxL2kQ7LKI0o44crduEOhHAuKXng3kHlymY2jaMNI1Dk8+lc6Ni584IqCd0HyL42tsy/lkTXPFukdeT1CgdN8zzKCLprgq8vhzeQuuSB6Hy0KlsxmXr/EVstAxuUS5Z71WPoxBO0rpdDxaaekONBe/zkZPAMyGx/FjpiCHYlQ0OYIoW6OgCxUmILQNO9P/6eP3HjETaP4KTovE5aiVXTZ09/vsvtz4ekAJUFu6TT4TeotZEqDz6vvm7hWVFsiZKQn0xg6cyO5m3Pm1lASb9ofGgo1fk+IUZDNyyMzUyVdYMhi//F5/PJfXTKzg26v/yb0ktyZKb4Og6zbCQGuoyXHH8qLj7SGLCItElhv7GAWmzhTRh8taNQ1/S6hyXaQuN/JbhRiM/AbXI4ks90XxnOWCptTMiQNlF45Go69sDs1SkNG/ZuQQuscBtpGVuKO8vJDggvI5j32I6ssJBPXZ598RSAIN5Nkfk94iXc8f63DWICXjXqOsDPyrrUKEQFIaeZRsA1d/LAaHWCWMTND2/JUT5fj6VPNVvLPpEFAyUpsrBxyIItrRdSXkYWJEQuG9drVK+UtYvsr62/nwlHZ2hnLKiar2nCfrRuuQgSXTMT+UjrkocaCZ7G9FXkhp42LDGBF3dkV3DY6ifMUdwGxVki8vhkh0dNZ18Atyn7CHgmr4MbBn6S+UKaVubjjoHWstlgYM1ugWW09ordX+0gEheOCmknkvl+t6TF4c3v0x0tk7Yb5fwe+P1TehcSJsKwbhT2s0ep+k5tyMdq5kHRx+kkvPZEoDT1nTdwarSdRVkeNUC2SXiJZKWsnT2+lN5SpxUa5gK24QWpcO1pg7p7SxstPKGpReqGB7mAnxmAzVB6 zEC1DxlF 5UIUk0/4spsT6VPSCRWg9Ip0zi1ceM2lU1HHu/crZxk+TKOt7mATAE7O6+FKo/OzSMFTMM/QR+LCbstRg3XvEHxfRFmjh3yVzs2gzhAbAlwOJwN4/AOMZx6qF9FbjzVsBwWf2TOSaHVyHKYxdbbPoQQ7IlM19vFq1JnaVAcKs6QOFiuX0gl1SDz5o4Q== 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: List-Subscribe: List-Unsubscribe: On Wed, Dec 13, 2023 at 01:04:14PM +0000, Yosry Ahmed wrote: > memcg_kmem_uncharge_page() is an inline wrapper around > __memcg_kmem_uncharge_page() that checks memcg_kmem_online() before > making the function call. Internally, __memcg_kmem_uncharge_page() has a > folio_memcg_kmem() check. > > The only direct user of __memcg_kmem_uncharge_page(), > free_pages_prepare(), checks PageMemcgKmem() before calling it to avoid > the function call if possible. Move the folio_memcg_kmem() check from > __memcg_kmem_uncharge_page() to memcg_kmem_uncharge_page() as > PageMemcgKmem() -- which does the same thing under the hood. Now > free_pages_prepare() can also use memcg_kmem_uncharge_page(). I think you've just pessimised all the other places which call memcg_kmem_uncharge_page(). It's a matter of probabilities. In free_pages_prepare(), most of the pages being freed are not accounted to memcg. Whereas in fork() we are absolutely certain that the pages were accounted because we accounted them. I think this is a bad change.