From patchwork Wed Jan 25 00:54:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Minchan Kim X-Patchwork-Id: 13114928 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 7C25BC54E94 for ; Wed, 25 Jan 2023 00:55:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 97ABC6B0071; Tue, 24 Jan 2023 19:55:05 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 92ACC6B0072; Tue, 24 Jan 2023 19:55:05 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7F2BC6B0073; Tue, 24 Jan 2023 19:55:05 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 6B8BD6B0071 for ; Tue, 24 Jan 2023 19:55:05 -0500 (EST) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 34B92140D08 for ; Wed, 25 Jan 2023 00:55:05 +0000 (UTC) X-FDA: 80391502170.27.E0C8BD5 Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) by imf20.hostedemail.com (Postfix) with ESMTP id 696D11C0011 for ; Wed, 25 Jan 2023 00:55:02 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b="SztRo/gP"; spf=pass (imf20.hostedemail.com: domain of minchan.kim@gmail.com designates 209.85.216.52 as permitted sender) smtp.mailfrom=minchan.kim@gmail.com; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=kernel.org (policy=none) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674608102; h=from:from:sender: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:references:dkim-signature; bh=QltKSpTGzf0W2SQSXFYMm7GCriu7mCw+n+d5pfVUmzI=; b=T5abwAMV9Llig2YJRPow49gLQ4v3gZXiyY1vNgo28OelBf3LMODoFW/H+9o3jg2dO4TbC6 P+qbNp9ViARYBkPsIh/hWWw6GuTG7ORh3skiB5EWnonDPLrZFPcLiKyLFD5hM0C00Dxrmg Vi265f9E7MCofK0xm4ClfdaVlt21s2U= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b="SztRo/gP"; spf=pass (imf20.hostedemail.com: domain of minchan.kim@gmail.com designates 209.85.216.52 as permitted sender) smtp.mailfrom=minchan.kim@gmail.com; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=kernel.org (policy=none) ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674608102; a=rsa-sha256; cv=none; b=uTNxR2mkl0BwJSuavM5Z2sSKCJv4qrjoVhBYLailOaFMsId93v2+uT1yf8kifZyl3qdQXP BhlvC04fkzjWx0eYzijbejWu8gpl689DsKLCo9LsCONeKWJsmibXQF1LdsKmTUDyDwvvjH iUTxLJJjJDjFcdLPVLOS/VaHOgJmhx8= Received: by mail-pj1-f52.google.com with SMTP id m11so5066018pji.0 for ; Tue, 24 Jan 2023 16:55:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:sender:from:to:cc:subject:date:message-id:reply-to; bh=QltKSpTGzf0W2SQSXFYMm7GCriu7mCw+n+d5pfVUmzI=; b=SztRo/gPi1DtM3PLDVXZHbb6GoWTRcTNOAOWMzjHK3/chfZSoCPdh0W6jNWnJ57BTP Wn12B6epK1ZGv8TrlkTddxdGUYThbooFXWFKI7CAWtIYTz8gS7m2K1bkOi+7L8jtwGWH +efWvGCE0QjbK0vPfkUDwWPvcSTmOdmWOa+SASdTeG+QvveQSMSkU654JPcu0RdIPMMe zn49Gx+gVgIwiXTeKfBnVr9veVFUOEHuj/07R/C/Ufm0nLB1lsxMnTzR+hje+0iZWq+m cjhydTDCT5/68GIm2ebCSo26R6ICjPHskKvQb+mqyrIJWmhQjU4QLavkBXTkpl64Hd/a 2XkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:sender:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=QltKSpTGzf0W2SQSXFYMm7GCriu7mCw+n+d5pfVUmzI=; b=Svr6G5TOvvjEXr7R+AZQ7OllGpMDEd3eP6VOI/NWsKoVp1tNtY0kiQKjb2qSyLt5WV KpdsgrCujG3Rh547kjpedLecG5OaJ0PQ59zFg9xHK8P3S2b0wmycyetVrKXYfZlmP2C1 ApL3lbPUtPgo4yiKfcgQi1bnmMtBO5iiVmh8vPRTv+80eHWWJvw/gJmenCIGPAgLwhq9 4KTQx7e4RMRqPLFOsJo6LGg1knIn/aMBicfhzwFoaGg2jgjnAk3YnRRGCwHWpniVYI7A b7Qh6AtOWGPE7F00W56PJvfdzNAjAqXRd6mD6yvxqsswPXzKI36eHzy528Fhp745CgGj 93Cw== X-Gm-Message-State: AFqh2kpHda1o+HQppK3sgPO6BSzGmjj7wpsfEjmQ1q/DogpOd4A3zbVT shC8qgdDh+J7ZU0F508A84o= X-Google-Smtp-Source: AMrXdXuXfVYQVgjb4y/wKuQ2GTtGHjovV/L4akvHfBhP3XbcVnLuPp7MBsPsK9n+tArlnPdUcTY5dg== X-Received: by 2002:a05:6a20:3a83:b0:b6:5bde:3064 with SMTP id d3-20020a056a203a8300b000b65bde3064mr29899507pzh.16.1674608101144; Tue, 24 Jan 2023 16:55:01 -0800 (PST) Received: from bbox-1.mtv.corp.google.com ([2620:15c:211:201:7797:cacf:485:8c8]) by smtp.gmail.com with ESMTPSA id cq6-20020a17090af98600b0022bffc59164sm177272pjb.17.2023.01.24.16.54.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jan 2023 16:55:00 -0800 (PST) From: Minchan Kim To: Andrew Morton Cc: Suren Baghdasaryan , Matthew Wilcox , linux-mm , LKML , Michal Hocko , Minchan Kim Subject: [PATCH v2] mm/madvise: add vmstat statistics for madvise_[cold|pageout] Date: Tue, 24 Jan 2023 16:54:57 -0800 Message-Id: <20230125005457.4139289-1-minchan@kernel.org> X-Mailer: git-send-email 2.39.1.405.gd4c25cc71f-goog MIME-Version: 1.0 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 696D11C0011 X-Stat-Signature: jmz965ueqh43f4yty9ihpdqpedcy3k37 X-Rspam-User: X-HE-Tag: 1674608102-848977 X-HE-Meta: U2FsdGVkX1+m+1hFZouvZDqsSsZInAwQ6gvIUNTJoro/xj3C0db0sB4I2wN8rrXvOZlgv3AT2yTKvmRIuhxmIQCze/D4uDGb1XCQkZvVQSkQwhlTts2/nB4zg3kQDJNA4cfXUoVO8XWLjBn1WMWnbGfZKs6rthe6B+ahtrOXcrqH3csIrM/1+Lv5vW7JYYIJp6HODnMb/ko/+32nlDyeScAw7z/xythUUSazCHwwcIQwGjZYElrmBJRc9dywvJ6Se4ieImRfIldkHp/TsZCt4q+7bFqRm4ioWhsee8lNeUsCzEiAKQxUdw2TCZQxgBAuBIETXlEvtNeBEaKeOIJLsy1xeubCVMDOtmNq0MIDvexL9X/WYUKxiJUVn/XIPWvNwN8fwKi+KiQ4a/Rj+aMednwqQ9VUUR3SqJ/7Jnmte5mvl39suk57VV+XVZnOz8SE01DY27XTuFdHIM6u3jgemrGvxJbIqJt5zcIFmCA9zWpU89+voPXmPZVnRXt4yrJX9D9ACQY8LSs0lpXKUvlGyFjWUOikyoimW6QI1I2gebhrzfq5hZp24mr6QXneLrccA4wgL0wtfbkg3FP+qN3XyD06NdkzPMKAPRZ81dkA5YGW29W7DaUAJGxQ89HF7YIJF7I9WGpawQdwz1n4sA3+/cpO/VjGsZsQ5ljCOSWhc9Lah3jmyJheu6liX3A+BX30oGkRwdgsrahN7/gRo3F/IUWOjdzUoytHxF2Phb3xz9kZE3VOpzm0BMwjIf/eo9ftaMfL8yKf4d4JmB1BnHIrKIKWycpMETuOWSo5omqf2hXEMMwWFTqcPQwrfJsddoiiDjPudxfMXJ6zze5eVmRMWDkg2tt5aq0FSC2eIEkkELXOCL5hGQDuNvKmiy6JBVX6yeLdAa88VjzZe3Cg2svcWPF7PBorLhDvNe6brJ7j0uWYA/I+SMsbJypNSPUI7Q2HQJsO00GnrjkOiblFqaw 0CIC4I9a JKi8SWGSbdMAwEbtV4dboSvhu/3QRd0LtxMzQ1mkm3Ee9VFz8cxZowWpIURv/wcLhWOdka9rwYfVxQ94oHEOlOJ7aehEzL8xtrdoW8slpMYaW2PwIQ13kuL2juxRj9fQiOyGhscxHy+g40eAJZdWmXR20J3iMja+bbrAv3T1eAzDkuw8xEIn24SujmzOYYRkR/4tuERAKVbQfDZHhnZzbuV99dKOP8Ey0SFG3TWxA40vXzg2iOd2CRSfPAYkDEhbovAoByj+VthG5/sabUm28OVcTaZrcSZVtfh6Wsmwremgr99i5IADjUrI+5AbFYzwT0vF4JVOK4R3r/T4Q0IZSFOD3PzzC6g+kTxrah0kjryf9gwhA4aBZt9d2lFPNyfCWoOwHHesCZQSjTKmlyglwUVcXpirXIMhTiAI/Pp0FcxsLDUPK2urxBWszCHDvu0sH5Yt36/Vgh31WZI2pydF09Rl1GyiRMLeSTpIFZoa47J6jXwS9GKJltjg/tD/9S8bory46o8qOSAh4PblTI0AQOqJ7SuxcwjIjQXfVfao13Y87PwOSfgWPxWFIy3zP3/vfv2ydXeP2j7Mr+nREgSVFOJHfPeNFJXT3a4EHP3IZnTMwFMCQY66jqeGKs4lOLOy7o4iXqnYuvFnY96XX1NIltGX7KClPbdmi/BfGIYHgmt8bxe8Bj2VaFvMmmQ== 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: 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. 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",