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 13FF7C4345F for ; Mon, 29 Apr 2024 17:35:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 690236B0085; Mon, 29 Apr 2024 13:35:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 640776B0087; Mon, 29 Apr 2024 13:35:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 508146B0088; Mon, 29 Apr 2024 13:35:54 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 346046B0085 for ; Mon, 29 Apr 2024 13:35:54 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 8032E1201D2 for ; Mon, 29 Apr 2024 17:35:53 +0000 (UTC) X-FDA: 82063272186.09.86867BB Received: from mail-yb1-f181.google.com (mail-yb1-f181.google.com [209.85.219.181]) by imf08.hostedemail.com (Postfix) with ESMTP id A3A9A160024 for ; Mon, 29 Apr 2024 17:35:51 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=3+Ve74Bd; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf08.hostedemail.com: domain of tjmercier@google.com designates 209.85.219.181 as permitted sender) smtp.mailfrom=tjmercier@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1714412151; 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=e7wVsqLptnLKS5hiDCshs3Dr+pCekMHSh0FCkw4ggDQ=; b=7Q7flOjNDFuSFSrMwaRyo7bEQOXEM6B4J3nkn9Gfb5qjlRqlRRhuvWHIZn75gjO66hDNSO pn5KM5qKLG+lj5yNlcNTy5hyZwP/r3csYNiV/1q0rI53dlMhhy2eEuvrZyx/3PaW2w4kRl gV/9eiGjBWFaiZm+/9O/7j0wy1qJjks= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1714412151; a=rsa-sha256; cv=none; b=sJgqwBhP4MeUdGR0g4RYcitnfLgqh+ULqYizzSkouF3XjVDMio5MVNsSua9vr2lyuSeFI/ 1YlPj2cnmQ/DLzjDz8MUHrScuL7DsI58qQ0Z0zB3WR3iSoPPtXRsZSwNFv63jee7vdSfMH kf0F8TZQ238jCbxZe81KYSwkFdl9T/k= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=3+Ve74Bd; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf08.hostedemail.com: domain of tjmercier@google.com designates 209.85.219.181 as permitted sender) smtp.mailfrom=tjmercier@google.com Received: by mail-yb1-f181.google.com with SMTP id 3f1490d57ef6-de60380c04aso779803276.2 for ; Mon, 29 Apr 2024 10:35:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1714412151; x=1715016951; 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=e7wVsqLptnLKS5hiDCshs3Dr+pCekMHSh0FCkw4ggDQ=; b=3+Ve74BdtXKWDcvb1jkDuYgUBB/40u+0Iyv9mdz7wI8kv8CgXHZVwH/u7yn67Q/3Q4 ptmbMsb5denfPmLDj94SsJfB4GfNENncgVEi8JDqCzdCsQBJbUcAzgpZoh44JNI6UFkM UkQ3Yjg0XNWIZvnfS1tf7pqqHFIROHooVsUNqnPfpEQN8FaWMUXxkechv5lC2/1J/Pdp 96vlZPEpLGkFlmTFstiwAxcpqo7f+wuCu9HiYDuTBqn+bhOeFcXdCo00MzqJArJI85Cu Ge5Wk0nD9bpuHYoDH/+vN/5u5rbXginGjSGZZNk7XBDursb/nRHgaXwhkiqA31B4LaBQ S8MQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714412151; x=1715016951; 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=e7wVsqLptnLKS5hiDCshs3Dr+pCekMHSh0FCkw4ggDQ=; b=filsKJT9As39FY0QyeUGRdxW6wXQoUPYVRVj5Z4aQXgXrp0SjNZvfm/hgSuwAy1f0Y vydBrvmLmMSCbk8iCr0duy8wpE4Ph1Jxhzi5FCU/rjc14CRUOSQHFGFgtderwJglmRjt foVjuMAF1DfaDKRW3WzjhWdubzJ23o3VvHS/+PVa4ZH0T4jCTu/Ki/T0bg971ftjSy90 qiFxV/2MZj0tKu0edHUIYuwUHv8cIjBtZBSavrKwwuyQzDBRBRnLO3BwvYTUOaCh4Qi1 60KxMM7+Yk+zAbQzKcFyrks7+QcUd1/CHzw3Kud/1oTeO6RoHLw8l1PlOuYuIaef6W9M UG5A== X-Forwarded-Encrypted: i=1; AJvYcCWPqRy/N1hccKWvSk6IGqbk/N3/whP3jIW9VcwxbiSJjfH2oxbFEoY3n5nsksO+C3bWgLU6CYnpJkgoetgzJCQvFyU= X-Gm-Message-State: AOJu0Yz5xXMu7gNpSMKyk2csUJfvu9osWJQkNrRv8gsnRni2NJ6J9Z56 p7f08EyQw2ERMt/vWnz6ESSh0xaRbaQFZwCaAhxEz2bF+jaNyAct/SI3+BXOwAjfC4Tiog44MTu 8meno9/MwIQr2LTX24QV7a3B26eZQuOlw23// X-Google-Smtp-Source: AGHT+IGze69SzvgF+laQKVNenGfnhfSWQBgrc5CamDWJtv+XCFQ6jEAcsZk7GmgDzGBWxcDr4R7RpmZIhxez25z/hY4= X-Received: by 2002:a25:5:0:b0:de5:588e:40c8 with SMTP id 5-20020a250005000000b00de5588e40c8mr11793575yba.56.1714412150470; Mon, 29 Apr 2024 10:35:50 -0700 (PDT) MIME-Version: 1.0 References: <20240427003733.3898961-1-shakeel.butt@linux.dev> <20240427003733.3898961-4-shakeel.butt@linux.dev> In-Reply-To: <20240427003733.3898961-4-shakeel.butt@linux.dev> From: "T.J. Mercier" Date: Mon, 29 Apr 2024 10:35:38 -0700 Message-ID: Subject: Re: [PATCH v2 3/7] memcg: reduce memory for the lruvec and memcg stats To: Shakeel Butt Cc: Andrew Morton , Johannes Weiner , Michal Hocko , Roman Gushchin , Muchun Song , linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: A3A9A160024 X-Rspam-User: X-Rspamd-Server: rspam03 X-Stat-Signature: oz4a5dmk4yruzaf9df3zo6rsks7kb34h X-HE-Tag: 1714412151-798350 X-HE-Meta: U2FsdGVkX18CQVKheDtyycPkFAzw0U1R2tGgicAUiNiyaGWJlq1uru4aJB1qxnw+DExnQGCpaLlKX2xtipOykOWARFcdF0KlvTQnADRPvvr07oqjxQiG+Kz1+voTYZo4q+L6Em0vNHSJ3CdXKsK3LPSeRslxvabo7mEa4dhu++gChmxnmdddp3l4g2JhRJSLHeO2Y6w/pGc8gYBpW/o1isJip2v9yOvxiL39LYMWS6eQyndbhp+Mq7o1aqe7qoYiOD9PAsmVgGk8ytyW8nk/STUEuqtue5E1o4L3+uWdcgkQLK1STXSKxWySiw2Ea16UkR+6AjJZ7kMX9HDhR0Y0TXf1pFfxmGV9WZt8Jke92H9rRPhV4PZ+zXoUQ8dG5sQStyPRW/fu9UBQq1wq6d8OiUlG8aGp4M909ZiGepTIPXDOoQbPXtTvc3JYL/E6CGwWlZ4m/7mlQ7I41sj6uY6v8azAQPRsBPdLhkwFHj/XCePSDiNCaw3nOOJ5c/gsLHo6D15taV4ChjWgm4QiGHq/M8mbyRqExv7TqI1WNSbl3AsdbF5h+Mswr6m744Q5UJI9WOYtYk6qQ0T3hJEEMMe4dBp8a7srIvLQq6T0dS975ntcVEcRtL0fPzUewEoUw7VybrSSC1fds3kl3hIxWx/PNIJzUPZ83crkLseO29Lwxl9VGe6ARH3REWHrusOhsyt1SuckzvLS7T9dHAhSxM1VnxHyIjMXa/GEztJagiBWmoBtBKOmLlEeDEyXJHBL/AdjLIUQEe8GBvM3DF3QE6uFgBrKF7nghSw1RX2arf+ofV1diW5Zut2K9pDen0sAjnr4CGtnr5EioU45+P0BfyKlkhL6Ws1+eayZjc2PYzOrAWnQVbj//PgNV73T9d2orNi19TBS3u2CwHuKyoWtU4yWjgUXSglbjmrLDPGRm1A0OunQtR6ZaN4S5rRwmcBbDQSAr94BUPdPGCWNXiuRqqj 9RXOkr0w WQydZQLW0qCzQXAl34/rN4LplVdx+JoAI8eLa9xbk95LRs6LT2tdZsQww25X/nKTTsXW75oWOVX9LxJ9Mspc9s8kl/1bAuojLEN1Sg0coksJQmDEXBORXUjb3MHxbkQaCOO0G6FBdT13ZDbQcOW+iZO+eYS7GKWOF7HesflQlxVq7z3ArzWrQHfEaiyVX8sPFaBeQZgRjj8hkh7ihbTI3DxCxYPj3NF+hq0Vp X-Bogosity: Ham, tests=bogofilter, spamicity=0.000004, 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 Fri, Apr 26, 2024 at 5:37=E2=80=AFPM Shakeel Butt wrote: > > At the moment, the amount of memory allocated for stats related structs > in the mem_cgroup corresponds to the size of enum node_stat_item. > However not all fields in enum node_stat_item has corresponding memcg > stats. So, let's use indirection mechanism similar to the one used for > memcg vmstats management. > > For a given x86_64 config, the size of stats with and without patch is: > > structs size in bytes w/o with > > struct lruvec_stats 1128 648 > struct lruvec_stats_percpu 752 432 > struct memcg_vmstats 1832 1352 > struct memcg_vmstats_percpu 1280 960 > > The memory savings is further compounded by the fact that these structs > are allocated for each cpu and for each node. To be precise, for each > memcg the memory saved would be: > > Memory saved =3D ((21 * 3 * NR_NODES) + (21 * 2 * NR_NODS * NR_CPUS) + > (21 * 3) + (21 * 2 * NR_CPUS)) * sizeof(long) > > Where 21 is the number of fields eliminated. > > Signed-off-by: Shakeel Butt > --- > mm/memcontrol.c | 138 ++++++++++++++++++++++++++++++++++++++++-------- > 1 file changed, 115 insertions(+), 23 deletions(-) > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index 5e337ed6c6bf..c164bc9b8ed6 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -576,35 +576,105 @@ mem_cgroup_largest_soft_limit_node(struct mem_cgro= up_tree_per_node *mctz) > return mz; > } > > +/* Subset of node_stat_item for memcg stats */ > +static const unsigned int memcg_node_stat_items[] =3D { > + NR_INACTIVE_ANON, > + NR_ACTIVE_ANON, > + NR_INACTIVE_FILE, > + NR_ACTIVE_FILE, > + NR_UNEVICTABLE, > + NR_SLAB_RECLAIMABLE_B, > + NR_SLAB_UNRECLAIMABLE_B, > + WORKINGSET_REFAULT_ANON, > + WORKINGSET_REFAULT_FILE, > + WORKINGSET_ACTIVATE_ANON, > + WORKINGSET_ACTIVATE_FILE, > + WORKINGSET_RESTORE_ANON, > + WORKINGSET_RESTORE_FILE, > + WORKINGSET_NODERECLAIM, > + NR_ANON_MAPPED, > + NR_FILE_MAPPED, > + NR_FILE_PAGES, > + NR_FILE_DIRTY, > + NR_WRITEBACK, > + NR_SHMEM, > + NR_SHMEM_THPS, > + NR_FILE_THPS, > + NR_ANON_THPS, > + NR_KERNEL_STACK_KB, > + NR_PAGETABLE, > + NR_SECONDARY_PAGETABLE, > +#ifdef CONFIG_SWAP > + NR_SWAPCACHE, > +#endif > +}; > + > +static const unsigned int memcg_stat_items[] =3D { > + MEMCG_SWAP, > + MEMCG_SOCK, > + MEMCG_PERCPU_B, > + MEMCG_VMALLOC, > + MEMCG_KMEM, > + MEMCG_ZSWAP_B, > + MEMCG_ZSWAPPED, > +}; Unsigned for these? All the values are positive now, but I don't think we'll get a build warning if a negative one ever got added, just a crash or corruption. BUG_ON in init_memcg_stats if a memcg_stat_items[i] < 0?