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 8DB70C27C76 for ; Wed, 25 Jan 2023 08:04:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 13F8C6B007D; Wed, 25 Jan 2023 03:04:22 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0F0006B007E; Wed, 25 Jan 2023 03:04:22 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EFA2D6B0082; Wed, 25 Jan 2023 03:04:21 -0500 (EST) 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 E11DC6B007D for ; Wed, 25 Jan 2023 03:04:21 -0500 (EST) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id AAD5F160C43 for ; Wed, 25 Jan 2023 08:04:21 +0000 (UTC) X-FDA: 80392583922.26.1D45DAF Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by imf28.hostedemail.com (Postfix) with ESMTP id BDABBC0009 for ; Wed, 25 Jan 2023 08:04:18 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=suse.com header.s=susede1 header.b=DlzVb5eU; spf=pass (imf28.hostedemail.com: domain of mhocko@suse.com designates 195.135.220.29 as permitted sender) smtp.mailfrom=mhocko@suse.com; dmarc=pass (policy=quarantine) header.from=suse.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674633859; 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=w2zAQ050thACMQf74nb0AbuOfBM8Mh5wKq9lwzEQNQw=; b=Y9JxLM3t/Y/r9PPh2KTh84dWqGvgkyhPWG53DOMLCXDb7mfr4v/8lb6/7bvcDGMGeCSOnr Qid2Z7az9wA1RcQB5p6pnq74DFrQO4TriLKkAmoaAXUqF/SCE96Q0KiwPolfZSjlEKjaTL sClD4reIzQDO3IpsobAlfIed+VheK2c= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=suse.com header.s=susede1 header.b=DlzVb5eU; spf=pass (imf28.hostedemail.com: domain of mhocko@suse.com designates 195.135.220.29 as permitted sender) smtp.mailfrom=mhocko@suse.com; dmarc=pass (policy=quarantine) header.from=suse.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674633859; a=rsa-sha256; cv=none; b=2CCK3pYV0rAl4fr/uGcKA+MVQV46nqW5HXh3f2IgVT1dta8RPADlX2t8ZUDwqnK8Y0S3Vh k18TS8g1E1/tzoaanDS3k9ymtRoXkWZ5xT992rkJnzqNgzUDXpQJhM2v5yB/8zpX8uGLxn vepd5NXb5BSEjaWyHgqzL6PIhsyQ2E0= Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 1F0F21FEC6; Wed, 25 Jan 2023 08:04:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1674633857; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=w2zAQ050thACMQf74nb0AbuOfBM8Mh5wKq9lwzEQNQw=; b=DlzVb5eUU8M4wLQzumk5AyLWTYfdboA/monTb0IeANtflQLNGnZ2obikPjkEhcGzpxGvSm yZBszOmsbJbQlelQMdM3pyF4nXZunqQPczHfum5kXe7DUE3q2Bt2ppWiDwD5etOset4Uu2 1EA4TfxnNz6dVqXfIx8NrFR2tCIOczo= Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id F34641358F; Wed, 25 Jan 2023 08:04:16 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id BatMOYDi0GNiawAAMHmgww (envelope-from ); Wed, 25 Jan 2023 08:04:16 +0000 Date: Wed, 25 Jan 2023 09:04:16 +0100 From: Michal Hocko To: Minchan Kim Cc: Andrew Morton , Suren Baghdasaryan , Matthew Wilcox , linux-mm , LKML Subject: Re: [PATCH v2] mm/madvise: add vmstat statistics for madvise_[cold|pageout] Message-ID: References: <20230125005457.4139289-1-minchan@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230125005457.4139289-1-minchan@kernel.org> X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: BDABBC0009 X-Rspam-User: X-Stat-Signature: jnsunr4c87eqx48f5ye7rad7wx11zneg X-HE-Tag: 1674633858-162080 X-HE-Meta: U2FsdGVkX18D2M4160BoH0iNLr7WyEVQPf/R/bdnCpY9Srem4LipJIHyAvmqZ4QLHDvUPN89ioirVJamWYeai8K0X4drtQuD/CA6/GmRTOaX+6sz+ZUOI3RAbsGMn6JAb0BhpRgMSLmX4Wm0Aj2LfrGfO/MAtIjCM/3v6CSYOjEeRFD6oscrKtMulmqLCPNOh6sPhAaQVERQz68xHHImEKkuu8rtZk0AhUxlpvvGWUjfRxyoarpw1+yOLS2g7++2q77rvX+4kpxJ/32jKg2ia913OKCG5K6W2gCXREy2FGdk0MEV/QtnZFNn5QjEeZF7tVC1GzX41GqRLR2TQHrs/Aw4lsuqqnDYlxY1nlotMN9Uvd5vBKE+6G+ulihP0OaaHthMd3pzYVtjw1bmON2Twb7+uMKqj5w3SrZ0E/4X/fELbMGQIoUAU07NwDWWuuOT0sher4wbNqZZPIYQsxP/TXktyVdnTeLac9EKoBOkVx4D3Ufz9tTb/ItiB8zPn9TaiAK8Mx+s1GJC8hTA7hMK3A/CAWSG3jT2ohpAJfYpXPEc7zsU5Y3GCVERg1V8aYRoCljcL96jRplyqtnYkjQmVksuNdMEcfRTq5jHzk5TFTs/iF3o266jRmZ/CH+QU7DWTjZ5SoUORy3R4yOSgo6GokBz1vqkzjDO8mAZF88jXlQGyAK6Cs5vgf2TX4z8An7FN+65GLQPgXxUePHzC1qZh6BYlnOinydaQ5baoMjbs19C2f9A26eqGHci8ZfF9DwHZKdRtYdhWzJykEi/UXgPqk+FFHwygIcfrabUiX1wmQWbKFCK1IgN0a81Vj+zAR0697S3TEfpYg63uCgK6DyTylu6qlOAAA+sGIYh93EWUgxHMCX0W3eq2UH/LqxTDDITEUNK37jnx4FxZVymWLJHKVqQHsMHDofonmxO3mqpw73aaWZlhkpBlvTAS9nN/Prf6jXi9U9EDI+wxM/CtVW 6B5O+JQl m3mzJXwUMzkXis18qp3gy3xgj5RTQKaPTMMmKJnysx+Wy0iMF2GhWoI3mOQlmD+8mYkhj7fhmtd3czREFbOvpuJJamD1mFAEwo2llwPuJ7JUGmZP8crEAptv1zj1fqWE/xtuDyU9O4ghGmMtadNPSDMMNhh3++fGLRFOk/7xpmzZMa9bso3cBVEUlBHEtAiVX3uNh+Izg8PNPnT34eBWN5ZJhyQMi7AfVthQoVmCulI2S+TRWck0R/XMbbxSPbfaKm3tdfe/TLAMiNTw= 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 24-01-23 16:54:57, Minchan Kim wrote: > madvise LRU manipulation APIs need to scan address ranges to find > present pages at page table and provides advice hints for them. > > Likewise pg[scan/steal] count on vmstat, madvise_pg[scanned/hinted] > shows the proactive reclaim efficiency so this patch adds those > two statistics in vmstat. > > madvise_pgscanned, madvise_pghinted > > Since proactive reclaim using process_madvise(2) as userland > memory policy is popular(e.g,. Android ActivityManagerService), > those stats are helpful to know how efficiently the policy works > well. The usecase description is still too vague. What are those values useful for? Is there anything actionable based on those numbers? How do you deal with multiple parties using madvise resp. process_madvise so that their stats are combined? In the previous version I have also pointed out that this might be easily achieved by tracepoints. Your counterargument was a convenience in a large scale monitoring without going much into details. Presumably this is because your fleet based monitoring already collects /proc/vmstat while tracepoints based monitoring would require additional changes. This alone is rather weak argument to be honest because deploying tracepoints monitoring is quite trivial and can be done outside of the said memory reclaim agent. > Signed-off-by: Minchan Kim > --- > > * From v1 - https://lore.kernel.org/linux-mm/20230117231632.2734737-1-minchan@kernel.org/ > * not relying on the pageout for accounting - mhocko > * drop unnecessary changes - mhocko > > include/linux/vm_event_item.h | 2 ++ > mm/madvise.c | 8 ++++++++ > mm/vmstat.c | 2 ++ > 3 files changed, 12 insertions(+) > > diff --git a/include/linux/vm_event_item.h b/include/linux/vm_event_item.h > index 7f5d1caf5890..3c117858946d 100644 > --- a/include/linux/vm_event_item.h > +++ b/include/linux/vm_event_item.h > @@ -52,6 +52,8 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT, > PGSCAN_FILE, > PGSTEAL_ANON, > PGSTEAL_FILE, > + MADVISE_PGSCANNED, > + MADVISE_PGHINTED, > #ifdef CONFIG_NUMA > PGSCAN_ZONE_RECLAIM_FAILED, > #endif > diff --git a/mm/madvise.c b/mm/madvise.c > index 7db6622f8293..d2624e77f729 100644 > --- a/mm/madvise.c > +++ b/mm/madvise.c > @@ -344,6 +344,8 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd, > spinlock_t *ptl; > struct folio *folio = NULL; > LIST_HEAD(folio_list); > + unsigned int nr_scanned = 0; > + unsigned int nr_hinted = 0; > bool pageout_anon_only_filter; > > if (fatal_signal_pending(current)) > @@ -357,6 +359,7 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd, > pmd_t orig_pmd; > unsigned long next = pmd_addr_end(addr, end); > > + nr_scanned += HPAGE_PMD_NR; > tlb_change_page_size(tlb, HPAGE_PMD_SIZE); > ptl = pmd_trans_huge_lock(pmd, vma); > if (!ptl) > @@ -414,6 +417,7 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd, > } > } else > folio_deactivate(folio); > + nr_hinted += HPAGE_PMD_NR; > huge_unlock: > spin_unlock(ptl); > if (pageout) > @@ -431,6 +435,7 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd, > arch_enter_lazy_mmu_mode(); > for (; addr < end; pte++, addr += PAGE_SIZE) { > ptent = *pte; > + nr_scanned++; > > if (pte_none(ptent)) > continue; > @@ -508,6 +513,7 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd, > } > } else > folio_deactivate(folio); > + nr_hinted++; > } > > arch_leave_lazy_mmu_mode(); > @@ -515,6 +521,8 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd, > if (pageout) > reclaim_pages(&folio_list); > cond_resched(); > + count_vm_events(MADVISE_PGSCANNED, nr_scanned); > + count_vm_events(MADVISE_PGHINTED, nr_hinted); > > return 0; > } > diff --git a/mm/vmstat.c b/mm/vmstat.c > index 1ea6a5ce1c41..84acc90820e1 100644 > --- a/mm/vmstat.c > +++ b/mm/vmstat.c > @@ -1283,6 +1283,8 @@ const char * const vmstat_text[] = { > "pgscan_file", > "pgsteal_anon", > "pgsteal_file", > + "madvise_pgscanned", > + "madvise_pghinted", > > #ifdef CONFIG_NUMA > "zone_reclaim_failed", > -- > 2.39.1.405.gd4c25cc71f-goog -- Michal Hocko SUSE Labs