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 23658C46CD4 for ; Wed, 27 Dec 2023 14:12:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 352896B0075; Wed, 27 Dec 2023 09:12:29 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2DA386B007B; Wed, 27 Dec 2023 09:12:29 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 130FB6B007D; Wed, 27 Dec 2023 09:12:29 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id EA1136B0075 for ; Wed, 27 Dec 2023 09:12:28 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id AFB8B120708 for ; Wed, 27 Dec 2023 14:12:28 +0000 (UTC) X-FDA: 81612788376.09.C3C930A Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.202]) by imf15.hostedemail.com (Postfix) with ESMTP id EDC7BA0002 for ; Wed, 27 Dec 2023 14:12:26 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="zMVZ/S7U"; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf15.hostedemail.com: domain of 3yjCMZQgKCI8316BxH07z77z4x.v75416DG-553Etv3.7Az@flex--kinseyho.bounces.google.com designates 209.85.128.202 as permitted sender) smtp.mailfrom=3yjCMZQgKCI8316BxH07z77z4x.v75416DG-553Etv3.7Az@flex--kinseyho.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1703686347; 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=GfH+CZqEFUwjjngghpK/lQYceBtob8M1ismEZxIq3pA=; b=yXoAxpqbtweXUJoNuCg46wQSgOBvZLrX74YsGkfyowre7toIqEdxHtKMM1rndEY16GNlKV 6LBIs5qVBdWruBkE6zBz/aOnjNtTfSXEkXIEKMKoGtCgb11jxOM1Nykwq7LKaPSiZoAgOl HdYt3ZSiES1e5vXEadqgJ3qhXSccVMA= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="zMVZ/S7U"; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf15.hostedemail.com: domain of 3yjCMZQgKCI8316BxH07z77z4x.v75416DG-553Etv3.7Az@flex--kinseyho.bounces.google.com designates 209.85.128.202 as permitted sender) smtp.mailfrom=3yjCMZQgKCI8316BxH07z77z4x.v75416DG-553Etv3.7Az@flex--kinseyho.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1703686347; a=rsa-sha256; cv=none; b=j8aWvO7jJDKkclPcWWWY1RQ6ptcP3vKL0FgDSEeWAnH41yfqvXC6KsTzxrCMNzsY3SNnn1 eAYRNw3KvLHlt8MzZGLfoUMomytGwNOBLL67EiVkW2OX0CLOy2ykV6XrRsNu4qx9fUXjKv yaU9v31DZww9KlHoYpNvWBnJqgEaHGQ= Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-5eb6dba1796so49055777b3.1 for ; Wed, 27 Dec 2023 06:12:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1703686346; x=1704291146; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=GfH+CZqEFUwjjngghpK/lQYceBtob8M1ismEZxIq3pA=; b=zMVZ/S7UoqUzi54yzlQ/qJJOwX0T5L+Q0e9BPFLTpyE9Oj68YZ5fXg55pi2j7RcCHs fVLZDEFLqOxvfeMPK0y98RItSzb3LR1EdYJ97ZYZvM9L9i4mO/r8ANy9/2+uo+oITCOv lj/LqNQxtUGWTd/elf+EKoScXnuyLJp7rmCxY90TS5n4VXN9At36YqbFUyeBTDQ04maW zfi8Mi9iK19GUbQ91Jek3Lv3UYeRu+yygHUsZh5Gj1+ALjRPDyyFYPxTklVgWzhKGlqb Ja4E9KMIVaQCpdthyQg4ri4WEwe582f3/GBitfbN5vPU2U4Ptu5KE3LoQC+36Pb/1nUB jh8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703686346; x=1704291146; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=GfH+CZqEFUwjjngghpK/lQYceBtob8M1ismEZxIq3pA=; b=VszSR+RZ5i1IRMP8ur0zVHxdyeoj9dvyyK3RLsYyE703yIek8EH3NXlClrtuUDTw6K Fkz4lISov3stLbhutmECpoh3Lo0+ZDLH+ncyhdy1ZzQrPqNjyqMXT1HJoDtYwFyw1N9/ wMBoSqfKYMA6f4RLJe1KnaOHHmCaUkd5DICP9+IEEbbW0ONZUSBHSeAoHeNPqKsRo8zY TshfmHdUo71Gb0gYqPhjZMicLBVOqH0RBT0tlqtvGm8fJa4q3rD4PE2qBjsjmTzahDiP pmeMk8C6u0bjOXiEIB+1b6/bpxW/T4X3nZ/Urgrmf86kL6JV7+AI4AIzid44bwQTBwd3 XkCQ== X-Gm-Message-State: AOJu0YwTG7n7sOGU53i8NFYDVxXj+OkkaUGo/MOUqcXQfm8vOO5chIul 8VpEuOqXfLhoFc0mqvt/QpTXbTX/DfLmHCCqKNtl X-Google-Smtp-Source: AGHT+IEyZp0Uu7Dp2IA7hGhIiABvg99cDUh5GoB6ry/QWIwubymQrtCvBqb/V1H4EEoV10i1b0h3tGu1AJTnyQ== X-Received: from kinseyct.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:46b]) (user=kinseyho job=sendgmr) by 2002:a05:690c:c81:b0:5d1:7706:b886 with SMTP id cm1-20020a05690c0c8100b005d17706b886mr4445060ywb.0.1703686346054; Wed, 27 Dec 2023 06:12:26 -0800 (PST) Date: Wed, 27 Dec 2023 14:12:03 +0000 In-Reply-To: <20231227141205.2200125-1-kinseyho@google.com> Mime-Version: 1.0 References: <20231227141205.2200125-1-kinseyho@google.com> X-Mailer: git-send-email 2.43.0.472.g3155946c3a-goog Message-ID: <20231227141205.2200125-4-kinseyho@google.com> Subject: [PATCH mm-unstable v4 3/5] mm/mglru: remove CONFIG_MEMCG From: Kinsey Ho To: Andrew Morton Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Yu Zhao , Donet Tom , "Aneesh Kumar K . V" , Kinsey Ho Content-Type: text/plain; charset="UTF-8" X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: EDC7BA0002 X-Stat-Signature: u1fqa11rguiugcrbufxzwk47fzdppyoj X-HE-Tag: 1703686346-752360 X-HE-Meta: U2FsdGVkX182kilzR03EXmCiqp5JLySvMaZmy6WV35YDAXglLNdHA2KqcvZkz1tmF5waKLf7WzffRD+DlJjysfrbXNSG8ugA2aI5rnSiS8U/0Sv6D2bbobYUU4fHsApKhiyHal4bYXEk8r1cIvVQzEJJrrSYcGgaC4f8hckimSEHsAhpDK1MRHTZU1QnTYcrXqsG0/V84jPKHFTcvlYbbuUTBNZ1JOJ+m+sNtV6zANqTx1fWlr11WfsaydU3sJtIPR6k18qiF8PLHHX5CIl25geVDkR6IrD6Q0PZgbaDO78EPPRvLysfhWpljaxB/6KNc95hkgZ5a5o9xdKiH5feaZdq/BaUQOMxt2pNKTZhbigby9Prqx0yF9WdYNa+TBzEgJpWxEbygoNxJeyoqoZVNT/p1eHk/PMbvYMmoTHtIbqbJON9MwZn/LyhIpFY5QaQDFYI9Fw91ExWP01MW3ThHpl/HME09ohow4+9IZItuBRj0gQKSt7eKAESnGxcEpnakOejsOw5FVnMC5XSTaMT3lNBOZEfSO6EZEpZVd14jsUD4dFoGUCPCT0L0zBkB0hkI+NiBo4qg/tjFTqcTfLyeljRNc8n/a8QNsGAy7qYNVWDU1Tr30WJDSsC1autvxfS8G/Y10HGVK4ifLQa10ueljd3yyBSuf11mVACEaEm/kZa2AtB1GpF3dJZaRuk2bxpgjOiDnVGfe64Q2q3JkqbxgMapLLQpbeyPpcYib6k8Z+uf82NcBLejRF3YS+iJFY4MbRc/JklYK6UbWuM+p4x/zFiIWhJoH6QoE8qkKyfqgBH9b6WQ4hZxh+wfk3UrzjGvC6Sp6o5w3E3I8lZGefXZtXB3ll3MuHUS4LBEmzqMx03RI0mRG1sNIfPc+rc/pUy6NDZXC6oPa3eXR5TNAO3lQX9Akd+BFQ9GLUFP1FMJoyHlwYZUs6S8BI7XP2uTgs2OGQBfOF1WnPn6WFYt09 im+12AZ9 rn8FGDqvXeMD0VqnXHs4As8x6jgktZgqYO5egryiQ0+E1oNJshvDRW2C2YTmg0lp8+4nJJehPZr+Vtmj/Q3xexYJ9xByaRIvrhu9SQw+ZWMpSl89YTLgEqSr+IuEbk4Z8cyjJAwSusI9apvtXPNBzKQzhf8OzCPlfCckbS39nvjtmmQbUsIx3ajOx2+MXCFh5x4WGw3+RDCvqTJmkqbZk9Zq2A1x2ZTIEMs5ngDGzxMcjWnRpTkzpEapX+TljhEnU53c3Pojejf52xfZ5xa0/9Rgnq3GuC3eIVLDHWdYSl2IJo1rnJiO3eHaJ/Odp+MRqYlUsjDZfhXfHZeBD8tuum7bkUaAsW0nO4YmDReSf674NZiOCiGHo3OJ8MDzXByOk/UsWgRAiMTsiKDyLApX8Xr8WREJNO+CdOoakgq0Amak1HgI7NBbFB/qEIe24Xw8gnGXJ6HUZwX0s1KUt3UhTC6O48T7pvEa2sFMs5t7AVM48niLAPioelwLuVNwDk5ZT3BnQ0meUQ6Zmn9Ns/Rq5Culy8f4zpgxVO5gADZCfx77J1MLz101LCV9r2+T192HCwPw6uoMSyZ/gfm6YnUAHRJXjRwxJK9ezTsfgRT/JlH+kiaei0dvDWlRXQmrNtT925XzsgnD2cVG1Dju4iYLMYF+3MfSl3k4ukTgbvspW3Wa/iRLMY0CiK/ABQ+jBQYl/mkDk 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: Remove CONFIG_MEMCG in a refactoring to improve code readability at the cost of a few bytes in struct lru_gen_folio per node when CONFIG_MEMCG=n. Signed-off-by: Kinsey Ho Co-developed-by: Aneesh Kumar K.V Signed-off-by: Aneesh Kumar K.V Tested-by: Donet Tom Acked-by: Yu Zhao --- include/linux/mm_types.h | 4 --- include/linux/mmzone.h | 26 ++-------------- mm/vmscan.c | 67 +++++++++++++--------------------------- 3 files changed, 23 insertions(+), 74 deletions(-) diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 552fa2d11c57..55b7121809ff 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -1017,9 +1017,7 @@ struct lru_gen_mm_list { void lru_gen_add_mm(struct mm_struct *mm); void lru_gen_del_mm(struct mm_struct *mm); -#ifdef CONFIG_MEMCG void lru_gen_migrate_mm(struct mm_struct *mm); -#endif static inline void lru_gen_init_mm(struct mm_struct *mm) { @@ -1050,11 +1048,9 @@ static inline void lru_gen_del_mm(struct mm_struct *mm) { } -#ifdef CONFIG_MEMCG static inline void lru_gen_migrate_mm(struct mm_struct *mm) { } -#endif static inline void lru_gen_init_mm(struct mm_struct *mm) { diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index bc3f63ec4291..28665e1b8475 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -440,14 +440,12 @@ struct lru_gen_folio { atomic_long_t refaulted[NR_HIST_GENS][ANON_AND_FILE][MAX_NR_TIERS]; /* whether the multi-gen LRU is enabled */ bool enabled; -#ifdef CONFIG_MEMCG /* the memcg generation this lru_gen_folio belongs to */ u8 gen; /* the list segment this lru_gen_folio belongs to */ u8 seg; /* per-node lru_gen_folio list for global reclaim */ struct hlist_nulls_node list; -#endif }; enum { @@ -493,11 +491,6 @@ struct lru_gen_mm_walk { bool force_scan; }; -void lru_gen_init_lruvec(struct lruvec *lruvec); -void lru_gen_look_around(struct page_vma_mapped_walk *pvmw); - -#ifdef CONFIG_MEMCG - /* * For each node, memcgs are divided into two generations: the old and the * young. For each generation, memcgs are randomly sharded into multiple bins @@ -555,6 +548,8 @@ struct lru_gen_memcg { }; void lru_gen_init_pgdat(struct pglist_data *pgdat); +void lru_gen_init_lruvec(struct lruvec *lruvec); +void lru_gen_look_around(struct page_vma_mapped_walk *pvmw); void lru_gen_init_memcg(struct mem_cgroup *memcg); void lru_gen_exit_memcg(struct mem_cgroup *memcg); @@ -563,19 +558,6 @@ 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); -#else /* !CONFIG_MEMCG */ - -#define MEMCG_NR_GENS 1 - -struct lru_gen_memcg { -}; - -static inline void lru_gen_init_pgdat(struct pglist_data *pgdat) -{ -} - -#endif /* CONFIG_MEMCG */ - #else /* !CONFIG_LRU_GEN */ static inline void lru_gen_init_pgdat(struct pglist_data *pgdat) @@ -590,8 +572,6 @@ static inline void lru_gen_look_around(struct page_vma_mapped_walk *pvmw) { } -#ifdef CONFIG_MEMCG - static inline void lru_gen_init_memcg(struct mem_cgroup *memcg) { } @@ -616,8 +596,6 @@ static inline void lru_gen_soft_reclaim(struct mem_cgroup *memcg, int nid) { } -#endif /* CONFIG_MEMCG */ - #endif /* CONFIG_LRU_GEN */ struct lruvec { diff --git a/mm/vmscan.c b/mm/vmscan.c index aa7ea09ffb4c..351a0b5043c0 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -4097,13 +4097,6 @@ enum { MEMCG_LRU_YOUNG, }; -#ifdef CONFIG_MEMCG - -static int lru_gen_memcg_seg(struct lruvec *lruvec) -{ - return READ_ONCE(lruvec->lrugen.seg); -} - static void lru_gen_rotate_memcg(struct lruvec *lruvec, int op) { int seg; @@ -4150,6 +4143,8 @@ static void lru_gen_rotate_memcg(struct lruvec *lruvec, int op) spin_unlock_irqrestore(&pgdat->memcg_lru.lock, flags); } +#ifdef CONFIG_MEMCG + void lru_gen_online_memcg(struct mem_cgroup *memcg) { int gen; @@ -4217,18 +4212,11 @@ void lru_gen_soft_reclaim(struct mem_cgroup *memcg, int nid) struct lruvec *lruvec = get_lruvec(memcg, nid); /* see the comment on MEMCG_NR_GENS */ - if (lru_gen_memcg_seg(lruvec) != MEMCG_LRU_HEAD) + if (READ_ONCE(lruvec->lrugen.seg) != MEMCG_LRU_HEAD) lru_gen_rotate_memcg(lruvec, MEMCG_LRU_HEAD); } -#else /* !CONFIG_MEMCG */ - -static int lru_gen_memcg_seg(struct lruvec *lruvec) -{ - return 0; -} - -#endif +#endif /* CONFIG_MEMCG */ /****************************************************************************** * the eviction @@ -4776,7 +4764,7 @@ static int shrink_one(struct lruvec *lruvec, struct scan_control *sc) if (mem_cgroup_below_low(NULL, memcg)) { /* see the comment on MEMCG_NR_GENS */ - if (lru_gen_memcg_seg(lruvec) != MEMCG_LRU_TAIL) + if (READ_ONCE(lruvec->lrugen.seg) != MEMCG_LRU_TAIL) return MEMCG_LRU_TAIL; memcg_memory_event(memcg, MEMCG_LOW); @@ -4799,12 +4787,10 @@ static int shrink_one(struct lruvec *lruvec, struct scan_control *sc) return 0; /* one retry if offlined or too small */ - return lru_gen_memcg_seg(lruvec) != MEMCG_LRU_TAIL ? + return READ_ONCE(lruvec->lrugen.seg) != MEMCG_LRU_TAIL ? MEMCG_LRU_TAIL : MEMCG_LRU_YOUNG; } -#ifdef CONFIG_MEMCG - static void shrink_many(struct pglist_data *pgdat, struct scan_control *sc) { int op; @@ -4896,20 +4882,6 @@ static void lru_gen_shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc blk_finish_plug(&plug); } -#else /* !CONFIG_MEMCG */ - -static void shrink_many(struct pglist_data *pgdat, struct scan_control *sc) -{ - BUILD_BUG(); -} - -static void lru_gen_shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc) -{ - BUILD_BUG(); -} - -#endif - static void set_initial_priority(struct pglist_data *pgdat, struct scan_control *sc) { int priority; @@ -5560,6 +5532,18 @@ static const struct file_operations lru_gen_ro_fops = { * initialization ******************************************************************************/ +void lru_gen_init_pgdat(struct pglist_data *pgdat) +{ + int i, j; + + spin_lock_init(&pgdat->memcg_lru.lock); + + for (i = 0; i < MEMCG_NR_GENS; i++) { + for (j = 0; j < MEMCG_NR_BINS; j++) + INIT_HLIST_NULLS_HEAD(&pgdat->memcg_lru.fifo[i][j], i); + } +} + void lru_gen_init_lruvec(struct lruvec *lruvec) { int i; @@ -5582,18 +5566,6 @@ void lru_gen_init_lruvec(struct lruvec *lruvec) #ifdef CONFIG_MEMCG -void lru_gen_init_pgdat(struct pglist_data *pgdat) -{ - int i, j; - - spin_lock_init(&pgdat->memcg_lru.lock); - - for (i = 0; i < MEMCG_NR_GENS; i++) { - for (j = 0; j < MEMCG_NR_BINS; j++) - INIT_HLIST_NULLS_HEAD(&pgdat->memcg_lru.fifo[i][j], i); - } -} - void lru_gen_init_memcg(struct mem_cgroup *memcg) { struct lru_gen_mm_list *mm_list = get_mm_list(memcg); @@ -5653,14 +5625,17 @@ late_initcall(init_lru_gen); static void lru_gen_age_node(struct pglist_data *pgdat, struct scan_control *sc) { + BUILD_BUG(); } static void lru_gen_shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc) { + BUILD_BUG(); } static void lru_gen_shrink_node(struct pglist_data *pgdat, struct scan_control *sc) { + BUILD_BUG(); } #endif /* CONFIG_LRU_GEN */ -- 2.43.0.472.g3155946c3a-goog