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 354EED3C526 for ; Thu, 17 Oct 2024 17:22:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B15BE6B007B; Thu, 17 Oct 2024 13:22:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A9EC16B0082; Thu, 17 Oct 2024 13:22:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 918AC6B0083; Thu, 17 Oct 2024 13:22:43 -0400 (EDT) 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 704EE6B007B for ; Thu, 17 Oct 2024 13:22:43 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id B6523A15DD for ; Thu, 17 Oct 2024 17:22:22 +0000 (UTC) X-FDA: 82683763680.28.3F40801 Received: from mail-qv1-f44.google.com (mail-qv1-f44.google.com [209.85.219.44]) by imf20.hostedemail.com (Postfix) with ESMTP id 164341C001E for ; Thu, 17 Oct 2024 17:22:28 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=Kh0OkEz+; dmarc=pass (policy=none) header.from=cmpxchg.org; spf=pass (imf20.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.219.44 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729185713; a=rsa-sha256; cv=none; b=yJ17q4gbX6/GuRa/+vMp3x5Ec3LoynNR2Sak0Rai9rcEQo//eVsSzFsa7jbTsiovExIOMy 1Xj+tRtc6aFwKE02wG26m6GZC5fgknGkcAr6eR6gOlXLMRHbo9Zs2DnpinzhOYZj9hdCZ9 4pA+dfKllxi1auj4yvnEmNJ8Tr4tOVw= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=Kh0OkEz+; dmarc=pass (policy=none) header.from=cmpxchg.org; spf=pass (imf20.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.219.44 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1729185713; 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=bc94PXKTprK1Ibjok2UffvvJfluU5XAoP6z0IjVe7TQ=; b=A8lqSR7ryjHAT9Xq3LQJOR/Bb6lVnD2hDX12B63O1FklaNysV65daj79qSx4A0OBpigtrE CiRdUfdUuycw3+EmZYIILg0H5UfLQBEYJ53KAelmN+fnnmyAwTPisfs9GsI2Vx/6gZWY9B SKCDPAPXJOVYrTpTskqzyxyozolFMZg= Received: by mail-qv1-f44.google.com with SMTP id 6a1803df08f44-6cbe700dcc3so7600386d6.3 for ; Thu, 17 Oct 2024 10:22:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg-org.20230601.gappssmtp.com; s=20230601; t=1729185760; x=1729790560; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=bc94PXKTprK1Ibjok2UffvvJfluU5XAoP6z0IjVe7TQ=; b=Kh0OkEz+aWS7VB9dSPmYjt72raMUUovOWz45LHraZrcFZALImDIBySo7Oxrjow3kWK 0c4EI6J8KZ9FTSAnzkts3zCgNuP9MirEam/QgnxU1DGAnNXODAL2OpfuwCzPqJ2ZHYLl N62EspfyDZk6a1jy9IaOdEYjC1hMeOWnTfgarmXY0si3mn51pUXxD3vBJzVOnKpLtXpn 7aj9SvfJAujubnPAJMO7CDsN7qtONu6Z8tR2aQlFXEV7BNLFhYMi0lV0BowK1SnF62A3 LQcNlPtruhJDAU9b/Ri0MzWOmVUCuFEZodwD++C1JppYqALhiYH7rqcQd/LdJUeQRFp7 HgRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729185760; x=1729790560; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=bc94PXKTprK1Ibjok2UffvvJfluU5XAoP6z0IjVe7TQ=; b=W5awAOqqrHbVwJK+7RioaGuXqHk25QjV9bBX5HoK7KXcsusYbw4o1gmmG4A3u/aDso hpdJGKjjzp7xB7FpUZ3EATSH0p1g5gHWICp048+Gk7qFTLbxZJowtn4+TtmYGGDw+yOs CVfCVG6yj92TjqiblkjWwqaC7egYHo7Vy9ywcBTHwJq9I5FkSvcs9K2ZjJAVZD1cG6Js uQDzmkeuobMUbg/ev0ej3uotaqrEbF+f9UMU2/igTzLdHeCtQHdlEFjgErTMOQWNaaKL lnPWwo18ClIBL4DZBVz4FZemiFehDpz6VjkNcXAlptWWbL/z/fNM62au0UofmHtu4EST bxCA== X-Forwarded-Encrypted: i=1; AJvYcCX20rC+hxeE/1WzZLwT8LlMeJorJ7A99aIMfPL0rqHP7TqagRDbgLRTOmto5tzjoBnTBP3qPwyT4g==@kvack.org X-Gm-Message-State: AOJu0YzymUZ3Xk3lYEWGE6hXXlRPf9cXp/GzU2wkebqLGC7o6rsy/CzY UdJLXdtM0hgssyryj4gvIfDn970pCN7d3e13/5SBqvMqxACpQpIhBAnf3o2J/ro= X-Google-Smtp-Source: AGHT+IFsk5iRNjPCE/WMT8wZfByEs5RcZYFnjCGbQAfcreEexDdRQgoS8t0ouw8Qcytwod/CedVKRg== X-Received: by 2002:a0c:e84f:0:b0:6cc:2c76:d2e4 with SMTP id 6a1803df08f44-6cc2c76d316mr76715556d6.53.1729185760126; Thu, 17 Oct 2024 10:22:40 -0700 (PDT) Received: from localhost ([2603:7000:c01:2716:da5e:d3ff:fee7:26e7]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6cc229714d0sm29815186d6.131.2024.10.17.10.22.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Oct 2024 10:22:39 -0700 (PDT) Date: Thu, 17 Oct 2024 13:22:34 -0400 From: Johannes Weiner To: Joshua Hahn Cc: nphamcs@gmail.com, mhocko@kernel.org, roman.gushchin@linux.dev, shakeel.butt@linux.dev, muchun.song@linux.dev, akpm@linux-foundation.org, cgroups@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, lnyng@meta.com Subject: Re: [PATCH 1/1] memcg/hugetlb: Adding hugeTLB counters to memory controller Message-ID: <20241017172234.GA71939@cmpxchg.org> References: <20241017160438.3893293-1-joshua.hahnjy@gmail.com> <20241017160438.3893293-2-joshua.hahnjy@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20241017160438.3893293-2-joshua.hahnjy@gmail.com> X-Rspam-User: X-Rspamd-Queue-Id: 164341C001E X-Rspamd-Server: rspam01 X-Stat-Signature: misxqsbjk3xx7ob4ii7hb7uzrgqcwx78 X-HE-Tag: 1729185748-296673 X-HE-Meta: U2FsdGVkX1/Cny4HLr1XivVymTM8DSqykHBPRYTK+aAufr23GLUhANB0ev8DPhNqZPrKJ03WSNPN66iJmlmVoGUeXrOQIhRx50gl/7WXsbT7qK9vckdE4prTke/xyICpqT81Ku7c8J3XaAMV4BfXk8rFD5s6sy9Rb08ROVpOHZCGbUMYXE+k4AGWDWBSeEBkPrZEz6qJvWhC3vCPugtr+OgzBt7NO+nrKTKi0s3nQ8BZiO4X/piAX+zmHqho3GOu5elBtGyZzBFJrHIoELObJlMQjSlUnmuMpIVjRlKapMhsjoGlMfzFjNXaV+nBWF+aKTo0Zc6UTHTdOVOKp58gUcpJ43ZRZMUjNA6LhWGoapiuv2tnj6RyTlVqE2JxxOUPn8rcC6lbPlzmDojhvYPOrNrJ4SKa9tbHlXtLZpWgkEotdG6DmhmuqtLnyxsdq1NDTWirpY3vWo0w3wvGXGvECpjlR1FPC6psqgMewXuabsboIFUBq52jR+dpnSi6F0jL98CZ8njTUXfINqsPSxy2ZF5rkgz8dvSx4TEd3V/vfXQeLiyXyGR9IN43BF8Ig7Jf0PhDuo8iKbqbGK7KeSAtBqdmZDy3TtemBmau16BUGYlbSoxBuXiEFxl85bthC9+NhS/vo3jjwY393KD5O3YTHW9+z3Xyqn4c8CMphEDRP/E6DCk8yr0JILATUexHZG6nmh5POVn/SDAls4krwzt81g8VzBvT2E/JULUKyHtnr7bMzfXJ7P75dn9bV5zO/plH30J7aflcEIk8y5QWAzb+oZ9WkCjHGKnPwEHHSGJO3ocdIyJqoOXZavQOHiWKYZACIWt294O89YBoQKV41VDgHnDmn/UEV9bpeN9DemdHGmcT0Pw/PfjNVJ00IevNp0qx7lOIF258Z4FzxdDrNLZ/r/avX3dhG57xYv7aGUwK6r3YwVOVK7SUPa3xyyCmsSYisUsY/cW9mQK3XGf9HEm 1Ofu9UOT E36E9FuReKY/9e//4BgSuhRqn2qcW/0i6rdGoL6QfY7d0t/S6k7q325mrv7U0ALueiSfFDgueigYzOAENJXTYh0rnRBqDvNXPjBB02L/gWwGa6p6ZuL5pgo1G5Y42lTUr5K2874awX0G9QueYoGqN1lLmpONOFnHwOKBof7KTKTsA4YFfLJtLD+W8uw/GSYxc6SDr+gSH7JrR2XxBYehno9az0MuT31kpRPot68CJHi8XeUShGlJcOych/kks31uueQTXAdjNR6EynpDUpuru7tr7Q3Xi7/dIjqkq1hizA5A2STeTTW5oUT765fKfb8u/Y5aAK3SLQ7FBcnrWQMOMCOzaILSsHMHxZHviOhhcbgBtSt5+qUQ9QpS7V7X+xyBAvyDJH+MT7H4A2RoHcef/JaPUm/5m0XNKivttyQOt7jYeQKMTxwdgmxDJok/KzeIpwgpwgyY3I1IoI0ul9PtrfRg3IOIlZQKYN0lnjV82tm0KKVU9GwkTbFEQiB0ReOeoISnZ9M0kUB8zPz4Jbq2M7drJBR3jVyrNlzvgNsefHxQ4y0g= 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 Thu, Oct 17, 2024 at 09:04:38AM -0700, Joshua Hahn wrote: > HugeTLB is added as a metric in memcg_stat_item, and is updated in the > alloc and free methods for hugeTLB, after (un)charging has already been > committed. Changes are batched and updated / flushed like the rest of > the memcg stats, which makes additional overhead by the infrequent > hugetlb allocs / frees minimal. > > Signed-off-by: Joshua Hahn > --- > include/linux/memcontrol.h | 3 +++ > mm/hugetlb.c | 5 +++++ > mm/memcontrol.c | 6 ++++++ > 3 files changed, 14 insertions(+) > > diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h > index 34d2da05f2f1..66e925ae499a 100644 > --- a/include/linux/memcontrol.h > +++ b/include/linux/memcontrol.h > @@ -39,6 +39,9 @@ enum memcg_stat_item { > MEMCG_KMEM, > MEMCG_ZSWAP_B, > MEMCG_ZSWAPPED, > +#ifdef CONFIG_HUGETLB_PAGE > + MEMCG_HUGETLB, > +#endif > MEMCG_NR_STAT, > }; It would be better to add a native vmstat counter for this, as there is no strong reason to make this memcg specific. This would also make it NUMA-node-aware. IOW, add a new item to enum node_stat_item (plus the string in vmstat.c and memcontrol.c). > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > index 190fa05635f4..ca7151096712 100644 > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -1887,6 +1887,7 @@ void free_huge_folio(struct folio *folio) > struct hstate *h = folio_hstate(folio); > int nid = folio_nid(folio); > struct hugepage_subpool *spool = hugetlb_folio_subpool(folio); > + struct mem_cgroup *memcg = get_mem_cgroup_from_current(); > bool restore_reserve; > unsigned long flags; > > @@ -1926,6 +1927,8 @@ void free_huge_folio(struct folio *folio) > hugetlb_cgroup_uncharge_folio_rsvd(hstate_index(h), > pages_per_huge_page(h), folio); > mem_cgroup_uncharge(folio); > + mod_memcg_state(memcg, MEMCG_HUGETLB, -pages_per_huge_page(h)); > + mem_cgroup_put(memcg); > if (restore_reserve) > h->resv_huge_pages++; This goes wrong if the folio is freed by somebody other than the owning cgroup. For example if the task moved between cgroups after the memory was charged. It's better to use the folio->memcg linkage that was established by the allocation path. Use lruvec_stat_mod_folio(), it will handle all of this. > @@ -3093,6 +3096,8 @@ struct folio *alloc_hugetlb_folio(struct vm_area_struct *vma, > > if (!memcg_charge_ret) > mem_cgroup_commit_charge(folio, memcg); > + > + mod_memcg_state(memcg, MEMCG_HUGETLB, nr_pages); And here as well.