From nobody Sun Feb 8 08:46:40 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 56452E95A95 for ; Mon, 9 Oct 2023 02:58:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345033AbjJIC6J (ORCPT ); Sun, 8 Oct 2023 22:58:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35204 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233658AbjJIC6H (ORCPT ); Sun, 8 Oct 2023 22:58:07 -0400 Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01on2095.outbound.protection.outlook.com [40.107.255.95]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E0BA19E; Sun, 8 Oct 2023 19:58:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RysFwmN45WKvZk9Nfmaf9yMfbio7I3dxAEykE9IMw/SnL8jW+lywRLJ4iyi6uux+c3W54n6OFpee87gr+F8lKZqwC2O35x1yx5GkfBBM6rB/3mz0bIDLHVBs87/Ngmxa2G0HQb1xsqmayeqjfmLEz6t4KOWqJ5ZCpXCZ9fIsjUQhNWxXpKXlFCJ1Cli+UBiMCtlD/VnM+HDxLm4hWHk345EQVb6oYz4qJFk7Op+xxbJ5ei7e00Fguh+MHt9/HMyvxnoBaeoU3vbHuuT9bG5GVMX9Xosw8nE+Rc4y0VeOE+eswYumKc98Y9E+9iIfIuhYsyWEJXp/y1DnQ11wSpoaww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ufVFOScT1Uc8FLvPObIJWLuC6qLxilikqqz4c9jJ+X4=; b=C5sn0byVdaahMpMYMQhqaXwIq7E6r15iSFhrvwXXqs9TGLmp0TXUWBrItTcvtdTGWFSvuAL5Gonh5DDXxoKvPpN3yB2GKhiAjCzPHkeFMkwxRYoeiwejh19Ni7vOz0If0awERchgQG0+jZ8pjowfl2MZjBCbPwduOEWpJNr3wIjT9I+fapEU+8pB2lA7cJJtw45heyNMWBwL7bdJiWRIS0Iu9iKjB/Ddy4dGToYEl7WlxumqhyUvsZRlFRN5jiWB/wejJyG2MVh1/UdZtqN5oTvP5YkHHNzHwJpJEVdwn+1PZa0pleXSycdgiFC9GNqi50aaDbb7QpMWHxIrmOtwAg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vivo.com; dmarc=pass action=none header.from=vivo.com; dkim=pass header.d=vivo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vivo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ufVFOScT1Uc8FLvPObIJWLuC6qLxilikqqz4c9jJ+X4=; b=iciKMtLY6RTsuGh/M+8uo3ReJ3r4bjcqQPi43cCDUaXCtmd4k0IaJFib+bjLlvv9NSMbMjZD1jMhLw6tb1ZUPQ6EKf3iSfQapTo9o7NnsVaqesFBRtkr/2o8h9qeaCY12JJEWTUtWili4L7KyAXJRkHDdXSEwsfnPUjPx4xPfowKdSejKbcFhH/fYKAcwsYWgQ7GU431djSMwYiLLGaFIBIn0PRawoBRpacTf5YOMr+EfigHTx4ubZTfAMcotVCs8poYaBp3qeBI3hy+eghpIpDjREEwiHt0JwfV5Au2gtbNCLI7zC+m/sARMH9ZcRZsRCvp0QO4suWAiHWlA+73GA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vivo.com; Received: from PUZPR06MB5676.apcprd06.prod.outlook.com (2603:1096:301:f8::10) by TY0PR06MB5428.apcprd06.prod.outlook.com (2603:1096:400:219::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.36; Mon, 9 Oct 2023 02:58:00 +0000 Received: from PUZPR06MB5676.apcprd06.prod.outlook.com ([fe80::40ac:5701:4617:f503]) by PUZPR06MB5676.apcprd06.prod.outlook.com ([fe80::40ac:5701:4617:f503%4]) with mapi id 15.20.6838.033; Mon, 9 Oct 2023 02:58:00 +0000 From: Huan Yang To: Jonathan Corbet , Andrew Morton , Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Yu Zhao , Peter Xu , David Hildenbrand , "T.J. Alumbaugh" , Axel Rasmussen , Ryan Roberts , Kefeng Wang , Suren Baghdasaryan , linux-doc@vger.kernel.org (open list:DOCUMENTATION), linux-kernel@vger.kernel.org (open list), linux-mm@kvack.org (open list:MEMORY MANAGEMENT), cgroups@vger.kernel.org (open list:CONTROL GROUP - MEMORY RESOURCE CONTROLLER (MEMCG)) Cc: opensource.kernel@vivo.com, Huan Yang Subject: [PATCH 1/3] mm: multi-gen LRU: fold lru_gen run cmd Date: Mon, 9 Oct 2023 10:57:20 +0800 Message-Id: <20231009025726.5982-2-link@vivo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231009025726.5982-1-link@vivo.com> References: <20231009025726.5982-1-link@vivo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI1PR02CA0011.apcprd02.prod.outlook.com (2603:1096:4:1f7::19) To PUZPR06MB5676.apcprd06.prod.outlook.com (2603:1096:301:f8::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PUZPR06MB5676:EE_|TY0PR06MB5428:EE_ X-MS-Office365-Filtering-Correlation-Id: 5f9d9c91-01b6-4445-fade-08dbc8738c48 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UCQ0q2tTjcd19NL4mscfLurpAIthoRvjQd4tJOs6wtWwQBpdrYrVCr0U3FDzPuCb9mI+rd+ZoYBTMFyaWeAQvBbJ9NKy6Dd6n8k3NIhlVbyroJkTitr8C9w0jpH4XWYiXXPJxJcX83aLRxWpyyI5v3Mm4B+L9ziTSXLKuFONLNiRTfqryZFQ1Kp90d/KvhkRkr9/3p+yPuhM0aIm7iKGsNfQLarYUIxC2nIT/dcNJGsKp745Q2I+TO7TDaa8T71or6U2GTh/kkdBCsXaPaAFbSDNgS86ylk9T0WY8t8ncbAqq04KDBpUooBf67uVeiQDm2ULd9d5dyrjKWlXmZ/InZHsGwYQtfdK0GB02Q9HaliDmBpFP4gWQEy4WsEWF6A8J2Jl2Wt8bkMTC5NQnIlen7Mp9IJsG7WpI9p6Kai5/6GKI0Lh8Ky5uT450JASFPtY83ocqWZFzMhKeysxI/quhdutun+/sN6HdDMLiTMNhmiNF1JPpg+XGp5o6y23VGd92FL0etVPX/2CMfFwj5sDYHLRynuE9GA0PRffW6V5cGpyCIpEIDmHbnhZQRQ3Mcxq4h4pcdHPECL/67ATOAuBkl2j44AL7t3X5p/eCwM/JoXiSdZHJI9igLXm9sN4tWcuSndKu0bMME63ZWdjAD000A== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PUZPR06MB5676.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(346002)(39860400002)(136003)(396003)(376002)(230922051799003)(64100799003)(451199024)(186009)(1800799009)(52116002)(1076003)(2616005)(26005)(478600001)(6506007)(6666004)(6512007)(107886003)(83380400001)(8676002)(7416002)(2906002)(8936002)(4326008)(66556008)(110136005)(66476007)(66946007)(6486002)(5660300002)(41300700001)(316002)(38350700002)(921005)(38100700002)(36756003)(86362001);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?q9eV6o8Ahbn2lbTm65cJerRZw/j2WhLTUPsUuhBi5JfoGvluco+MfoAIVY0Y?= =?us-ascii?Q?4Xo+nmDLERqWqipcvaoQzoKjaUjTtnzTEHVku3doF+QiDBD7CjtmXgxEaFMI?= =?us-ascii?Q?bNnIJrjUFlMxvj2FRoBpZunfknjKFTitdTIURM7kXepX2+NhmqZlOEEMSedN?= =?us-ascii?Q?6w/yGLT3kFW3qxQSaY/qWvQp5SMOSFU7LldNxGZCipYYIt+nQzy+rqHWomNZ?= =?us-ascii?Q?SOkBHc4RrTdsjIXtJXFM0lgY18gc/21SG5DCflcj4ESEuqnPGPDqQlKcecdl?= =?us-ascii?Q?TbnAsiFx1IkmLe91HWcZmEszPpgAaRAi81CWlu2Vaq4qK90+j1pyPIJ7Wsx/?= =?us-ascii?Q?FclxuRcOXUCjhPEH/P+IqcUyfXMols+suq45KXubKFcTjMoDBZ6aJGHbzSTr?= =?us-ascii?Q?yHV/RPmpbrZG0p7kcTEsooWmSowGwitpnKgamxiTUikZX7/2JDI36XoNWU+k?= =?us-ascii?Q?MmgKatcJ3MTZzVj/UBrzVDkW5JVpf2fy2sNHwM6ic8rk/dS/8njJNLmNV3e7?= =?us-ascii?Q?NLLrPPuyn1dt0O+y8viNF06sQQI76J0+ec7U5KSfjXSlZ1nXuM1XVoXDEJCi?= =?us-ascii?Q?Q8LpnL1kPOSN45uo3uAz8bWoM/YJYP7Y/6vZ5qMnNzavxU5bIAz5OJKa89OQ?= =?us-ascii?Q?JbLfVJqAgcIu0oq92Mt55S4OuyH7YIcnw2MOCctPjSxZ135dWQEXjzVkRyEy?= =?us-ascii?Q?4s0GCADN8bf5CqsUDt+alvGK9yD+R4PjX2LmtHIx0hUsRYo78pHaeNpXE3hi?= =?us-ascii?Q?j92tFpd8F5kFBN8beFfl8j13Vfgb9TbE8gIzRDnSgYQTogp3/eA3uazQA3uP?= =?us-ascii?Q?mn/w0IhQOrOLYKhri2Djd25PWxZ4d94fD99VtdK5j1kw9YrE+EHNQAPYADHt?= =?us-ascii?Q?HA/idrvMZASBBoOPTZ0OJN5o9vuCoDp1p1YCN5JQZAd9919fLur/OngY2m2E?= =?us-ascii?Q?djnjAiHTt1jQjyoCCjItkNtac+OvYsetDt2LDeuyVgvyNYfewwRbq476txCr?= =?us-ascii?Q?btstSGvTOt+Cb+bl0xTqSEjJa6pNa1xSzl9JldfHaiMI1sDIQxnr6MRP/FzP?= =?us-ascii?Q?V93ReHd102NC7rM0aAO0e6J0SJQBpSJzYNh5+M/NuGNAvphirMARS9nWqRQB?= =?us-ascii?Q?ehx9Q11hz3GlNfEbwhuoVLTfcBZBs8uQyPyMsUexTPkS5L0q74PgpgnOJ8Qp?= =?us-ascii?Q?RnYO2QnEnwP3D98+VN963uhrvWs1cWE799xyEU380Bo34dYKvtYIOL4m+LlR?= =?us-ascii?Q?rz+89a/1kLUh7bx2jY59MqQdPQyjCqTBChaVRH/amBfwNC/eq7Lgeva5LNDE?= =?us-ascii?Q?25j4u9vwdfl1/n8CmUyRvxf4CaBMxUEmh4YgH+WmY8J9bLHHxGb73wHERiEY?= =?us-ascii?Q?o8yKop6CKD0CuCidWqXw0qmyIFehK7Zn92PejcGT78fuT/dLjB9XxjaYoeZG?= =?us-ascii?Q?gi3Dukpu3zx2rr2h14gPSmcLQLAzF9Xn7WriT7JzbBrTTqpeqFUqIyiDbSwG?= =?us-ascii?Q?rSP5rwZGlqWcqp2CpBWP0NJa0TKzkqAaEOHfAEh7uw0LW0CjHIMUJSL/K49g?= =?us-ascii?Q?Zu4+Mzc//hmUvmmJAQ0+G9W53F7SHJlPE8ywwt+d?= X-OriginatorOrg: vivo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5f9d9c91-01b6-4445-fade-08dbc8738c48 X-MS-Exchange-CrossTenant-AuthSource: PUZPR06MB5676.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2023 02:58:00.5434 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 923e42dc-48d5-4cbe-b582-1a797a6412ed X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: K8pE71oorl2FBFhVFty4U/SKq2HSsVwTkAfHEHqoUkCBRXPGLmzMzkkaPSWONch6BaVCGKI+/Xu3r3kTAoTrBg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY0PR06MB5428 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: HuanYang This patch move LRU_GEN define helper into mm_inline which will used in per memcg lru gen node. let run aging/eviction into func, per memcg also will run this. Signed-off-by: HuanYang --- include/linux/mm_inline.h | 9 ++++++++ mm/vmscan.c | 45 +++++++++++++++++++++------------------ 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h index 8148b30a9df1..b953b305c8a2 100644 --- a/include/linux/mm_inline.h +++ b/include/linux/mm_inline.h @@ -101,6 +101,15 @@ static __always_inline enum lru_list folio_lru_list(st= ruct folio *folio) =20 #ifdef CONFIG_LRU_GEN =20 +#define DEFINE_MAX_SEQ(lruvec) \ + unsigned long max_seq =3D READ_ONCE((lruvec)->lrugen.max_seq) + +#define DEFINE_MIN_SEQ(lruvec) \ + unsigned long min_seq[ANON_AND_FILE] =3D { \ + READ_ONCE((lruvec)->lrugen.min_seq[LRU_GEN_ANON]), \ + READ_ONCE((lruvec)->lrugen.min_seq[LRU_GEN_FILE]), \ + } + #ifdef CONFIG_LRU_GEN_ENABLED static inline bool lru_gen_enabled(void) { diff --git a/mm/vmscan.c b/mm/vmscan.c index ea57a43ebd6b..f59977964e81 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -3285,15 +3285,6 @@ static bool should_clear_pmd_young(void) =20 #define LRU_REFS_FLAGS (BIT(PG_referenced) | BIT(PG_workingset)) =20 -#define DEFINE_MAX_SEQ(lruvec) \ - unsigned long max_seq =3D READ_ONCE((lruvec)->lrugen.max_seq) - -#define DEFINE_MIN_SEQ(lruvec) \ - unsigned long min_seq[ANON_AND_FILE] =3D { \ - READ_ONCE((lruvec)->lrugen.min_seq[LRU_GEN_ANON]), \ - READ_ONCE((lruvec)->lrugen.min_seq[LRU_GEN_FILE]), \ - } - #define for_each_gen_type_zone(gen, type, zone) \ for ((gen) =3D 0; (gen) < MAX_NR_GENS; (gen)++) \ for ((type) =3D 0; (type) < ANON_AND_FILE; (type)++) \ @@ -6058,6 +6049,29 @@ static int run_eviction(struct lruvec *lruvec, unsig= ned long seq, struct scan_co return -EINTR; } =20 +static int __process_one_cmd(char cmd, struct lruvec *lruvec, unsigned lon= g seq, + struct scan_control *sc, int swappiness, + unsigned long opt) +{ + int err; + + if (swappiness < 0) + swappiness =3D get_swappiness(lruvec, sc); + else if (swappiness > 200) + return -EINVAL; + + switch (cmd) { + case '+': + err =3D run_aging(lruvec, seq, sc, swappiness, opt); + break; + case '-': + err =3D run_eviction(lruvec, seq, sc, swappiness, opt); + break; + } + + return err; +} + static int run_cmd(char cmd, int memcg_id, int nid, unsigned long seq, struct scan_control *sc, int swappiness, unsigned long opt) { @@ -6086,19 +6100,8 @@ static int run_cmd(char cmd, int memcg_id, int nid, = unsigned long seq, =20 lruvec =3D get_lruvec(memcg, nid); =20 - if (swappiness < 0) - swappiness =3D get_swappiness(lruvec, sc); - else if (swappiness > 200) - goto done; + err =3D __process_one_cmd(cmd, lruvec, seq, sc, swappiness, opt); =20 - switch (cmd) { - case '+': - err =3D run_aging(lruvec, seq, sc, swappiness, opt); - break; - case '-': - err =3D run_eviction(lruvec, seq, sc, swappiness, opt); - break; - } done: mem_cgroup_put(memcg); =20 --=20 2.34.1 From nobody Sun Feb 8 08:46:40 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 47B37E95A8F for ; Mon, 9 Oct 2023 02:58:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234094AbjJIC6T (ORCPT ); Sun, 8 Oct 2023 22:58:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35278 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233653AbjJIC6O (ORCPT ); Sun, 8 Oct 2023 22:58:14 -0400 Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01on2124.outbound.protection.outlook.com [40.107.255.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EAA70E4; Sun, 8 Oct 2023 19:58:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MSMpnKQwYJKTbP2Hb04ixAgCTakPl2b4NuV8mDywI/0YvbVA3z36tBk16aqpn+MNpc/d99YuH1JyfLueDKeJ6poC+EgTuR3JmBDYrCePX/2zK8Nb8UTRcOXqNgeu0snU/sFDtDxB59x25IZdsuEGFjaYm4leDrf6c9HX2kETJtppFWfFteDQOfE2h3TT4JMIGXvmPKruIYeANT1KH98gjmsMXR2R6rZlltOnZ9E1Z7tsZvMONqCuX9+h/xRhvZ6QYaooRzBGKGgy+v7jVDuSLcOdt8tqs1EIMCBJHBV1Tv8FL1PitaFhq/UFF1+OFuMOGu0FtNha/yEzlZVNvalrPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ig9Ha7nnM7rsdaFJWSYfdcWwPLi1FA9WU93YxlOKSTw=; b=bUgxArmCJ4AUs9PynN2BG7mby1X0Msxk88TmQOQantQmn3fi12gf9YuwHW62WcWIz1wWzXqTsOTCnm6A+m5zW4wDNgif5aMk2oOU60eUChk0jMuzwXDwQy+K8qog2C6BNoloMcpjUp5jjmFHEt0wH3Y36DAzUlLujLlYDS1GPOS/06hBQXBHgOD57E4Pjn6jR0m63lwot2a3zFsJq/D2EE6fUX9hKTg050MzkhFjK1p7fDW3FgQP7W5qqef/rjNyC0PcdHP8Xuzyq/l5LjqdzL47fNG8PUMKWgC6rtvfcie++cssvvWA1VjYTWnrSIVxCRjqb5irDM0gaVCYF5rYSQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vivo.com; dmarc=pass action=none header.from=vivo.com; dkim=pass header.d=vivo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vivo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ig9Ha7nnM7rsdaFJWSYfdcWwPLi1FA9WU93YxlOKSTw=; b=J3aPdzpHe5nJqkZiGkSlFr+loD7dvO4eDDjpbpBPYCUzbuCNbMyElq85rMDN2fhLtcH2+9wdbzkrLffeUQBt60x1fuhUKVzJ3SLbe6OkPQot1jiSvemqASHnrUOOfZIJ+sZY9g/NicyYde+S/5BK2x7ogyaZ0cZmLGUsa1Cys5pfflhNmj05pbsnDi8ym3YcxNIkl1ySUtlrCkJq5E/COdsdlH/yd8oPB+M3rB2ChR/tGAj/YHDgLZYPRAIwax0/a8mcGJfowYcyUrNKm90SAo3ZoyyJAYwsLCneE504xAZpug4nck/LQDb5RYYn7De+ozvcNG8MdHhJoiPyIaY6ew== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vivo.com; Received: from PUZPR06MB5676.apcprd06.prod.outlook.com (2603:1096:301:f8::10) by TY0PR06MB5428.apcprd06.prod.outlook.com (2603:1096:400:219::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.36; Mon, 9 Oct 2023 02:58:08 +0000 Received: from PUZPR06MB5676.apcprd06.prod.outlook.com ([fe80::40ac:5701:4617:f503]) by PUZPR06MB5676.apcprd06.prod.outlook.com ([fe80::40ac:5701:4617:f503%4]) with mapi id 15.20.6838.033; Mon, 9 Oct 2023 02:58:08 +0000 From: Huan Yang To: Jonathan Corbet , Andrew Morton , Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Yu Zhao , Peter Xu , David Hildenbrand , "T.J. Alumbaugh" , Axel Rasmussen , Ryan Roberts , Kefeng Wang , Suren Baghdasaryan , linux-doc@vger.kernel.org (open list:DOCUMENTATION), linux-kernel@vger.kernel.org (open list), linux-mm@kvack.org (open list:MEMORY MANAGEMENT), cgroups@vger.kernel.org (open list:CONTROL GROUP - MEMORY RESOURCE CONTROLLER (MEMCG)) Cc: opensource.kernel@vivo.com, Huan Yang Subject: [PATCH 2/3] mm: memcg: add per memcg "lru_gen" node Date: Mon, 9 Oct 2023 10:57:21 +0800 Message-Id: <20231009025726.5982-3-link@vivo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231009025726.5982-1-link@vivo.com> References: <20231009025726.5982-1-link@vivo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI1PR02CA0011.apcprd02.prod.outlook.com (2603:1096:4:1f7::19) To PUZPR06MB5676.apcprd06.prod.outlook.com (2603:1096:301:f8::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PUZPR06MB5676:EE_|TY0PR06MB5428:EE_ X-MS-Office365-Filtering-Correlation-Id: 19fa420f-6076-4659-15e1-08dbc873912f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qTqwUBPmzRDTvYyledPNQJgrffoG18cE/rPISI28a7g7frst57q3uFm50EOOD9Fe4Q6c7Z5kqRDvdDWEjfKhytqVwPWpWNZzeiaqINdwB8CXYp652qdgwpLh5Di6/A2mihJx4+fe+RtWV7BU2cho4HHlSgW5WPIOwn4dlOfe0T81lQgyHFoasqBqY29BqjAKD/VegxTsaDlozHxbadF54weu1WGjHd72UwLHjfEbRJ8iMpbDWFs7oVPBAqOE5KaTBC/9OXU/0+zKxJH5Rnvr4moPVaPmv23LH3NK/DVgfRJGeW4/9kJkINbcuCxfAYUpdKZhW25sV44lzjepSn5SjXhDxnpuIAv/59bEJcD7ekl43bZBzGbkLULuB+k3AFwb4c5NYN+5ore529+II5o8rGrB1ohKQ4Phf5/ZuOTR2FWmF/tidZf9VlOaF2yDdBBG/8WRvbRv/6jv5rNQlD8ZIBJmOqSozpKgXesOWL/mNhMP33bW8tMiGlR2+uhebmLWD1AqlyB6Kwi4aeYPdX/r2VEo38ApU4R5NhCHI4hc9m7VuEEDjdEErun/T0Z2XtPjKpC+d9eZqJz9faMT+yqaCeZfsYZOOUReD3k+oT5HIbdz8Pq/mwt/K6utuFoIU+5LFyttNbPFCcDdDH3WmN1cTw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PUZPR06MB5676.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(346002)(39860400002)(136003)(396003)(376002)(230922051799003)(64100799003)(451199024)(186009)(1800799009)(52116002)(1076003)(2616005)(26005)(478600001)(6506007)(6666004)(6512007)(107886003)(83380400001)(8676002)(7416002)(2906002)(8936002)(4326008)(66556008)(110136005)(66476007)(66946007)(6486002)(5660300002)(41300700001)(316002)(38350700002)(921005)(38100700002)(36756003)(86362001);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?K4e0sOIx0Fy3x6VJaPJFC5t8L5IxkqjPddG2/OXcK/xZxvnfgKcOKwMwdlg7?= =?us-ascii?Q?baohOc4OJA1o8GYtHyrMjt1HIGtEkzflOct55tmDS17snV5OonwIUKgZTmY5?= =?us-ascii?Q?AupaM5ANUIO4p4h44EDHdjrW5bd3geeDnmJxsNh3aTce77rmwTpsZhk59gKi?= =?us-ascii?Q?O4SVeFP8C4uOcP/vLo527M6tMEJTQRAqvtBGzjvM3loD4QLP7ui+gc8tnwCz?= =?us-ascii?Q?XR5GK9BXyaWDGOWmZETgRxcibn0WvKKV3HfxG3ieTSY1i99V9GK4i2Njagxu?= =?us-ascii?Q?J5+B1rXqD4uuHk1Dz8ry1TlOvPkm+Z28z3bHtbshCIeWBtSsX8rcR7nySeK9?= =?us-ascii?Q?2UOlPLKfW8DAajjd0XpLYLlKd/gEatj4FAktmP1SqV9aGY3ERVqgiPP6ODl9?= =?us-ascii?Q?x0c53rHPH8fzkiWprxCewW996I0w9yk+9sOX8D3QCKvBN/ZZPK/toPHwaiOO?= =?us-ascii?Q?9Az9/tmQq2v/S6aP54LJOBxMOkXtQjeTJeF7YnP08MCYettWG0RYxMdK4G3f?= =?us-ascii?Q?IowzpG56lDJBBDxZHJ6qyaRxbvqqUMFJ/ods9Mq/Vp9Qb+9Te3YkEXGmTgvJ?= =?us-ascii?Q?orEb9BE6nZ89qN/m4/JoeBn9EbR0me6glwjJ8MO/00gNaHa6nZCmks5PmG3c?= =?us-ascii?Q?aXmx2JQFgJdKQEawyVSH2DzHzlnznMUBxF/rHOha/2t3NuNm0iSMTFQ479vO?= =?us-ascii?Q?T8Fhop8iyLxLfQFx5HDNFEkxSBUsnk13jxAe/wzwOq50LhPwxpCsDvOLVgBm?= =?us-ascii?Q?uR4xc3dAxPoLJxGFYxbv5FyjrN7XNjZk/6tbGDzT9OFg3Chv7g8Z8wy2cTZ/?= =?us-ascii?Q?Qk6rTyxCTMJxcAzvvTFYyix2x5/Gx4LgjxMuInhtcy0vjdjhs6FNXZs2Do2Q?= =?us-ascii?Q?jYhV/gY6nLZs3UkFnpoI107MLmfX2grMvc9kD8XOSwYEjxoEGZh7RhbLfq6I?= =?us-ascii?Q?Ijtd53wQ7WblIIqxBY4kxoqrgIlxQrhk5SSEZqPxst0WnZse+HgCqTwAKpar?= =?us-ascii?Q?UbMT/2eMXZICurCLnFqz/lklnZIp8RFSrGzHlV6jgBh0HH1sE69tG/mNF9q5?= =?us-ascii?Q?Ikk70//CbJjHfqW5Pwxk2LZSP3eLzE9Fc8OFt5fBzawhRfVgCTVX/DTJu5Uf?= =?us-ascii?Q?o3sTkIl27bDIXtYeni6rCusCVGmeZbqeav8viAg6dTwzDqpUHn5NoYdY6dI+?= =?us-ascii?Q?wBe0RnolC8K47IyUEt176ryQp7yq7LaENk7TTvtZtrQwQBuQgvzbnw56j/oi?= =?us-ascii?Q?Yq0muRIct8bCSVx4vHgkL+VZUn+vWTNMr9gIADOEHDWqP3MeGrp7NB4nvWdx?= =?us-ascii?Q?DPdiOeHL6jIEWPicu1LbKKKUvH7l9gj6tOA6KfEQe1QYJq9uhDKBQ1D71mg2?= =?us-ascii?Q?IV4TRKoq6LxClzgFaGFM7bRLFaLfmSXsdcRzMtr04U4TCo9x+JS7zwVHXhAQ?= =?us-ascii?Q?cLzswkSR01/2QI74NRZGwIpRp4b+VqLhfIONjzoM4DNk5ux2Z9RJVz/vAdFz?= =?us-ascii?Q?0Bt0D7pjqnsqndFlQ3DnhHftD11xfz3nCt3l02uXAx12vvnziPwqTZK3Qxml?= =?us-ascii?Q?F6VZOFFj0O7NUvdaGrHNtYpwZBcbjc4sFye5Ch3N?= X-OriginatorOrg: vivo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 19fa420f-6076-4659-15e1-08dbc873912f X-MS-Exchange-CrossTenant-AuthSource: PUZPR06MB5676.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2023 02:58:08.7287 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 923e42dc-48d5-4cbe-b582-1a797a6412ed X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: lrwlA/SuXWLjbv6cO5Qr0kT1PN5S4U6uG55/pMODy80tzj5k4o/S5NdrqpY5K+obd/c36LxHugHN6m7xveFyCQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY0PR06MB5428 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: HuanYang This patch add "lru_gen" node in mem cgroup both in v1 and v2. mem_cgroup_lru_gen_show just like global node, show lru_gen info, but always show the full info due to per memcg no need to simple output. Just like global node, per memcg "lru_gen" node can input cmd, but we no need to type memcgid anymore to select one memcg. Signed-off-by: HuanYang --- include/linux/mmzone.h | 4 +- mm/memcontrol.c | 163 +++++++++++++++++++++++++++++++++++++++++ mm/vmscan.c | 37 ++++++++++ 3 files changed, 203 insertions(+), 1 deletion(-) diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 4106fbc5b4b3..3d399ef177a4 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -553,7 +553,9 @@ void lru_gen_online_memcg(struct mem_cgroup *memcg); void lru_gen_offline_memcg(struct mem_cgroup *memcg); void lru_gen_release_memcg(struct mem_cgroup *memcg); void lru_gen_soft_reclaim(struct mem_cgroup *memcg, int nid); - +int mem_cgroup_lru_gen_cmd(char cmd, struct mem_cgroup *memcg, int nid, + unsigned long seq, int swappiness, + unsigned long opt); #else /* !CONFIG_MEMCG */ =20 #define MEMCG_NR_GENS 1 diff --git a/mm/memcontrol.c b/mm/memcontrol.c index ecc07b47e813..56385142c5b8 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -5052,6 +5052,155 @@ static int mem_cgroup_slab_show(struct seq_file *m,= void *p) =20 static int memory_stat_show(struct seq_file *m, void *v); =20 +#ifdef CONFIG_LRU_GEN +static ssize_t mem_cgroup_lru_gen_write(struct kernfs_open_file *of, char = *buf, + size_t nbytes, loff_t off) +{ + struct mem_cgroup *memcg =3D mem_cgroup_from_css(of_css(of)); + int n; + int end; + char cmd; + unsigned int nid; + unsigned long seq; + unsigned int swappiness =3D -1; + unsigned long opt =3D -1; + int ret; + + buf =3D strstrip(buf); + n =3D sscanf(buf, "%c %u %lu %n %u %n %lu %n", &cmd, &nid, &seq, &end, + &swappiness, &end, &opt, &end); + if (n < 3 || buf[end]) + return -EINVAL; + + if (nid < 0 || nid >=3D MAX_NUMNODES || !node_state(nid, N_MEMORY)) + return -EINVAL; + + ret =3D mem_cgroup_lru_gen_cmd(cmd, memcg, nid, seq, swappiness, opt); + if (ret) + return ret; + + return nbytes; +} + +static void __lru_gen_show_info_full(struct seq_file *m, struct lruvec *lr= uvec, + unsigned long max_seq, unsigned long *min_seq, + unsigned long seq) +{ + int i; + int type, tier; + int hist =3D lru_hist_from_seq(seq); + struct lru_gen_folio *lrugen =3D &lruvec->lrugen; + + for (tier =3D 0; tier < MAX_NR_TIERS; tier++) { + seq_printf(m, " %10d", tier); + for (type =3D 0; type < ANON_AND_FILE; type++) { + const char *s =3D " "; + unsigned long n[3] =3D {}; + + if (seq =3D=3D max_seq) { + s =3D "RT "; + n[0] =3D READ_ONCE(lrugen->avg_refaulted[type][tier]); + n[1] =3D READ_ONCE(lrugen->avg_total[type][tier]); + } else if (seq =3D=3D min_seq[type] || NR_HIST_GENS > 1) { + s =3D "rep"; + n[0] =3D atomic_long_read(&lrugen->refaulted[hist][type][tier]); + n[1] =3D atomic_long_read(&lrugen->evicted[hist][type][tier]); + if (tier) + n[2] =3D READ_ONCE(lrugen->protected[hist][type][tier - 1]); + } + + for (i =3D 0; i < 3; i++) + seq_printf(m, " %10lu%c", n[i], s[i]); + } + seq_putc(m, '\n'); + } + + seq_puts(m, " "); + for (i =3D 0; i < NR_MM_STATS; i++) { + const char *s =3D " "; + unsigned long n =3D 0; + + if (seq =3D=3D max_seq && NR_HIST_GENS =3D=3D 1) { + s =3D "LOYNFA"; + n =3D READ_ONCE(lruvec->mm_state.stats[hist][i]); + } else if (seq !=3D max_seq && NR_HIST_GENS > 1) { + s =3D "loynfa"; + n =3D READ_ONCE(lruvec->mm_state.stats[hist][i]); + } + + seq_printf(m, " %10lu%c", n, s[i]); + } + seq_putc(m, '\n'); +} + + +static int __lru_gen_show_info(struct seq_file *m, struct mem_cgroup *memc= g, int nid) +{ + unsigned long seq; + struct lruvec *lruvec =3D mem_cgroup_lruvec(memcg, NODE_DATA(nid)); + struct lru_gen_folio *lrugen =3D &lruvec->lrugen; + DEFINE_MAX_SEQ(lruvec); + DEFINE_MIN_SEQ(lruvec); + char *path =3D kvmalloc(PATH_MAX, GFP_KERNEL); + + if (unlikely(!path)) + return -ENOMEM; + + if (nid =3D=3D first_memory_node) { + cgroup_path(memcg->css.cgroup, path, PATH_MAX); + seq_printf(m, "memcg %5u %s\n", mem_cgroup_id(memcg), path); + } + + seq_printf(m, " node %5d\n", nid); + + if (max_seq >=3D MAX_NR_GENS) + seq =3D max_seq - MAX_NR_GENS + 1; + else + seq =3D 0; + + for (; seq <=3D max_seq; seq++) { + int type, zone; + int gen =3D lru_gen_from_seq(seq); + unsigned long birth =3D READ_ONCE(lrugen->timestamps[gen]); + + seq_printf(m, " %10lu %10u", seq, jiffies_to_msecs(jiffies - birth)); + + for (type =3D 0; type < ANON_AND_FILE; type++) { + unsigned long size =3D 0; + char mark =3D seq < min_seq[type] ? 'x' : ' '; + + for (zone =3D 0; zone < MAX_NR_ZONES; zone++) + size +=3D max(READ_ONCE(lrugen->nr_pages[gen][type][zone]), 0L); + + seq_printf(m, " %10lu%c", size, mark); + } + + seq_putc(m, '\n'); + + + __lru_gen_show_info_full(m, lruvec, max_seq, min_seq, seq); + } + + kvfree(path); + + return 0; +} + +static int mem_cgroup_lru_gen_show(struct seq_file *m, void *v) +{ + int nid, ret; + struct mem_cgroup *memcg =3D mem_cgroup_from_seq(m); + + for_each_node_state(nid, N_MEMORY) { + ret =3D __lru_gen_show_info(m, memcg, nid); + if (ret) + return ret; + } + + return 0; +} +#endif + static struct cftype mem_cgroup_legacy_files[] =3D { { .name =3D "usage_in_bytes", @@ -5172,6 +5321,13 @@ static struct cftype mem_cgroup_legacy_files[] =3D { .write =3D mem_cgroup_reset, .read_u64 =3D mem_cgroup_read_u64, }, +#ifdef CONFIG_LRU_GEN + { + .name =3D "lru_gen", + .write =3D mem_cgroup_lru_gen_write, + .seq_show =3D mem_cgroup_lru_gen_show, + }, +#endif { }, /* terminate */ }; =20 @@ -6831,6 +6987,13 @@ static struct cftype memory_files[] =3D { .flags =3D CFTYPE_NS_DELEGATABLE, .write =3D memory_reclaim, }, +#ifdef CONFIG_LRU_GEN + { + .name =3D "lru_gen", + .write =3D mem_cgroup_lru_gen_write, + .seq_show =3D mem_cgroup_lru_gen_show, + }, +#endif { } /* terminate */ }; =20 diff --git a/mm/vmscan.c b/mm/vmscan.c index f59977964e81..4da200cda0b9 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -6072,6 +6072,43 @@ static int __process_one_cmd(char cmd, struct lruvec= *lruvec, unsigned long seq, return err; } =20 +#ifdef CONFIG_MEMCG +int mem_cgroup_lru_gen_cmd(char cmd, struct mem_cgroup *memcg, int nid, + unsigned long seq, int swappiness, unsigned long opt) +{ + int err; + struct lruvec *lruvec; + unsigned int flags; + struct blk_plug plug; + struct scan_control sc =3D { + .may_writepage =3D true, + .may_unmap =3D true, + .may_swap =3D true, + .reclaim_idx =3D MAX_NR_ZONES - 1, + .gfp_mask =3D GFP_KERNEL, + }; + + set_task_reclaim_state(current, &sc.reclaim_state); + flags =3D memalloc_noreclaim_save(); + blk_start_plug(&plug); + if (!set_mm_walk(NULL, true)) { + err =3D -ENOMEM; + goto done; + } + + lruvec =3D get_lruvec(memcg, nid); + err =3D __process_one_cmd(cmd, lruvec, seq, &sc, swappiness, opt); + +done: + clear_mm_walk(); + blk_finish_plug(&plug); + memalloc_noreclaim_restore(flags); + set_task_reclaim_state(current, NULL); + + return err; +} +#endif + static int run_cmd(char cmd, int memcg_id, int nid, unsigned long seq, struct scan_control *sc, int swappiness, unsigned long opt) { --=20 2.34.1 From nobody Sun Feb 8 08:46:40 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BEBC9E95A91 for ; Mon, 9 Oct 2023 02:58:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345066AbjJIC6Y (ORCPT ); Sun, 8 Oct 2023 22:58:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34246 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345053AbjJIC6U (ORCPT ); Sun, 8 Oct 2023 22:58:20 -0400 Received: from APC01-TYZ-obe.outbound.protection.outlook.com (mail-tyzapc01on2123.outbound.protection.outlook.com [40.107.117.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5FD62AC; Sun, 8 Oct 2023 19:58:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SrMhyXzJgSQKTfbEHQN0GGqkAE24OLUPGzhVtE00ciguUOLO5b7g48KV50ERw55Vr8e6C6EUsM2Z8XK6Ncs11yxAVHYCRG9h61WwtKvmEbWYYxU09ykMqpHQ3I4cb0trIncHXKxYSn1C/VrGIIEshXkQ5nUhdtuWw/fitxjIR67hent9/Q+qGKwdIWyaWwzKsWLBlrry4j1uNGeOqI0oG9gynd8E1z28GY5dI42078X2ogUI1HTJ+w0fUFdP64jmCRkrj1xFURCCJ8RZQuw6LTLA6WlJ2o5bSeT4BkBs8pV301LycNOEEA3PG48zIluaLH/6PSbH6Vf0FIW6rXbPlg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+HZcHFkOqT7M+sC0RLKzaw1ViPr/hgsujAmsPaB8Jnk=; b=VuTSwXSKwACY0NdAxJP1iE1fwVMvMjRXquXHCt49LFVbD5O1MQh77ANhROWOofJArfvGy81iAlrLKCLNt5O6MwJjU0jdONwmpSJ1Ha7ZFLIyVAA720h6578hMohFD84qtw3LIxfzTzv1klpwRUoh+c94c8RcKShaK4QZJZC68AW6TkNDTri7/jaPue0JYdfI5P+cjh1FLuxBQ3DOeKiBz+3/KpTNdRUqfKaAHN9csMF8VCQqM3z94QoggojZrW72L+neDqP8jLo2ihjSZiQmK9ceIuqa2G0FiyKpF/b+pc0gKfNC7zBODBCEl/29a0W43OZnlITe4yYE6//izpm3rA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vivo.com; dmarc=pass action=none header.from=vivo.com; dkim=pass header.d=vivo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vivo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+HZcHFkOqT7M+sC0RLKzaw1ViPr/hgsujAmsPaB8Jnk=; b=cXFO9bf+HM7seEASd+FbR0+cmv5kCcRwlHXS5PcaHH+MK+gzgz3WQOc4jQornUTGYvBccoy2cGrQqIXJEp9g7KdgVLQ+sfiluilTzD6f2uoJUm+87iZ5Fn5+GXyN3hYVaLruB7L4rZ+5qA1Z9o6CT+mBYQ7rqanoVCFjZOxpKX/Bfd2njLwJQHBx00Ik+MaxV2rJzjquRX2n1MRmtmF4z+CCuGYGo75hhLQJWVcv4WmE5yo32R2R777KS5595YaomVowtpsuKLRBDNe9L1f6HouFTOWHDFFFs4OEBjYAVw5ZO827vX8iWx6CydV4lrGNDIl5xtcF70GX0H/IlIV69A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vivo.com; Received: from PUZPR06MB5676.apcprd06.prod.outlook.com (2603:1096:301:f8::10) by TY0PR06MB5428.apcprd06.prod.outlook.com (2603:1096:400:219::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.36; Mon, 9 Oct 2023 02:58:15 +0000 Received: from PUZPR06MB5676.apcprd06.prod.outlook.com ([fe80::40ac:5701:4617:f503]) by PUZPR06MB5676.apcprd06.prod.outlook.com ([fe80::40ac:5701:4617:f503%4]) with mapi id 15.20.6838.033; Mon, 9 Oct 2023 02:58:15 +0000 From: Huan Yang To: Jonathan Corbet , Andrew Morton , Johannes Weiner , Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Yu Zhao , Peter Xu , David Hildenbrand , "T.J. Alumbaugh" , Axel Rasmussen , Ryan Roberts , Kefeng Wang , Suren Baghdasaryan , linux-doc@vger.kernel.org (open list:DOCUMENTATION), linux-kernel@vger.kernel.org (open list), linux-mm@kvack.org (open list:MEMORY MANAGEMENT), cgroups@vger.kernel.org (open list:CONTROL GROUP - MEMORY RESOURCE CONTROLLER (MEMCG)) Cc: opensource.kernel@vivo.com, Huan Yang Subject: [PATCH 3/3] mm: multi-gen LRU: add per memcg "lru_gen" document Date: Mon, 9 Oct 2023 10:57:22 +0800 Message-Id: <20231009025726.5982-4-link@vivo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231009025726.5982-1-link@vivo.com> References: <20231009025726.5982-1-link@vivo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI1PR02CA0011.apcprd02.prod.outlook.com (2603:1096:4:1f7::19) To PUZPR06MB5676.apcprd06.prod.outlook.com (2603:1096:301:f8::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PUZPR06MB5676:EE_|TY0PR06MB5428:EE_ X-MS-Office365-Filtering-Correlation-Id: 0a7df4b4-6a1c-477c-61f0-08dbc8739524 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DxnATBr2HZjW6XD4NZD2xnRfct1Z4NI+HuINWDvcpWjOR9QP7l2YwusAJsXR1a3RcaQatlO0aUEg3UlYua89IKnCyNPQK1BlWF4UEPt79P+lEVh8JujBfaV4Tnaj/fqx+u+yHMb/zrOPG7nczB/8Gl8alArTKkUcA0nfnCqUawnYXJKeJuU4Clan0u4/Bg9b8ttfLyXybgRVuBTJt4ub8UATR5sC0rIQy2BlBK3Q331u2GZRDXX6tfmcEZPMVbhjChp97i4SJF+ieIp7Lq/vX9gdkrLnd3vqJ9FJ6LatJsIRAfHmOuUQVsEKFlJcp3BM656oUN8mWwrvVFkjgxvH6o1zMYhTrU6nPMI0gZ1p//bcDntRcY6ifc1VdKbX8iuDML/j7Qv6hXY4+IccQRvltCAOlZU2wZt+qtXb/CPm3PO3iKHiUXJm49NE1POflrwULGwvFy1T2l3SX+8w9iKBTw5qhwABLqVSe2MjEJoJfz8AueBfd5jYjzu639+rEg0DylTKfSGkALdb2vaeyqzCMaNudr7iI/54B+t1/BkkKhQvuE6cm5bwvTTOhwIgzCQ12e6GIUKezWvFkTBmPti2A2XoXtmmgaKZsfQZrshARlyR/WHnD4B0uGGxwC48AMyqorwgLNlmF1CxVr7gdZ7RLg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PUZPR06MB5676.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(346002)(39860400002)(136003)(396003)(376002)(230922051799003)(64100799003)(451199024)(186009)(1800799009)(52116002)(1076003)(2616005)(26005)(478600001)(6506007)(6666004)(6512007)(107886003)(83380400001)(8676002)(7416002)(2906002)(8936002)(4326008)(66556008)(110136005)(66476007)(66946007)(6486002)(5660300002)(41300700001)(316002)(38350700002)(921005)(38100700002)(36756003)(86362001);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?EFWR8ssilKDiPIhwUoaaZuV7gwfB+048IPFq+wvEa9D0w+zHuF16m7HzSk4R?= =?us-ascii?Q?5cMk/AGw2Rz4zLYOeZNI6PSHF5X7faNrrk9iCOkUmHMUN1gXRfbHL2I/zlOd?= =?us-ascii?Q?5gAzUzDWETVNiG5oEqKaH8bZTfZW0eyZCtRyGmr72wWwsO30RuQ91zVRCgt6?= =?us-ascii?Q?YAJCdNW2Bq7U55eiBrBHm0e/3vLcw7JaSuu0U2aAR6teGAZKjnqy2mWP1OKn?= =?us-ascii?Q?IkyHizZo1OycYVCh7WcrX+qEYJvrXGTYneriikzD69Uht+Up+O1wdR+ZE06i?= =?us-ascii?Q?26W+qt4CbsMfvAjnVV/51wwnsf58Jy9nrmbQNQSm9rWqbyIaz3UMxlg79lC9?= =?us-ascii?Q?tHHGQ8wYZRGPikNnARehpOJsviP9bg9C4i1j1PBi0EwJ7jKEBBkciTvbBpXY?= =?us-ascii?Q?XxtTlJ0B4iyCs+EqVT7o0WqbpeCOMELG8ArTOMevxnBbIRf5qgIbO5oAQy2a?= =?us-ascii?Q?dkoUGz/fBpXXbz4wZkn9lZvVWHYCHgj2aS2myUk/D5OECTLGRu/PtnddLp1l?= =?us-ascii?Q?O1cjUiDqyI0OmpW9i7UGo7QzCdC/EwAF5xezQG5Tw2YEmCBmVXiJ+93sDqWe?= =?us-ascii?Q?Tpw1DDtTVBoZtdm3O2ToXtOSxRmIhgLCvCZCKcW2+b5X2su04Ic0A9wfSoLv?= =?us-ascii?Q?mJw83sbbgCjzedOGLGhl3s/XyXdb3dsCzsj1cYNUNl+vWFyIhWkrZv/dZXC9?= =?us-ascii?Q?PFYB3q2JiocUIb3eOF2vy5X+pjiKYxWHddXDEbNlrmVI32TjGyuflMc9uno4?= =?us-ascii?Q?I6MnM+BPfaFRAlcAGyFyJe10cf+4KjIeW+yVmvarNkwQgmaSfhe7J4RTdPDy?= =?us-ascii?Q?+mJKw7wIA++j5YJ9gWWTvyjRtO7XUarnmMjjh1HC7fLI7gRvlIl1Jbv0elpn?= =?us-ascii?Q?W/7TG1tufc8EgO6R7IiaEYO1Uv1qCtLhyJ3fvLm2dC6O0ZkZL1WE1FF22HZd?= =?us-ascii?Q?XUqBOiIyzLD2KRhUaNs74idSGTLX6p/l3V7ab1zwqXRds+vZta3EV3pXfA7b?= =?us-ascii?Q?x2L2p2at5I0yyGKgFxph2J8J39o/WEelcRZ66p4H+cZDIkvxpfmfkFfYwsQK?= =?us-ascii?Q?+LDHkNORjUo43izSLF3qZL1NQnSt6CmuxowWQFUSazTAOCjiUX6EKmB2YDxr?= =?us-ascii?Q?s3slL9mS5qAXA2Wr3lA60hLDRXquAxAG5WZv3mDUfelz5it12Qy92sPeaRsh?= =?us-ascii?Q?VipkNXspwv2sBANBws6zmtqLoIWIgJLvrvduA+O14PEEc2EQsd7FThsfXr/J?= =?us-ascii?Q?4BBMXnCvvwfzzrmeBYZAgZj/z+sM1e14dBhhvaaFRHyDUTBUJ72F5v5iXwvQ?= =?us-ascii?Q?NWFOUwy7z2gIiDhTLi1e9suIRxcWSZa40I2yLDULW4LQ5yny0tL5y0rf5Ul9?= =?us-ascii?Q?GSwXIdesVIrP9G8bxToefGBRrBOVv7NPGZ4uXdXhr1AvsiCPHAZXOi9mnjNC?= =?us-ascii?Q?vpKRuLjfrZjLX10MC9hIu9QU6q2704iPPFInvuLN14eARtfECNT/Pxg6jDQL?= =?us-ascii?Q?Kp9U8BoWtVV6pIVjLtuBwAVO0JREYJL8eTUTxPsHzEw5KCunRpAY3BeW3DPM?= =?us-ascii?Q?vzIQThs/SfgwTmyOppGS1AZ/L0TCWxQSc/K2n6gy?= X-OriginatorOrg: vivo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0a7df4b4-6a1c-477c-61f0-08dbc8739524 X-MS-Exchange-CrossTenant-AuthSource: PUZPR06MB5676.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2023 02:58:15.4293 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 923e42dc-48d5-4cbe-b582-1a797a6412ed X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: a5UhB9ghhcnWggGZyodKQuqW6SwKHQJCxTrk0I0ZPRdvTu2yFyzwDpR93Ba/uaG0nhPv3zKxg3GlZe6k+BAdeg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY0PR06MB5428 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: HuanYang change multi-gen LRU document. Signed-off-by: Huan Yang --- Documentation/admin-guide/mm/multigen_lru.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Documentation/admin-guide/mm/multigen_lru.rst b/Documentation/= admin-guide/mm/multigen_lru.rst index 33e068830497..078056b8cc7c 100644 --- a/Documentation/admin-guide/mm/multigen_lru.rst +++ b/Documentation/admin-guide/mm/multigen_lru.rst @@ -160,3 +160,13 @@ cold pages because of the overestimation, it retries o= n the next server according to the ranking result obtained from the working set estimation step. This less forceful approach limits the impacts on the existing jobs. + +Per memcg lru gen node +----------------- +In each memcg's dir, it contains ``lru_gen`` node. you can type upon cmd +without input memcg_id to do the same thing. + + ``+ node_id max_gen_nr [can_swap [force_scan]]`` + ``- node_id min_gen_nr [swappiness [nr_to_reclaim]]`` + +For show info, memcg's node always show the full info. --=20 2.34.1