From patchwork Tue Oct 1 05:32:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kanchana P Sridhar X-Patchwork-Id: 13817483 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 B4D79CEB2FF for ; Tue, 1 Oct 2024 05:37:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E497C6B00C5; Tue, 1 Oct 2024 01:37:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DA7F26B00CC; Tue, 1 Oct 2024 01:37:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C96AC6B00D4; Tue, 1 Oct 2024 01:37:14 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id A75006B00C5 for ; Tue, 1 Oct 2024 01:37:14 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 54837A043F for ; Tue, 1 Oct 2024 05:37:14 +0000 (UTC) X-FDA: 82623925188.30.C826ACF Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.11]) by imf18.hostedemail.com (Postfix) with ESMTP id 265521C0003 for ; Tue, 1 Oct 2024 05:37:11 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=d5co79sR; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf18.hostedemail.com: domain of kanchana.p.sridhar@intel.com designates 192.198.163.11 as permitted sender) smtp.mailfrom=kanchana.p.sridhar@intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1727761012; a=rsa-sha256; cv=none; b=8osLFkCImOpeKBN74IeUvopJlXArcgccakpHGWL74YHc4Y6mm1WMZGL3i/styRauGWCp0J rlqDK9VIqqyHCODVNXDGN/65pNj7wqU4spz6GUbUPjFztMYH3NlmfuxA7GnpdnGVGkQo5N wzoy64EQxA9YHqZiAc2Ly/NviinHhlM= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=d5co79sR; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf18.hostedemail.com: domain of kanchana.p.sridhar@intel.com designates 192.198.163.11 as permitted sender) smtp.mailfrom=kanchana.p.sridhar@intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1727761012; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=M730LVfFwW6rpjl4uQCMiFS0gVBAbwK2DJXQPTJxn6Y=; b=TfT6YDdzR5PswmZRr+Z9Lsjr4cgPIiK/bi/WUP/w6jught3ow/17r4dlW3OiMqsRD/JymL ldDFUiD1h6QOq1fQqdgweGlAqeyRjaR3pgwMc00fl0l7PrMkMDnpk79ovNEImBXuiVRYVq c6B4Oa39nSjQPrbDTU29lvoqTvFtyd4= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1727761032; x=1759297032; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=lB+hvyf3yxepm5Kmd6XwZLQVvnN7/oVBqCxfq4eIzGU=; b=d5co79sRGjt+rFkh5L5AIdlXqcm3LQysmgr0M8mUNI678Fb3Jx2X5Ryg mrEbVjVn7vdleK+SmoFlmbzm9ZOMjD6dVR1zwAllY1jcvYDZ8TvtsHamN 2CT2INorqY6PqtUIAWutep12FWQsKHuV2yDWpaXBvMDFKhO2L2gT01hqB nO9t/begAppUDtZJZ4hBQqWPBF+4vgskp0bKpdtwrkhIlwv0gmG1q1smh USe4Q4tA2JAGSXkpHuDGGTrRfDkjUYtEegiUVtVBDqp1096C2wI4rXIg/ bxpLuESAJnB9hEwG3XKy/HGcD3bElfohnjEMTRIT2DraztB/0Ac6zhUrh w==; X-CSE-ConnectionGUID: iNQD7SPRQpa6gsX9HApv2g== X-CSE-MsgGUID: 67ATNNtKRWW24+LHNzMzIA== X-IronPort-AV: E=McAfee;i="6700,10204,11211"; a="37465105" X-IronPort-AV: E=Sophos;i="6.11,167,1725346800"; d="scan'208";a="37465105" Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by fmvoesa105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Sep 2024 22:32:25 -0700 X-CSE-ConnectionGUID: PKBxrDh5Qx2Gv53SQPU5uQ== X-CSE-MsgGUID: wtC/7FAEQlSZaTIPojmcow== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.11,167,1725346800"; d="scan'208";a="73205804" Received: from jf5300-b11a338t.jf.intel.com ([10.242.51.6]) by fmviesa007.fm.intel.com with ESMTP; 30 Sep 2024 22:32:25 -0700 From: Kanchana P Sridhar To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, hannes@cmpxchg.org, yosryahmed@google.com, nphamcs@gmail.com, chengming.zhou@linux.dev, usamaarif642@gmail.com, shakeel.butt@linux.dev, ryan.roberts@arm.com, ying.huang@intel.com, 21cnbao@gmail.com, akpm@linux-foundation.org, willy@infradead.org Cc: nanhai.zou@intel.com, wajdi.k.feghali@intel.com, vinodh.gopal@intel.com, kanchana.p.sridhar@intel.com Subject: [PATCH v10 4/7] mm: Change count_objcg_event() to count_objcg_events() for batch event updates. Date: Mon, 30 Sep 2024 22:32:19 -0700 Message-Id: <20241001053222.6944-5-kanchana.p.sridhar@intel.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241001053222.6944-1-kanchana.p.sridhar@intel.com> References: <20241001053222.6944-1-kanchana.p.sridhar@intel.com> MIME-Version: 1.0 X-Rspam-User: X-Stat-Signature: ajku9ms5cescd3gn1ibpp8sjsbohnbkw X-Rspamd-Queue-Id: 265521C0003 X-Rspamd-Server: rspam02 X-HE-Tag: 1727761031-294131 X-HE-Meta: U2FsdGVkX1/EVndA4LNZzArBKSNtq4pXRP/vSXfnYy//pE4+Oj1nefv9w9C2+3RrrTiOFWG7reEBm0C27sApEmPPERPJT69gcSMVr6gzBIkz0hqkoAmRbbcQuEQJAumkw64quA25BId6q5kJ+RnytNi6OD431TPnVIuHLOoObq/IXw4XMigpbLa83PfvTS5tPxFIF/tx5UNk9qGmVRFbX9ktBRek3gSfj6PFVP963mKHRXMwAqah2mNnUrkD7WND50z7CecAeTd6JRR9Wv3VtFc69JgADVVbpqKwVvSqt/RTcxjD2IZvdm+ONwOc/uwvdeKCW/RKAFlkfZDZW3aVc12DUKAqR/8UvBHrJm9aCs8Py5pZ74FuqH9Su2BdBdAFA5t0WhNdIPL6UJ4WluAK6WUizjHoUsEYIrl4j8IRvI3LrRQz5g8HY501z1Cq/r3JNXtBk0X+dkJNLkVwrx9x1K1ShxkADG/gcDc9wZkuh7QR4gvPAAmsISyan76rDVTNssrovvKvj7YigSm5G5yMjH9zOXJKxcdrlJuoXRvMNhFHmjybWDcpaQYfFuuKhAuApPobjP9hn3jlhJtwGSjXBA4Vdcid64aF00TMqpSWy9pSAjyoVGa8cxkGfEkjIylseSrd8FX1PU2z7FaqnoVggrzj8XJhQ0KLnBuAXhvldYR8oMUagtq4D/PFVrg5QU2YiRWm2njXHfr3fBCZbF0qxWZ1hbNg4UciBf6gx+Rwzb1bS6WjkddkE/EPNQUk0m0vQ6s0vM1SmT94raGHqDdhkZwf3rkEJOrOvzEzgwevBQfAisu5jbH+FNeORtL54I/6cesPBYpalWL/qC8D4VFDaXYe4uCn3HApXMW7CnPr1Bc45UudAW4Hw38X4dAZGVN51dwjzL3sNBcnvs1mTCMRCSs+5PshPPhTwpcHuJ/WSNd2BqMWi0GHQOO5iMKDMQniEPlHyL0XdjzcKgUwd7H qMUPQ23x XwK+w13X+cJb5pz01QmbQeXLWe8U6KGEvJsLCPkElMKmFvQUChEU0Yws48VKaVUEm8oqrQZQpkWs/lqvlRt1xJw39/0Cmkr0B55P2PqWANvDgI7PfPpH8vPzkgA8mx80MRBq61/C3cZVNoVHEvz1C/TPNJZNhgXrIPm+hFT7oIo1UGvEV69Z5w0JEq3LrkvjeTW2j14y1dnGTUNLaz45QS6lsv0oAlu9zg6Th7GAVIiyQVIWW3kDUAdhhZR/cepAR0kTijw9jNjjGFb509pBlmlpdllx6u/VYHRfnU7T/JPJoO04NiFz/dt6IYZdlFWMeMfo6HJoLgH84g5A= 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: With the introduction of zswap_store() swapping out large folios, we need to efficiently update the objcg's memcg events once per successfully stored folio. For instance, the 'ZSWPOUT' event needs to be incremented by folio_nr_pages(). To facilitate this, the existing count_objcg_event() API is modified to be count_objcg_events() that additionally accepts a count parameter. The only existing calls to count_objcg_event() are in zswap.c - these have been modified to call count_objcg_events() with a count of 1. Signed-off-by: Kanchana P Sridhar Acked-by: Yosry Ahmed Reviewed-by: Nhat Pham Acked-by: Johannes Weiner --- include/linux/memcontrol.h | 12 +++++++----- mm/zswap.c | 6 +++--- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 15c2716f9aa3..524006313b0d 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h @@ -1764,8 +1764,9 @@ static inline int memcg_kmem_id(struct mem_cgroup *memcg) struct mem_cgroup *mem_cgroup_from_slab_obj(void *p); -static inline void count_objcg_event(struct obj_cgroup *objcg, - enum vm_event_item idx) +static inline void count_objcg_events(struct obj_cgroup *objcg, + enum vm_event_item idx, + unsigned long count) { struct mem_cgroup *memcg; @@ -1774,7 +1775,7 @@ static inline void count_objcg_event(struct obj_cgroup *objcg, rcu_read_lock(); memcg = obj_cgroup_memcg(objcg); - count_memcg_events(memcg, idx, 1); + count_memcg_events(memcg, idx, count); rcu_read_unlock(); } @@ -1829,8 +1830,9 @@ static inline struct mem_cgroup *mem_cgroup_from_slab_obj(void *p) return NULL; } -static inline void count_objcg_event(struct obj_cgroup *objcg, - enum vm_event_item idx) +static inline void count_objcg_events(struct obj_cgroup *objcg, + enum vm_event_item idx, + unsigned long count) { } diff --git a/mm/zswap.c b/mm/zswap.c index 0f281e50a034..69b9c025fd47 100644 --- a/mm/zswap.c +++ b/mm/zswap.c @@ -1053,7 +1053,7 @@ static int zswap_writeback_entry(struct zswap_entry *entry, count_vm_event(ZSWPWB); if (entry->objcg) - count_objcg_event(entry->objcg, ZSWPWB); + count_objcg_events(entry->objcg, ZSWPWB, 1); zswap_entry_free(entry); @@ -1482,7 +1482,7 @@ bool zswap_store(struct folio *folio) if (objcg) { obj_cgroup_charge_zswap(objcg, entry->length); - count_objcg_event(objcg, ZSWPOUT); + count_objcg_events(objcg, ZSWPOUT, 1); } /* @@ -1576,7 +1576,7 @@ bool zswap_load(struct folio *folio) count_vm_event(ZSWPIN); if (entry->objcg) - count_objcg_event(entry->objcg, ZSWPIN); + count_objcg_events(entry->objcg, ZSWPIN, 1); if (swapcache) { zswap_entry_free(entry);