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 E5432C3DA7A for ; Tue, 20 Dec 2022 20:44:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4957F8E0003; Tue, 20 Dec 2022 15:44:57 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 446B88E0001; Tue, 20 Dec 2022 15:44:57 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 30D258E0003; Tue, 20 Dec 2022 15:44:57 -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 25DED8E0001 for ; Tue, 20 Dec 2022 15:44:57 -0500 (EST) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id DDC45AB377 for ; Tue, 20 Dec 2022 20:44:56 +0000 (UTC) X-FDA: 80263863792.05.66B3071 Received: from mail-yb1-f202.google.com (mail-yb1-f202.google.com [209.85.219.202]) by imf30.hostedemail.com (Postfix) with ESMTP id 4F94880021 for ; Tue, 20 Dec 2022 20:44:55 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=OA4QXKd1; spf=pass (imf30.hostedemail.com: domain of 3xh6iYwgKCK8hWPZTTaQVddVaT.RdbaXcjm-bbZkPRZ.dgV@flex--shakeelb.bounces.google.com designates 209.85.219.202 as permitted sender) smtp.mailfrom=3xh6iYwgKCK8hWPZTTaQVddVaT.RdbaXcjm-bbZkPRZ.dgV@flex--shakeelb.bounces.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=1671569095; 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=cBjT4mczGAcRKDxekCfUuigKoWGhE5GXVDzxsCw5lgg=; b=bHeuECjYXJ/h8fk3+0LkXgayJo0HwA0dk6KKdvvUjcvgzPGzXPM4pL6SDINP/zZBgCcbD6 drd3su9INVJU32q7K5GUFuxiby4OUlgri5tZBhgGmv2lKjiUP5l6ey6zfPRY2ZpFdfW7Hm 3SH++fVdalt883XBfKngTjcCgCkfH7M= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=OA4QXKd1; spf=pass (imf30.hostedemail.com: domain of 3xh6iYwgKCK8hWPZTTaQVddVaT.RdbaXcjm-bbZkPRZ.dgV@flex--shakeelb.bounces.google.com designates 209.85.219.202 as permitted sender) smtp.mailfrom=3xh6iYwgKCK8hWPZTTaQVddVaT.RdbaXcjm-bbZkPRZ.dgV@flex--shakeelb.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1671569095; a=rsa-sha256; cv=none; b=2z8T0geYF1kmtjY73MykKXmdjXtwz89HzD3n1oSJvLjDryOCV6cp6vXv5PawDozu52a9Ow pnnYWojjWCDNo7smTmguxK1EI7BaPBkiHRrPSY0BN3BuTKfjyi9e1TWYsPBxc1vMk6vM2M T0iX3tiadXJIuI5g4sM7avSPieFE0jI= Received: by mail-yb1-f202.google.com with SMTP id x188-20020a2531c5000000b00716de19d76bso15374037ybx.19 for ; Tue, 20 Dec 2022 12:44:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=cBjT4mczGAcRKDxekCfUuigKoWGhE5GXVDzxsCw5lgg=; b=OA4QXKd1zWYDWeOzVIH4Wrq5hlCeBDbXDJWgpzsHk99f4TlV6VjTbZnrGQYSmZIzsp wptYRnLPhR0gqxp6ulCpkDMq4n+DAEbCNTd3W0705Vi6ViIVRHozFSAG+Vc6ud9u5XhJ F5VLTAa2nRkAY7dVYZRbEMWZa/goOubpR+k1LSoQbHiO5GM9jHhaKxbwsa2aV8VlXoeR jFUSkhVqK9NZ2OPbp4t4azw2rU6IQebrmbydwjbXgx5eoblFkjy+GCT+hEIHq3tympjp q+b4x3p+FN60peVEBp+HM4OAlUwig2nY1Sko9FzvcUKknWf9/EiHSSDMAk385v5U20aR HrKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=cBjT4mczGAcRKDxekCfUuigKoWGhE5GXVDzxsCw5lgg=; b=0lkSZpxjGuMqcYDrzK0D86EB07sRCX2u8IPjOtPfM+DwT5eszHeKTb4JeSZYho0JEl arzvMqm1WVwcz2k7y8cd355W1BMEZiJiUgEGwyc1rFPiuuW+KpUTeUzA/Q689WpAFXQw jt3/0nd5XfoRkfYvd7bKcUD7emrI9MU+Omgeb856XMRhZoTMljN6icT2BNmbk1fDF+Rh YFzS/bMz6wYt3XYdSOhZ/NevVFIbT1mn/NxlhbYCvmkxiVkqaUy+P3IKdRCiFEO3xt1/ WA/yWUhKVodgyNs+PEP/Ft6qh9cE0RY4tR8AHwhu6ufa/h5fRXMmOOZWSCRlkjBW1QJS JE7A== X-Gm-Message-State: ANoB5plXSMc8fm6LjfOS/eFlej2zBeLoOZnBZARpoSr65fO35yJHb5SC NxXw+Y/atDkm0v6P7PJ03BNGqgQm1WTZEA== X-Google-Smtp-Source: AA0mqf6q4KkdILzROX+6s6HGH0tYbSQJMSxDCqi4MHeQm1aNhPJEzlJ9ngPFtJxoZwYj7Jm7hNmp0WB9B/C9SA== X-Received: from shakeelb.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:262e]) (user=shakeelb job=sendgmr) by 2002:a25:bcd:0:b0:6fc:4d8a:f401 with SMTP id 196-20020a250bcd000000b006fc4d8af401mr33434506ybl.170.1671569094462; Tue, 20 Dec 2022 12:44:54 -0800 (PST) Date: Tue, 20 Dec 2022 20:44:51 +0000 In-Reply-To: <20221220182745.1903540-3-roman.gushchin@linux.dev> Mime-Version: 1.0 References: <20221220182745.1903540-1-roman.gushchin@linux.dev> <20221220182745.1903540-3-roman.gushchin@linux.dev> Message-ID: <20221220204451.gm5d3pdbfvd5ki6b@google.com> Subject: Re: [PATCH RFC 2/2] mm: kmem: add direct objcg pointer to task_struct From: Shakeel Butt To: Roman Gushchin Cc: linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, Johannes Weiner , Michal Hocko , Muchun Song , Andrew Morton Content-Type: text/plain; charset="us-ascii" X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 4F94880021 X-Rspam-User: X-Stat-Signature: x1y5atr3t1m3c45n4xonocgsnpt5sqso X-HE-Tag: 1671569095-253471 X-HE-Meta: U2FsdGVkX19vo9+6Vltd6p6h7Z07XdezPVQIz4w/CbUIxyn83qUlUgNeniHq34u2ch26kk6PeW+pVobujhbkzel8JR56ewAeDhoS8BnFlYpfJWbl3hSo2+G1Dc3PDs2ZlNFKv2uNTqT/0kOzCQrdsCMRUTQa/Y51vS0IeYAQ6TTgvaWmrJSA8Rye4rOWYi4om6xRhs4MmJOAl7UqERlK+uI0mwJFmyokj/Xgt44LgBI+QAfOOksKT0Cn0szD7TBsTMA8cf++u0pnxg1NPvzPjlqa6h+xsqC2xlHD+Z92t67x4jyIeYR2LPnHN3Pv0jhkrTXmPCyaUlBx9IMWKTAMFH7121u2q/O0g0crjljY1kZY2rNqs9ml1tPqi9vmXlhCr3p8IjbS+wT52tAan4XkRNJ/ISGkPWYyUwk97rxwupIEBKuzF1LFart+g347YylgvY58umwj4+vYEzveyWA02Gsh2lRZVKDQoaHF8hHpvFOyKKxRON5OSDfXrxxxdGr1pkXcTvyRndsXDdGNo/vjazY0oAmIuJdTVXtDrCUyAIcUbZX0B5Y4yFvKQFwPSCaQGDA3eg8XCWgKTEw6be1nzMS3gR0KCecK6ulKPI7DPwdKqoxvEmeqhRFFQyIIhN2QRM5p5YFezrrW0fQsoX0mPlLnsryzl+ggOQBXn7CPOvBiSOjR7eTPJxZf4gDemztoVwLLwKiVAVUt2/9ccUSRbdEl1+pzYBH3+RpQRVzgs2p4M35pjm42Ir1jODsp+xnyc1zSEE0/CSJ+vb06iLkB9rY4LRD414ijv6nTkD68zmgNb6GmMcjFEObb3CvziQn3GIBuhyx2waoZ855XOfaJnvDXOI/cQ8xqx5iq1cJFGdwcXHs3elfB2Hy8iU3LNpoRjyjB/1jKgJhD1xlFyJURhphJdKxN7f2pPoVz60V5h4PRUiLp6gxOcQO7tjJ2NjIlPnHNcEx/EDoJqLgv+wT Yg/BA3qg HHXTWuHMmUj0Baa4UCe82ky7i3Siy3Lc+QKzN1jxQr7pRaKg0aJ4EMAV8VguEkEznt1EfugsusRav6ljSbD8QbJ66wfGYDkt0XRmzLg2QNBR/DUcFLx9gHQnOKyeiqqAZf/olGGwmDUVcaHegbGCX0Z+fo4zPbHpv88XvamhEpT+WIBJd758SjfImP+0EBAbT7D/aLfTqnyYRRmJ7ZB3TQoB34e2ZJ+jhiLp+5YhgLUtrihET2WM9/iebJR/kl1NTa1cMvKAHx8+/OlvSnMN+vvaNFDG8M8qcFYjaqTGR0NIMcCUMmrobVf1P9uzz+5oOsg0KcHsONdL+xRwpjE6sg1iokCiIrjvVfBkGfmNjsfEA/ZqcLfeY4HtOKIc0pexBdf8nmL8iJTG5nxZ8j99sE1BJ7iu/q7brv8uK00iTIfeDZ5U= 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, Dec 20, 2022 at 10:27:45AM -0800, Roman Gushchin wrote: > To charge a freshly allocated kernel object to a memory cgroup, the > kernel needs to obtain an objcg pointer. Currently it does it > indirectly by obtaining the memcg pointer first and then calling to > __get_obj_cgroup_from_memcg(). > > Usually tasks spend their entire life belonging to the same object > cgroup. So it makes sense to save the objcg pointer on task_struct > directly, so it can be obtained faster. It requires some work on fork, > exit and cgroup migrate paths, but these paths are way colder. > > The old indirect way is still used for remote memcg charging. > > Signed-off-by: Roman Gushchin This looks good too. Few comments below: [...] > + > +#ifdef CONFIG_MEMCG_KMEM > +static void mem_cgroup_kmem_attach(struct cgroup_taskset *tset) > +{ > + struct task_struct *task; > + struct cgroup_subsys_state *css; > + > + cgroup_taskset_for_each(task, css, tset) { > + struct mem_cgroup *memcg; > + > + if (task->objcg) > + obj_cgroup_put(task->objcg); > + > + rcu_read_lock(); > + memcg = container_of(css, struct mem_cgroup, css); > + task->objcg = __get_obj_cgroup_from_memcg(memcg); > + rcu_read_unlock(); > + } > +} > +#else > +static void mem_cgroup_kmem_attach(struct cgroup_taskset *tset) {} > +#endif /* CONFIG_MEMCG_KMEM */ > + > +#if defined(CONFIG_MEMCG_KMEM) || defined(CONFIG_MEMCG_KMEM) I think you want CONFIG_LRU_GEN in the above check. > static void mem_cgroup_attach(struct cgroup_taskset *tset) > { > + mem_cgroup_lru_gen_attach(tset); > + mem_cgroup_kmem_attach(tset); > } > -#endif /* CONFIG_LRU_GEN */ > +#endif > > static int seq_puts_memcg_tunable(struct seq_file *m, unsigned long value) > { > @@ -6816,9 +6872,15 @@ struct cgroup_subsys memory_cgrp_subsys = { > .css_reset = mem_cgroup_css_reset, > .css_rstat_flush = mem_cgroup_css_rstat_flush, > .can_attach = mem_cgroup_can_attach, > +#if defined(CONFIG_MEMCG_KMEM) || defined(CONFIG_MEMCG_KMEM) Same here. > .attach = mem_cgroup_attach, > +#endif > .cancel_attach = mem_cgroup_cancel_attach, > .post_attach = mem_cgroup_move_task, > +#ifdef CONFIG_MEMCG_KMEM > + .fork = mem_cgroup_fork, > + .exit = mem_cgroup_exit, > +#endif > .dfl_cftypes = memory_files, > .legacy_cftypes = mem_cgroup_legacy_files, > .early_init = 0, > -- > 2.39.0 >