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 07FD5C4332F for ; Wed, 13 Dec 2023 15:43:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 93A576B04FC; Wed, 13 Dec 2023 10:43:26 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8C4316B04FD; Wed, 13 Dec 2023 10:43:26 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6EFA66B04FE; Wed, 13 Dec 2023 10:43:26 -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 565976B04FC for ; Wed, 13 Dec 2023 10:43:26 -0500 (EST) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 274BE160A57 for ; Wed, 13 Dec 2023 15:43:26 +0000 (UTC) X-FDA: 81562214412.26.70ED952 Received: from mail-lf1-f45.google.com (mail-lf1-f45.google.com [209.85.167.45]) by imf02.hostedemail.com (Postfix) with ESMTP id 4C5B180026 for ; Wed, 13 Dec 2023 15:43:24 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=RcRiHuwg; spf=pass (imf02.hostedemail.com: domain of yosryahmed@google.com designates 209.85.167.45 as permitted sender) smtp.mailfrom=yosryahmed@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1702482204; 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=uUG0bdIpAOo2SWXtdO34WuDhmq+7ZO8R3MnzbE7T8g4=; b=NVm+bYi1ChbJAdxpUwxFwOZAw8A55JxKFUjlvl2D0RoVYDmwju3VeYXHwtWnLwuWdu4Dwp lNCOAaYIhpKef4rJTh1SQXL0b2/BDQj+Avjepp3qJs5j7higtbyulBWnDvcY/hfg0701O8 KpHVI4YtCrIqlxhi97Pxct6xyzosZsk= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702482204; a=rsa-sha256; cv=none; b=3DCcz4Qk4s/o6Am3+PwHtVummUvxpG61UsexwHj9bY2Uh3dBVgvZaqVtHp5oUWqtOW9lUv ob3Kgx02ph8vFgKwZmPjjrYKSajJ6EyeOK3hZ+qE8XPoiKO4xA05CO5GaofN/Cy6B2A0Eh +WxXZv+Mj9bHLnNKg8dk2jgLsDCOa+A= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=RcRiHuwg; spf=pass (imf02.hostedemail.com: domain of yosryahmed@google.com designates 209.85.167.45 as permitted sender) smtp.mailfrom=yosryahmed@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-lf1-f45.google.com with SMTP id 2adb3069b0e04-50e0ba402b4so2592274e87.1 for ; Wed, 13 Dec 2023 07:43:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1702482202; x=1703087002; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=uUG0bdIpAOo2SWXtdO34WuDhmq+7ZO8R3MnzbE7T8g4=; b=RcRiHuwg9j6WxfZEDPY5tCWCu3D3rMRR3FY87bk2NiVpnPwMc0s0A9vW4uaGaiARX4 l2rtRcKU1Tx+1bUAzcRJiIQE3ex5SAMpw2c+j9SJoSxvsmlEBkeN68PKxUMGLBkUW969 cjGLauIneCgzJL7XhAYsF3aHoS6VCPoPqptlVnW2n15nVYNkwwb1LKkVWknLmmn7XiqK bh2lLft1fbzQ0YEov7FRUYsj4iwQzU3HxYuNK5XF6v6xwsEoQ/8bvd4wyovUZytcCAFV Fixv0rGxnYsFOZtqCljEwLthknXoWSvhMB4FdZOjuNPCxdhpyCbB8iRfMaEUHmDXvaMb 2JYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702482202; x=1703087002; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uUG0bdIpAOo2SWXtdO34WuDhmq+7ZO8R3MnzbE7T8g4=; b=cLDeabmkgWPbP1SEIFednMA1eukGLE/kRsjevL9ToRDuwMaj/qDYYaZZfxtfjzScoF OgdlprV6x/i85C5r/UsJ1McSE4nQUGq9KzOLbRGHyWFoW83ftOioI4LBe+aQiO+HLKFH 6MCwYy/CmPhcPQ4n8dkBh9r3SXBn+VNkB+/2MVJ/PdXrqpeUC8qslP1vUUZhiYSArNbg AjvDWgwbvYVBYEmzr39PQHFLAP9omRmO9m8x2rm4PN9lL5kNgOJqQvZpKTcMt3edgBN/ csaAmxFDZdV0hMdHfjaidZn+CAL6H6uV0zANd78KgrY8HhsLB/MZfsg/Cd+DAagjmr1k 4Uag== X-Gm-Message-State: AOJu0YwWnR+NrnqaKCz7XUCbOKTxWidgPkor2PXrp7jxMnOBkgl9i8Vm RPIRf0ErYqfW1qr4QKrutOE5ZruhQDUCEvwKzMpg/g== X-Google-Smtp-Source: AGHT+IEkzrWeqYjMDHaUBZtdxlMs3Onfd3PFx4pxMmAALWN81VFeXXNoYJgWggFsWLxa9u0IWGWdA12+/ZJSiFPknHk= X-Received: by 2002:a05:6512:46d:b0:50b:f51a:299a with SMTP id x13-20020a056512046d00b0050bf51a299amr3692902lfd.32.1702482202295; Wed, 13 Dec 2023 07:43:22 -0800 (PST) MIME-Version: 1.0 References: <20231213130414.353244-1-yosryahmed@google.com> In-Reply-To: From: Yosry Ahmed Date: Wed, 13 Dec 2023 07:42:44 -0800 Message-ID: Subject: Re: [PATCH] mm: memcg: remove direct use of __memcg_kmem_uncharge_page To: Matthew Wilcox Cc: Andrew Morton , Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , cgroups@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: zyqjm1mz9h14hnbyptmf5eryh8eiu6nu X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 4C5B180026 X-Rspam-User: X-HE-Tag: 1702482204-927702 X-HE-Meta: U2FsdGVkX19cSfIdygZPIE2BnboLgik+hCToWIcO9te7RCJ2nP8yQJcruqQDF2QP401liEi6BBRye0TSJfM0Lsbmt6eNFJn7taFjyTB+KwRMaVz5HW4yfPp68nI+ODOmJnwvlV2ihD8E5uvrnbicPVMkuaJXWrlDIEhA56WiOX1wZVTMenYD1z6mkK8lcAp4cXZh/yb0N4C1qpU6hFL3g+9rbw+uXPLVM7smrj9GOFwYzOaTqNs/qG1ntNb8J5KhwEekMGdsLFIGNi4bTourg/32ipItUph+W64vRFCPLzaVSKP4UagVKLuPyzZL7vMBMl8vV5j8r+llesMk0fJqHLx71vFGS9Mj7jNAV/lhYAr/JjWo4jvyc55gtZkuhDYqhYRjZnuCxHQlRxIzwsUUZSOrMdfqfnOy5l09pOmuPWU+emUmHu9CKKfC7jFeOwUSgKxahlXmLbNfVVhlc/2ah6vNemaqDkii9PQ3NIbpAhAw7w5RYIqYhxVNA2TF54Y4z8WrHisbt+3o2NHt/zbcgjZqpG/vsyZf4N5nojGL73wY9DZ7YueCAA9sXhfwYBa/drdiMbss6fzySFssCbLwmI084PMf1Mv6pKnw+lOLWja0pN/oh0R0W+EyqGPgzeAVdbJrrdsseW1BBom1RQdfzpo2d1Ri5YlHmLbOOoTjun8C8R2cxlrmK0PXMvTloLjsCITHz47F8w/tNXFVkiQPz+NlcOY72JnV2GNaIjNpccZKJnx/6S2mOBq8oy1ltXpaOX0CA6nVW+7Prk5Or0+sTOOM7oqHCAHEdGz2IM+BxPJPch0qdOpEQSaB67lXP6jlPXt9J/fHNIyImWIz6bJJhwg2a0m48PE6nlS3LuQuMA62ZzqMjpi+vl3rgntwecucNrkPO5sXPq26WxLbAyc71JofJjiJzyZK6WhBHmB4ctn7CprHARs+WWZm3b87hrfzA/arpjCVd5Y8QX3XgHq LWzknmgj XZCeBMMO7mORTf3yx64UEeEnUHR5yIHfWoTCsXQcjI/MZlt9/GxS7i1smeOwNxyXVEpPwodfSg8lWGzIL3DiNcmoeDXLUxxjW3n3x6qoPRCpqQlTVPlygSmQOx4WmjswSqta3+JsbiYOGZhSj1i1vEEFLv6vrVz8S1ZYZzNy/8RPniOvErOwMj6/V22BMyXhYro90fMciZhc+O058/1arNo4seIsICZ63Amm92HBNw4O/bLDw4DRryJ6gV6EZnhP6LsU8jP2Kxx0KptwRx1UZ2UxjO4kJl4XETfIkOEG7ZZoNLmbLuWTyzA4GJMIrkTlaZb3UZr0oIElANYM= 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 7:38=E2=80=AFAM Matthew Wilcox wrote: > > On Wed, Dec 13, 2023 at 07:08:52AM -0800, Yosry Ahmed wrote: > > On Wed, Dec 13, 2023 at 7:01=E2=80=AFAM Matthew Wilcox wrote: > > > > > > 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 a= void > > > > the function call if possible. Move the folio_memcg_kmem() check fr= om > > > > __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. > > > > The check was already there for other callers, but it was inside > > __memcg_kmem_uncharge_page(). IIUC, the only change for other callers > > is an extra call to compound_head(), and they are not hot paths AFAICT > > so it shouldn't be noticeable. > > How can you seriously claim that fork() is not a hot path? It's only called in fork() when an error happens. It's normally called when a process is exiting.