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 38D56C47077 for ; Tue, 16 Jan 2024 20:32:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C86516B006E; Tue, 16 Jan 2024 15:32:36 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C37A06B0099; Tue, 16 Jan 2024 15:32:36 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AD74A6B009A; Tue, 16 Jan 2024 15:32:36 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 9B1526B006E for ; Tue, 16 Jan 2024 15:32:36 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 7034E1A0B5A for ; Tue, 16 Jan 2024 20:32:36 +0000 (UTC) X-FDA: 81686322312.09.2DB3F4F Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf03.hostedemail.com (Postfix) with ESMTP id 3866920018 for ; Tue, 16 Jan 2024 20:32:33 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=CUbuRYh8; spf=pass (imf03.hostedemail.com: domain of sj@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1705437154; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=1WjpddrjApJBYvfgOxi0U22g31ya8jnE2ZQ2lzrMRDU=; b=1oHz4DS+MTQgx8/ywrkmlA/ll72LSckgTbwm9QO3ARRrolxiBlaGUy8JKhUdJyh1LeE2cz CKQ6gc8TxHCHJpxnfznjjzh0uMe3THnnrPcB0KhCkB/iEbmPB9rhjdEkKyBGHtphEMyIbg XTJIVDi9hXh4c9Sa3YqyeYudRUtjwCM= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1705437154; a=rsa-sha256; cv=none; b=C7ciFX1loPkcUGXb0Vfttk5U8Qod/axbIC+FWZ1sLYZl4kvh8zNdVjwW33WtSoPP6PYdjT r1KQdtJjhVrJX3fuUyA1pZ6NhNf+pdUUKlksnG67N5cWR7p9sS640Gn5lGqOwD8yQKrTY5 bp3yOeCh1DbeHlOvQjLtlV/zvxY3Ebw= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=CUbuRYh8; spf=pass (imf03.hostedemail.com: domain of sj@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=sj@kernel.org; dmarc=pass (policy=none) header.from=kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id C34E6CE1AE0; Tue, 16 Jan 2024 20:32:28 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 92320C433F1; Tue, 16 Jan 2024 20:32:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1705437148; bh=hTVTYscRjGrplcweWIL5zwVPwqAVm2ZnNC28xvD/AAA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CUbuRYh8qWs/aoDu8zwjxoFVWQk7B9X6vMJolSIJKZJJX4pF2rkKbirY916s8ps3n loFL/xADLpsXMdrTQTjUdPAECxdclqNSwVS5G6Hf8XH+tWy6qLXZF2meZiU1Nf/2FX i9pTmIRzEzBIoNECJqKpo9yyihDH9UdCiScCrLSxs3/YC3OKS56sS+BHJ6aDTgMQpg G42Uz3QxEMx8bjyhO/7T0ne98T+hazFwRLX0gpQJF8oX7b0pNUxVvC7lsbeyb96YPz 9GqsaxHskd8p3fN7zMOhi7w2ZFRfvXxNwGYU5ZtR27f76GXnW0kaWxDfwhoXzGCINT 0dTy65a/oIZWQ== From: SeongJae Park To: Honggyu Kim Cc: sj@kernel.org, damon@lists.linux.dev, linux-mm@kvack.org, linux-trace-kernel@vger.kernel.org, linux-kernel@vger.kernel.org, kernel_team@skhynix.com, akpm@linux-foundation.org, apopple@nvidia.com, baolin.wang@linux.alibaba.com, dave.jiang@intel.com, linmiaohe@huawei.com, lizhijian@cn.fujitsu.com, mathieu.desnoyers@efficios.com, mhiramat@kernel.org, rostedt@goodmis.org, surenb@google.com, yangx.jy@fujitsu.com, ying.huang@intel.com, ziy@nvidia.com, Hyeongtak Ji Subject: Re: [RFC PATCH 3/4] mm/memory-tiers: add next_promotion_node to find promotion target Date: Tue, 16 Jan 2024 12:32:24 -0800 Message-Id: <20240116203224.52877-1-sj@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240115045253.1775-4-honggyu.kim@sk.com> References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 3866920018 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: e5inxj86k3d8q78dxhcomam8131k97wa X-HE-Tag: 1705437153-854779 X-HE-Meta: U2FsdGVkX1+jD187YS74c3dLXnGOlMRj8/o+aMsxln8/mHHc2NBxsf/EY8xFt4pt7HagV0GhLJUMjLNsTKpJ/Ysbemiq8Qiqsx/xI/wUNhIaHEo1iGRd2KqtBCC5E2IhkjDVFx5H/148OKI3/querpJ0cpfpbVJWm70MzhVvg4aOrIQvxHwOI26fazUXHmz9zUQS6LKkb2sWrPNJ5viUnHdDnWuxCBJB2/3D7v1tfbxF480hecKtE2U3zU2WZs/eQpXTRLP8iZsDYCb5s5gJFQ9d29yIzE9y8wxV+fYdQShka3a//cuIYOrlDvs/DGWI1/lmRgihzPK14uNf5mO4RCkz4C8sRfcpa/dFCxHBwXfpS42vqCb+r4YYZN1ffbgI3Clwp+htZvgVacqtu7qp1v3/vvzv9yYzVK4qLZfxBTjpMUxxlLvs0RIoEoSvgLVgu7LcC3M4+g/NBdwvLV+OKPsD4lXtRkZwYSVITtFuXUUlhvQjFRjiEiq79mFl2yH/OzJI7li8Blio8wP2lQwvAyDUC3enpbxQimFXqocbE0bqgoXAsPBB6UA0Yq39K93Byedj9A+eIVXci3PHfk1FALW/2yOjTJSC02NZDo5W8tCAUfTmb4Hwjh1ZK/NcHePcg3FGR1KToigxDjYHTQASMCxGCSv/lcBH0k32OdQIbr3gR2Dnvd5ycBmJI/li/KL5fOpTSuRteXSv+8IETsvPB89ctJkS4lcyWENLYGzY0VxIEGivt1jsDDmEs23CqC24v5dx+rksUmtcvGkFnlEZudF1wdLM0J1JF6B0ksZ2/z7OXR+04SnZiiHMUG+q9vrRw6DB3I0o5QH0SV6CAPaRvOZAQn9PoE2rtTdw8R7wKIRsIjeFMt1O3SDe/9hvOolO/+76k6fywtmOU8ZVjzC2lAu3buLshpoVlG+WtKtLkgmoSRl9Pm/BpIrPXNQ5/OpDrhzQ6Rs00H/jfrsueas 6IVV2/kD gnAvlwREvE/W/JZ8882ST3MhDAZBRNVLLl4UxzVydjvdz2UDDFDZ9ih1dgotHfnPHRQcxzKDsNtS26yjdAlIdCj16dOrcAQpcHxkO3gsnvWDB79+2kkTpKCJ9VBfXNDqvnsSk1jD8Y8N34GfRNo7SKdQwVBSXTzASGqbPwJUKlLqzrQspvReTuAavdtnkzw6nWhPlIw34EN4E5dcSuZ8dtGHmCxE8kUcRzQEWcF5QlcRJRh1R4gy3eXsx2h9cLBVWvwos+EK/Iso9grrX6TIkwHOSw+cHulDq3edKclLpEVwmLGaH680Vl77O0nlaPon1yLE3 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: On Mon, 15 Jan 2024 13:52:51 +0900 Honggyu Kim wrote: > From: Hyeongtak Ji > > This patch adds next_promotion_node that can be used to identify the > appropriate promotion target based on memory tiers. When multiple > promotion target nodes are available, the nearest node is selected based > on numa distance. > > Signed-off-by: Hyeongtak Ji > --- > include/linux/memory-tiers.h | 11 +++++++++ > mm/memory-tiers.c | 43 ++++++++++++++++++++++++++++++++++++ > 2 files changed, 54 insertions(+) > > diff --git a/include/linux/memory-tiers.h b/include/linux/memory-tiers.h > index 1e39d27bee41..0788e435fc50 100644 > --- a/include/linux/memory-tiers.h > +++ b/include/linux/memory-tiers.h > @@ -50,6 +50,7 @@ int mt_set_default_dram_perf(int nid, struct node_hmem_attrs *perf, > int mt_perf_to_adistance(struct node_hmem_attrs *perf, int *adist); > #ifdef CONFIG_MIGRATION > int next_demotion_node(int node); > +int next_promotion_node(int node); > void node_get_allowed_targets(pg_data_t *pgdat, nodemask_t *targets); > bool node_is_toptier(int node); > #else > @@ -58,6 +59,11 @@ static inline int next_demotion_node(int node) > return NUMA_NO_NODE; > } > > +static inline int next_promotion_node(int node) > +{ > + return NUMA_NO_NODE; > +} > + > static inline void node_get_allowed_targets(pg_data_t *pgdat, nodemask_t *targets) > { > *targets = NODE_MASK_NONE; > @@ -101,6 +107,11 @@ static inline int next_demotion_node(int node) > return NUMA_NO_NODE; > } > > +static inline int next_promotion_node(int node) > +{ > + return NUMA_NO_NODE; > +} > + > static inline void node_get_allowed_targets(pg_data_t *pgdat, nodemask_t *targets) > { > *targets = NODE_MASK_NONE; > diff --git a/mm/memory-tiers.c b/mm/memory-tiers.c > index 8d5291add2bc..0060ee571cf4 100644 > --- a/mm/memory-tiers.c > +++ b/mm/memory-tiers.c > @@ -335,6 +335,49 @@ int next_demotion_node(int node) > return target; > } > > +/* > + * Select a promotion target that is close to the from node among the given > + * two nodes. > + * > + * TODO: consider other decision policy as node_distance may not be precise. > + */ > +static int select_promotion_target(int a, int b, int from) > +{ > + if (node_distance(from, a) < node_distance(from, b)) > + return a; > + else > + return b; > +} > + > +/** > + * next_promotion_node() - Get the next node in the promotion path > + * @node: The starting node to lookup the next node > + * > + * Return: node id for next memory node in the promotion path hierarchy > + * from @node; NUMA_NO_NODE if @node is the toptier. > + */ > +int next_promotion_node(int node) > +{ > + int target = NUMA_NO_NODE; > + int nid; > + > + if (node_is_toptier(node)) > + return NUMA_NO_NODE; > + > + rcu_read_lock(); > + for_each_node_state(nid, N_MEMORY) { > + if (node_isset(node, node_demotion[nid].preferred)) { > + if (target == NUMA_NO_NODE) > + target = nid; > + else > + target = select_promotion_target(nid, target, node); > + } > + } > + rcu_read_unlock(); > + > + return target; > +} > + If this is gonna used by only DAMON and we don't have a concrete plan to making this used by others, I think implementing this in mm/damon/ might make sense. > static void disable_all_demotion_targets(void) > { > struct memory_tier *memtier; > -- > 2.34.1