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 A5F72C4332F for ; Wed, 13 Dec 2023 15:09:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2B2906B044B; Wed, 13 Dec 2023 10:09:35 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 261ED6B044C; Wed, 13 Dec 2023 10:09:35 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 129FA8D0015; Wed, 13 Dec 2023 10:09:35 -0500 (EST) 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 033A66B044B for ; Wed, 13 Dec 2023 10:09:35 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id AC555120B4C for ; Wed, 13 Dec 2023 15:09:34 +0000 (UTC) X-FDA: 81562129068.03.368512F Received: from mail-ed1-f52.google.com (mail-ed1-f52.google.com [209.85.208.52]) by imf07.hostedemail.com (Postfix) with ESMTP id DF8BD4001C for ; Wed, 13 Dec 2023 15:09:32 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=zYLoPmnO; spf=pass (imf07.hostedemail.com: domain of yosryahmed@google.com designates 209.85.208.52 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=1702480173; 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=LK3vjqOp8cH1cTBvK+w7wJkNBATd6DJiwq75K2sbxxc=; b=7N3RGKXKG8kzhjSPWt+OXpkPcDw271MFDIymPCCzGoqFItbA8iHTDegRDzNXU46AsHQVpS FiPZSiHzY1whb2qV791+Dd8xvpeHeLHWe+dYm/5VdmBjXd4y5ygNQD9FYCnX5eeit9Fi2/ achJXycE0W8Hq28A65cJM5JeUxGyKPA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702480173; a=rsa-sha256; cv=none; b=jNrZTUDOA4wDPqGY93tjPW7ozmcG2MtgdcGqQZYhoa/x68GRA5/obp9paYAoE+bsWLXPXt eIJ1oVGQ5pMoMH6pxmy17NdyD8mixvoy57o7IoUZg3d6BRrQp5ofEJgCTJeQJUohbdajet smoZeDzqR6+DVyh7wfcvKCmNfSORPXU= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=zYLoPmnO; spf=pass (imf07.hostedemail.com: domain of yosryahmed@google.com designates 209.85.208.52 as permitted sender) smtp.mailfrom=yosryahmed@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-ed1-f52.google.com with SMTP id 4fb4d7f45d1cf-54cdef4c913so15985134a12.1 for ; Wed, 13 Dec 2023 07:09:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1702480171; x=1703084971; 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=LK3vjqOp8cH1cTBvK+w7wJkNBATd6DJiwq75K2sbxxc=; b=zYLoPmnO4pxxKR/2a8/al5PwR+X/izBpDTh4P7qvm+1oPwjy1jsjE0jBp03BYoU4Ac DMuMhleYUp9J0CY2J7OsrdUQYuEWTsVid7AIzk4kXkLcR9wx8wZwXVzVGEgo7kVE/2bE 3JvKvrQU0WgQL4B10NK2k+ky3WlR10lig2/apNKCJRwvBWdQBnEDNA+FQkOmwnYWSItp pnMJGlHm2KTm8l6WLebLBqOIK0R/um3YaUCZyvErAf/Et2YVNGWVhJstyaNVjy0O7nVa L22Vp8KM07CpUoQJxk9PSoIO9HZc5/dHdUsMI++avIUWflH/IrKZI86aAQjeilhdUifb 408w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702480171; x=1703084971; 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=LK3vjqOp8cH1cTBvK+w7wJkNBATd6DJiwq75K2sbxxc=; b=DZJk/ewlmaovTmCVa/Hr5amlUbWH7teK7hg9DxkzXkYIdFsSQOelnj/gBG2yxmIgtQ pCv4AcUgp8ktp3dcSpD6aUlzVUF2nfVLOwJ8O5+/GUK8e0g2jkEE60A2KQcgsB8kWpfn 6CHhUYqogbSSnSyXJULP+NEvdB8TIcpz5ESixqhG5rYeO8wLVoxK/B/Sz6O7n3ZemVu3 2aZdpXJm5X8U1FA69eyAtQn+LnjtggTztqIwlZQSmmy7PuTWBZ4S/bKV3aGDKTI8jiSq Qo3ZaIsWHLGAdj7Z+RxNNBNv8EGoiQtGQadNSlVhtH1YwNEAvF7GIc3wP1lLOAWe3r5J LhOg== X-Gm-Message-State: AOJu0YzqlNUszrb0103THkmu+EvhMLay3kYZtTNfjyGN4AeNoqAwyzra QTJUJBoUJW7hjZWbSdZM+jQ9FwL4+9BVjRRZf5tplA== X-Google-Smtp-Source: AGHT+IHTzs71PhOa9uLWN2GzFVclITVZN+wQ/OQ8AStazrt0s3s/+fvBHO0hManjbRp35Zbwr49yR0JuZFFn9ru3lG0= X-Received: by 2002:a17:906:cb10:b0:a1c:5592:aa45 with SMTP id lk16-20020a170906cb1000b00a1c5592aa45mr7160722ejb.69.1702480171094; Wed, 13 Dec 2023 07:09:31 -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:08:52 -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: ma9rqkkdss181kqpwgkt7d7qb79sbjdq X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: DF8BD4001C X-Rspam-User: X-HE-Tag: 1702480172-63387 X-HE-Meta: U2FsdGVkX1/k/S/ax+VE6tR6druzxra5clVIc3IU2Ex/WHHa/2vAGkuv0I1vs658j8rN6Hv4bWAL17J+xzghJqykiQ+bxcTxRlWy+zmG2rZ+2ix+tMt7oL0nFzcyyClGvWms6tEA4cqdB7Iz1OV7Mj1cD/jVovRR5yGLW9imdo/osmr8vOVgSMo8t9qkOZp+NHOpKKzeNpxOHrmEqmVKw9RDPhm6Qb/S7D6Srj5CyMopB6PgNFOAJ9+aEiK5UvyyC6BCOQzCA0bj7grfOAF6wagTyvInWigR3BOL0OdefP1zM4zSRvLFY90qk2ZF58oFWepZboxSypYIoG6Wcx9HqEtufHGdTAp8x5CsvMaKCJak+kNIusy/PD6wJzCDkCbpWZxvl6U+RhkAZLsaqf36Vzuf6pm/Au41F7OOImU2bcfmY8SRNGUvcOrSZAlfIAQJzdXa661KZKncGQcODoaxA2ij3kEAlXyO8knR+6EyHs/FZUBg9PsZk4YdLvT9FItfxHQhgBVQHqaWyN7fkiJuI93Es/Uh7XY1PEC3ZdSGBvvw9nUIIirBP/34tLxZAqXNuaJZzA0DdbUhC/C2w/cPg3Tt825bqDUxq4T8gySW/P1RLpX5CHNjp6BKP5Hkg9AZMBl5lSJV7xnX1Vm9DBsn29ZLzeN6qm2itrDgZLGfFaIDs7xiKZpnfzkyuyOHcBY9h4NqhRLjrT5RSZjzSLK3ax1KU2wVBB3Uto92ufiwVGNpiPrisMHjM0LfXGobvso2ica9z1iq2lMM/m+TPnPXXyaX9t4ELByc4P7kmCI47Jk6gYMizjYoFLyqinLcUe8XcAJ6mXvZN/8bUVYLRtlItV8RcQlSAc9B9Ay7ywJ/e6CpGJbFtAV+714Ty8SrsXQWBsQmacxsIXOWYSqT/euaoy07FQayZ2HVn6JgnO6AEhth2wFTzqpgierGOpP4Akoa84meV5eH6cyatzpIsk+ pnxvec7f I5kLSOfbcA6pyy31F03jRoS2NOxl0fEYzXofWqbEwVLLeCzyn2LT8K2ypXrl4vilb4DGLPUZo/Mrv7PEGOvoEbzxY0EXT3KL5IwmJKTwYeo42PNQJG1Zw6SpRf6kFXnpXRuyqtM5682BLnFgw4ABN5mSOPIJtSLjCvbQekqNVQpNDi1sydAv724LdC55z1agMSPBz8cVp733s5khgkLZN17r4eDVdHBZbRcEDUvivLFKXC0mGP0WDHFOXsrI+fQ32nX6dTUwr8wguQf1aoBBdKB3oxcNkxrYP6C4ppje1WZr4NWZN8yoqckmHpRQCZbpY1eHdUxWaotvaqkc= 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: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 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. 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. Am I missing something? Perhaps your point is about how branch prediction works across function call boundaries? or is this not about performance at all? > > I think this is a bad change.