From patchwork Mon Jul 3 14:06:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Charan Teja Kalla X-Patchwork-Id: 115382 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f45:0:b0:3ea:f831:8777 with SMTP id v5csp554857vqx; Mon, 3 Jul 2023 07:13:10 -0700 (PDT) X-Google-Smtp-Source: APBJJlGTVkvaLNMhueEIFEwQRyF+UuyZwW31B4+aokXjiAkOdEfcmwaODvRVj62GwMuda1aN99Pa X-Received: by 2002:a17:902:c246:b0:1b8:5827:8763 with SMTP id 6-20020a170902c24600b001b858278763mr10773148plg.4.1688393590044; Mon, 03 Jul 2023 07:13:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688393590; cv=none; d=google.com; s=arc-20160816; b=FeH5d4nb2/XzOVBFESLjJSv9dKHtr6s3b1i4lyGMBQy8Ra+kR+OCGUddpPnP5syC64 syQfz8+sLehw7Dzq7BhWuvm/1YXpVo1xXFt4+rsS0qxl8H/9z4ENCXDXHXa48Xit1qgR B1cZaUujUj40RFSQsq90uBbjOzKX2aAVUBljixf84yRKBLKMOPlEUmFYCFAv/XmZNjSg DmID2sEM7kLtu4XMAVAIde5ub2DCFhjhm+/ja+RKe6u9E7uxGS80ffPbCy1qE0Mkxlja diTRVNftgJeclHRtVJ2ZrHjSe6LyJG6Z1Oz8yBivuP30uPUKgYp6RPF0QWFnzULHtdph bLmA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from :dkim-signature; bh=1wxDIUyK/AiVZYBoO+Xsd4mjrqxHTTfot/+BBVdBvzs=; fh=8L11XEmbAdPDVtcqgNqPZcEGRcxftXOMCA7R+kHdfXw=; b=KGw4Md1oILuSi5nM/vtgcHWHzeEqajFXeAUpu7ZYPB+67OkYwp4hijjKTkqFWnE6pO CTARCAYRurlFW3T2aMWu7dBoqABiFhwjDEUFn8Gq3s+YI05Cnp5Cog81QuJxIJwL5EAm /tcpML68OQtlJq4ObPteglCvmSdrSi5uagMrDTSB7XkJUtKC/25eplJTvfZ91KELgr9o 9h8sQwynTeMsM3dzD2/F75MxJH2qsDNJb9NQ8ubdUpLp/4XEmfX8u6GshrxuIv0SOx6a DX+AnSpO1a2HOs47U2dMoTu+x1+r9NGRemqYRFg2ErsAKiykXn1Ex7FhLWR3ts93dKVH +2xQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=IOpVsP20; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y3-20020a170902ed4300b001b248529a69si17906194plb.92.2023.07.03.07.12.56; Mon, 03 Jul 2023 07:13:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=IOpVsP20; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230050AbjGCOHV (ORCPT + 99 others); Mon, 3 Jul 2023 10:07:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41016 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229614AbjGCOHU (ORCPT ); Mon, 3 Jul 2023 10:07:20 -0400 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C4EF8E54 for ; Mon, 3 Jul 2023 07:07:18 -0700 (PDT) Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 3639x5Jp024460; Mon, 3 Jul 2023 14:07:05 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=from : to : cc : subject : date : message-id : mime-version : content-type; s=qcppdkim1; bh=1wxDIUyK/AiVZYBoO+Xsd4mjrqxHTTfot/+BBVdBvzs=; b=IOpVsP20GY0CJaBoNPe+rbKFKY2t+zj53Zn0AuxoJdFFDlQna3hZAvVohOs1y6KtxZRK lLOyPUoc/FC7fSb6YcKJef5Q50b7qo0RNGxPAwytzPVTEh9LXN4zar7OfUf+tQckWlT9 a33+tS4+rWrjzPa2XuNTnpJ3ITGvyYrcYYbi6kzf05BlggEvk6LTpNbb/BiFFjfHJQ5f YtJTMdkolX/VVZn6H784jJXUFOdJjCOWjm2as+1bzTTW9cF4mw1FEt8R+0KX7JzYhj0v 0x27KX6Ndnvsfmf9C32TbcgLHShzwCdj0cDRlsHYuR4AQumB4x9DskgQZbo9GouQ3NPB sA== Received: from nalasppmta03.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3rjday3yt3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 03 Jul 2023 14:07:04 +0000 Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA03.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 363E74le013803 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 3 Jul 2023 14:07:04 GMT Received: from hu-charante-hyd.qualcomm.com (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.7; Mon, 3 Jul 2023 07:07:01 -0700 From: Charan Teja Kalla To: , , , CC: , , , , Charan Teja Kalla Subject: [PATCH V3] mm: madvise: fix uneven accounting of psi Date: Mon, 3 Jul 2023 19:36:41 +0530 Message-ID: <1688393201-11135-1-git-send-email-quic_charante@quicinc.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: UvyzWPktQeHm9UAUH417xKvX8T74p-qh X-Proofpoint-GUID: UvyzWPktQeHm9UAUH417xKvX8T74p-qh X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-07-03_10,2023-06-30_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 impostorscore=0 malwarescore=0 phishscore=0 spamscore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 mlxlogscore=999 mlxscore=0 priorityscore=1501 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2305260000 definitions=main-2307030127 X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1770408997125932142?= X-GMAIL-MSGID: =?utf-8?q?1770408997125932142?= A folio turns into a Workingset during: 1) shrink_active_list() placing the folio from active to inactive list. 2) When a workingset transition is happening during the folio refault. And when Workingset is set on a folio, PSI for memory can be accounted during a) That folio is being reclaimed and b) Refault of that folio, for usual reclaims. This accounting of PSI for memory is not consistent for reclaim + refault operation between usual reclaim and madvise(COLD/PAGEOUT) which deactivate or proactively reclaim a folio: a) A folio started at inactive and moved to active as part of accesses. Workingset is absent on the folio thus refault of it when reclaimed through MADV_PAGEOUT operation doesn't account for PSI. b) When the same folio transition from inactive->active and then to inactive through shrink_active_list(). Workingset is set on the folio thus refault of it when reclaimed through MADV_PAGEOUT operation accounts for PSI. c) When the same folio is part of active list directly as a result of folio refault and this was a workingset folio prior to eviction. Workingset is set on the folio thus the refault of it when reclaimed through MADV_PAGEOUT/MADV_COLD operation accounts for PSI. d) MADV_COLD transfers the folio from active list to inactive list. Such folios may not have the Workingset thus refault operation on such folio doesn't account for PSI. As said above, refault operation caused because of MADV_PAGEOUT on a folio is accounts for memory PSI in b) and c) but not in a). Refault caused by the reclaim of a folio on which MADV_COLD is performed accounts memory PSI in c) but not in d). These behaviours are inconsistent w.r.t usual reclaim + refault operation. Make this PSI accounting always consistent by turning a folio into a workingset one whenever it is leaving the active list. Also, accounting of PSI on a folio whenever it leaves the active list as part of the MADV_COLD/PAGEOUT operation helps the users whether they are operating on proper folios[1]. [1] https://lore.kernel.org/all/20230605180013.GD221380@cmpxchg.org/ Suggested-by: Suren Baghdasaryan Reported-by: Sai Manobhiram Manapragada Reported-by: Pavan Kondeti Signed-off-by: Charan Teja Kalla Acked-by: Johannes Weiner --- V3: Incorporated comments from Johannes/Pavan. V2: Made changes as per the comments from Johannes/Suren. https://lore.kernel.org/all/1687861992-8722-1-git-send-email-quic_charante@quicinc.com/ V1: https://lore.kernel.org/all/1685531374-6091-1-git-send-email-quic_charante@quicinc.com/ mm/madvise.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mm/madvise.c b/mm/madvise.c index d9e7b42..d00a843 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -413,6 +413,8 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd, folio_clear_referenced(folio); folio_test_clear_young(folio); + if (folio_test_active(folio)) + folio_set_workingset(folio); if (pageout) { if (folio_isolate_lru(folio)) { if (folio_test_unevictable(folio)) @@ -512,6 +514,8 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd, */ folio_clear_referenced(folio); folio_test_clear_young(folio); + if (folio_test_active(folio)) + folio_set_workingset(folio); if (pageout) { if (folio_isolate_lru(folio)) { if (folio_test_unevictable(folio))