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 D044CEB64DE for ; Tue, 10 Sep 2024 05:28:31 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D12888D0018; Tue, 10 Sep 2024 01:28:30 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CC0B88D0002; Tue, 10 Sep 2024 01:28:30 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B88158D0018; Tue, 10 Sep 2024 01:28:30 -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 959308D0002 for ; Tue, 10 Sep 2024 01:28:30 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 164F31C5BA2 for ; Tue, 10 Sep 2024 05:28:30 +0000 (UTC) X-FDA: 82547698380.26.7E27C14 Received: from mail-pg1-f175.google.com (mail-pg1-f175.google.com [209.85.215.175]) by imf23.hostedemail.com (Postfix) with ESMTP id 4380314000D for ; Tue, 10 Sep 2024 05:28:28 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=lWH2YhSf; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf23.hostedemail.com: domain of jingxiangzeng.cas@gmail.com designates 209.85.215.175 as permitted sender) smtp.mailfrom=jingxiangzeng.cas@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725946104; a=rsa-sha256; cv=none; b=pCxY0tzKv5YvMxSV8I9ALBa3TSDfYS6IkXmGRQZfhJt1JKNuDUxLDWUj77OW0hgNNlCsNj U2Tuv3x6ALff/3LLtA0RoTPaT1jLFnxAp+7ZSCwsoKTRaZ2GzVWw8RjiCiCn8qQvAK3LMK Rg7zkZgngqvmr+vhG87H0n7NniEdYj8= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=lWH2YhSf; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf23.hostedemail.com: domain of jingxiangzeng.cas@gmail.com designates 209.85.215.175 as permitted sender) smtp.mailfrom=jingxiangzeng.cas@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1725946104; 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=ZYE1wOTrhsQmso9EDO49bYQfX0h+ApJkIr4QBsuXRhs=; b=xJQHw+4/1KvvkDxqMiJeQRUgZtr2U45Ya5CGJsZHyMe77Uy0c7wXvR020r7kS7Nl71O/9o MQrW3u9LDfDr9abutmP3Hw+x4NQ2a+6YeYHQJZKJ7gx5zMHKN6ES9vYgqZ9KVAfTU+ebeb abHG1bHZvVuxHQ7a6s9uwnGVA1daN7s= Received: by mail-pg1-f175.google.com with SMTP id 41be03b00d2f7-7d4f9e39c55so3506849a12.2 for ; Mon, 09 Sep 2024 22:28:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1725946107; x=1726550907; 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=ZYE1wOTrhsQmso9EDO49bYQfX0h+ApJkIr4QBsuXRhs=; b=lWH2YhSfDUfX7unncrgs90GBqhlWz4qlO8NIdNsx+jthnxCWO2jcq7d3noFdUChG32 00BddQfd6ErJVnRzmrPTv9ehw7jUawe4JBdr6ZIIp9etfHa/wm4sK2rX1hVNBoKsJB3N h3yFWnIfzQxhMgjplotfbJ4Exs5PnbY+9oeqM5rVWe7xGwpJZu3kBHOPjcqLk5exidBS UcnQ+1vanIRrRS99JHNibCFIY4uCLr8g1uBYag+BEWdrikFSFbJ/LWSAJ7h+7aK8Q+hx vINURfjqrO9Ptq7S5GDy23+nKhhZ52lQx0/5yhYy+GJIjvN0RfPP2GD+3YzYRQaPFuac Btzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725946107; x=1726550907; 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=ZYE1wOTrhsQmso9EDO49bYQfX0h+ApJkIr4QBsuXRhs=; b=j9uFpYAdgyQUQhhY1C0NN/pIO7Tx1hqEC+gUYp9eCB3V/78eyPyHZwKaUF3Y3fBkNe Oexo4iVPA8X3UjoNsDWfVHZStVuh4TRBPiWOSajj7uNfZ50dvCBr2eLyix0Q2UzEICyX w3ts0nJ0m7S6HLlA53RPNEp/9RmybUKzw9EWErCzyDsOGAhLxDay5oRmKKRyhMaK/ejR 5Xg6GPDjjcXk4mc4idRh3Q7y74S6bguEJAN8+RfvqVQphL5KG8MTVD81c79HnLgJMcg/ eIrLOc5WR6guMLxgh/S+yHi2l04L95zeOmiM7EVyxueJzt9/EuPh6AxhuW5kzNEdKxPA RZeg== X-Forwarded-Encrypted: i=1; AJvYcCWjOEoDREDrqd2qomHgNCCg8/lkkCGtiPW5puW+MwQSerZfqHHKHXB3oN81D3sJR+Oob52aCPN4Ng==@kvack.org X-Gm-Message-State: AOJu0YwuLExZbNbC/IxSTkPUgnaicUfLGFAXLUCyawIpLgZd/eKfbxo7 LdlPk3lYreoZqd5WAG59jOv1sZqtA5uCCam2lLTEASUGH8b1/WV8HLikAzvVcW3kmfx24rqCo8t aoGlyrKpB6FGQUUwD6GMwi5UJf7E= X-Google-Smtp-Source: AGHT+IHRbCXMg8gaubCG92lOyYR9i+NdeacENJhKZWLfl4jKuGQK/aQEpTjCQOJmLCCCxXeVGddTAIX6sdIEYRGcKG4= X-Received: by 2002:a05:6a20:c99a:b0:1cf:4c1e:8b53 with SMTP id adf61e73a8af0-1cf4c1e8c45mr3702971637.9.1725946106647; Mon, 09 Sep 2024 22:28:26 -0700 (PDT) MIME-Version: 1.0 References: <20240830082244.156923-1-jingxiangzeng.cas@gmail.com> In-Reply-To: From: jingxiang zeng Date: Tue, 10 Sep 2024 13:28:15 +0800 Message-ID: Subject: Re: [PATCH] mm/memcontrol: add per-memcg pgpgin/pswpin counter To: Yosry Ahmed Cc: Jingxiang Zeng , linux-mm@kvack.org, Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Andrew Morton , cgroups@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Stat-Signature: dy4e7qx8xmec5pcycufxg5befwg5m73j X-Rspamd-Queue-Id: 4380314000D X-Rspamd-Server: rspam02 X-HE-Tag: 1725946108-489609 X-HE-Meta: U2FsdGVkX183e3PELKgby63S1smY7r8NuE37W5qpZV6RQWUcXnBFPNa8m72HHqLDmsFJAtqrgFszUGL3tNNVxkVxyk7N/A54s4uTfx68YL8xUoK9aPuV9WUb4m1i8ndTISZWH92LN5xrH/20YeyZT+xz3Cr8DEDDwlUTLmccOKM7yGg9UnWN1hxPLp8tv/PGHr1ZaVLT0X78P/HfJ3NbVly48WXuEKnV8MPAmGtPfLjL8Klwg1sRrt4HxG3rsb8UnxAqLI/N/xho7JNgoWyFDQezXa5xtvy0tbL2xX4GARMnoidugKfVmA2A+onHGED5iKIan+MYaTPlNOdH8YyPMjNqhaVoUUoI0/0QzTFIgQBW7Vo3W7lLL0R9lZocqzEAAfWpruDoWfyxmZsFvByKsANYgoXFymIbfZUlLgFpR7Ukae8X7+vD7ry73FkAxMERs5yaFxNOqS+d0n02aC6YiqyVQlRhxSpJfYCuE5wZxCvDIbLe19FkewBxRSqSZ391Wah60GEfJtKqK6PzhsGuXtrF/nvpToLFxo6QbMqsSQPrHHU+1twEZPwX/JqpWznb7tVO5CoSKYt709/cAWhCbV2xMJBIbypkFBFGEv2+BMDjY9VIA8fcdatmIY2UzROOGQ0xzEqMG1reaLyuieeMQ3RhzseL/LtAaKxBUrdzwhTAAru9Gp15nghYwbxQtfvxh7NwBwO/BxeTA6Nw27IQit75oeS0j5WVYaFOrYOioVUcoX4oua/VWlbqr43fjpthM7HyYBehhAV9Y7nbqJq5RSXgksrE6VFIokH9WSYCYAb77UiKiMKIGJ1lGK3Ot0Ly4Qhy7i3hxN0gi0CfL9KAB5fICype4tpELgsVrbqYijOB12AlvwTOmBlMJ+D2dv3JhzldYYTjw6XsKPiyIfk1+Q6oomoMIq/zkwpHsEcGUaryBmNQNTBxZ/mzvAQCe9WFmxw5IkrI0TDpogcAHyi RI1lGtro yNjQWeOXzHzogPZkbrsTSIswdEq5S08OJ39Fs94D90y18By0dtHP3KfLv0gsKHS4l84CfpyZ7d7C7oKr36nd3u8bdEfQaoqxFuys2dAJ+ckDCAN5/d9EXsdR4KY3g14QDSdDmddYf6DuDJ3N+PW6+Gpus+0IsIdWNuboTV3FC+UTBw0wnk64UGHe/iezHVJs2FfEosi9YILWogMCvl1WjaGggw0huVgXDff2tackrqgfoQNXX9LdmRHXCDuEUcde8UBZa7qOIx/AfjWKPbW3Rm0ByvFiTDZPThHwFI7pL/Cl5xRQjY6eznrfNzPvlRe0uvyKybjfGynNIOXgs4mmQJGmKOV4hFqsC/8PJu4WokSeRfW13Ebuwjw6Kx0lnUDyUo2TRvINJLZ+Cuav/5ykkW15fzOu3mI3LDGPN9Xn+Jj+HOi8= 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 Tue, 10 Sept 2024 at 06:46, Yosry Ahmed wrote: > > On Fri, Aug 30, 2024 at 1:23=E2=80=AFAM Jingxiang Zeng > wrote: > > > > From: Jingxiang Zeng > > > > In proactive memory reclamation scenarios, it is necessary to > > estimate the pswpin and pswpout metrics of the cgroup to > > determine whether to continue reclaiming anonymous pages in > > the current batch. This patch will collect these metrics and > > expose them. > > Could you add more details about the use case? > > By "reclaiming anonymous pages", do you mean using memory.reclaim with > swappiness=3D200? Yes. > > Why not just use PGPGOUT to figure out how many pages were reclaimed? > Do you find a significant amount of file pages getting reclaimed with > swappiness=3D200? > Currently, it's not possible to know the swap out situation of a cgroup, and the PGPGOUT metric, which includes the reclaim count of file pages and anonymous pages, cannot accurately reflect the swap out situation. > > > > Signed-off-by: Jingxiang Zeng > > --- > > mm/memcontrol-v1.c | 2 ++ > > mm/memcontrol.c | 2 ++ > > mm/page_io.c | 4 ++++ > > 3 files changed, 8 insertions(+) > > > > diff --git a/mm/memcontrol-v1.c b/mm/memcontrol-v1.c > > index b37c0d870816..44803cbea38a 100644 > > --- a/mm/memcontrol-v1.c > > +++ b/mm/memcontrol-v1.c > > @@ -2729,6 +2729,8 @@ static const char *const memcg1_stat_names[] =3D = { > > static const unsigned int memcg1_events[] =3D { > > PGPGIN, > > PGPGOUT, > > + PSWPIN, > > + PSWPOUT, > > memory.reclaim is not exposed in cgroup v1, so assuming these are only > used for such proactive reclaim, we don't need to add them here. Your point makes sense. I will remove these fields in the v2 version. > > > PGFAULT, > > PGMAJFAULT, > > }; > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > > index 087a8cb1a6d8..dde3d026f174 100644 > > --- a/mm/memcontrol.c > > +++ b/mm/memcontrol.c > > @@ -418,6 +418,8 @@ static const unsigned int memcg_vm_event_stat[] =3D= { > > PGPGIN, > > PGPGOUT, > > #endif > > + PSWPIN, > > + PSWPOUT, > > PGSCAN_KSWAPD, > > PGSCAN_DIRECT, > > PGSCAN_KHUGEPAGED, > > diff --git a/mm/page_io.c b/mm/page_io.c > > index b6f1519d63b0..4bc77d1c6bfa 100644 > > --- a/mm/page_io.c > > +++ b/mm/page_io.c > > @@ -310,6 +310,7 @@ static inline void count_swpout_vm_event(struct fol= io *folio) > > } > > count_mthp_stat(folio_order(folio), MTHP_STAT_SWPOUT); > > #endif > > + count_memcg_folio_events(folio, PSWPOUT, folio_nr_pages(folio))= ; > > count_vm_events(PSWPOUT, folio_nr_pages(folio)); > > } > > > > @@ -505,6 +506,7 @@ static void sio_read_complete(struct kiocb *iocb, l= ong ret) > > for (p =3D 0; p < sio->pages; p++) { > > struct folio *folio =3D page_folio(sio->bvec[p]= .bv_page); > > > > + count_memcg_folio_events(folio, PSWPIN, folio_n= r_pages(folio)); > > folio_mark_uptodate(folio); > > folio_unlock(folio); > > } > > @@ -588,6 +590,7 @@ static void swap_read_folio_bdev_sync(struct folio = *folio, > > * attempt to access it in the page fault retry time check. > > */ > > get_task_struct(current); > > + count_memcg_folio_events(folio, PSWPIN, folio_nr_pages(folio)); > > count_vm_event(PSWPIN); > > submit_bio_wait(&bio); > > __end_swap_bio_read(&bio); > > @@ -603,6 +606,7 @@ static void swap_read_folio_bdev_async(struct folio= *folio, > > bio->bi_iter.bi_sector =3D swap_folio_sector(folio); > > bio->bi_end_io =3D end_swap_bio_read; > > bio_add_folio_nofail(bio, folio, folio_size(folio), 0); > > + count_memcg_folio_events(folio, PSWPIN, folio_nr_pages(folio)); > > count_vm_event(PSWPIN); > > submit_bio(bio); > > } > > -- > > 2.43.5 > > > > >