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 6B373C4332F for ; Thu, 2 Nov 2023 03:19:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DAC528E0014; Wed, 1 Nov 2023 23:19:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D5C568E0009; Wed, 1 Nov 2023 23:19:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C247A8E0014; Wed, 1 Nov 2023 23:19:52 -0400 (EDT) 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 B3F9E8E0009 for ; Wed, 1 Nov 2023 23:19:52 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 92AB41CBB9D for ; Thu, 2 Nov 2023 03:19:52 +0000 (UTC) X-FDA: 81411559824.06.EBBE967 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.9]) by imf02.hostedemail.com (Postfix) with ESMTP id 9969D80010 for ; Thu, 2 Nov 2023 03:19:50 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=g2Pk8fDx; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf02.hostedemail.com: domain of ying.huang@intel.com designates 198.175.65.9 as permitted sender) smtp.mailfrom=ying.huang@intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1698895190; 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=1ySBylLb/ENssumzqJ7m53ZybGXvrRrspVclSfUafSM=; b=mUCc9FVyyZxuGxzkRQzBtiRxEC65JkhI9tKp8DdQoWyfHUmKVXJ5PluT8tZvT6Wq68FgYQ vsYS6G/5jQvqTUBPEehF6kq0EOlG9t3ygUp8CBg+s1lG32HEPP7II9BnaxZHEs8dIMWNlv hA7CA+Cj+7k4V9y17f/iZdkCATH/+aI= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=g2Pk8fDx; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf02.hostedemail.com: domain of ying.huang@intel.com designates 198.175.65.9 as permitted sender) smtp.mailfrom=ying.huang@intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1698895190; a=rsa-sha256; cv=none; b=DL2yyhCzvXSxaQF8n+xSA51CaMfObSLhvkVvSv+m6hTIPW/3OIQHQqW+bjspJeDhdoF41Z 80fsMgWKThaNBT7a3JDD8avZYE23+kmcJ47XG6BmYLr1swtcyKJi0Pmizkj7Wq99ZBpaQH edHEWn8CIRkZyY1KAE9ErHkVMGDPDDs= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1698895190; x=1730431190; h=from:to:cc:subject:in-reply-to:references:date: message-id:mime-version; bh=iBLPvwCSOspG+bzCGzZm2j9t2qHkZ+ra3oCn0zk86X0=; b=g2Pk8fDxhfs/YLCg5lhUiSaBV0V0RGi2wi1owyMgDpFkSd36HciqnyJN JgPxVwXtWjnl//qFpmaPPjATnwRTVaINmz5IBtxyTNXuZOfARAeRotbby WRbapGKvdkXgGrK6td/xq8EocxVFljhkCu/Ywb0UTLTlw8NguTMe9hvfW eWApI8tfE4q1WEOqlaJc0b/Zw1jO1Uuyh5pZ14+mI9XXVzHHkVhFYKByj RpSPzAmR/5uJvRbXDC5NnRBNEKQZvxwLbSdFA1Ru6T4YdbZM33iKez/z7 UyNudTFGsfGMGu3OEAAbPxrTDu0d9s8QfKFxd5jNLlUOYUSt+H5gtolrH w==; X-IronPort-AV: E=McAfee;i="6600,9927,10881"; a="7264558" X-IronPort-AV: E=Sophos;i="6.03,270,1694761200"; d="scan'208";a="7264558" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orvoesa101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Nov 2023 20:19:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10881"; a="737609632" X-IronPort-AV: E=Sophos;i="6.03,270,1694761200"; d="scan'208";a="737609632" Received: from yhuang6-desk2.sh.intel.com (HELO yhuang6-desk2.ccr.corp.intel.com) ([10.238.208.55]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Nov 2023 20:19:46 -0700 From: "Huang, Ying" To: Li Zhijian Cc: Andrew Morton , Greg Kroah-Hartman , , , , Subject: Re: [PATCH RFC 1/4] drivers/base/node: Add demotion_nodes sys infterface In-Reply-To: <20231102025648.1285477-2-lizhijian@fujitsu.com> (Li Zhijian's message of "Thu, 2 Nov 2023 10:56:45 +0800") References: <20231102025648.1285477-1-lizhijian@fujitsu.com> <20231102025648.1285477-2-lizhijian@fujitsu.com> Date: Thu, 02 Nov 2023 11:17:44 +0800 Message-ID: <878r7g3ktj.fsf@yhuang6-desk2.ccr.corp.intel.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=ascii X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 9969D80010 X-Stat-Signature: 4izrjda5rgukn9d7ewgxynt6t3817s6a X-HE-Tag: 1698895190-145323 X-HE-Meta: U2FsdGVkX18UKegkpdsZCWk+bfd62DfmcAVM6/PR1lan4OrYRy3ovwu4jXpxHTPHTYe/6uWppMicPvmSRXyPbJI5OdeSlNBvwD3e+MR0LDqzJzD1TguAdluAoqV/vtFaYXS59ubQ5ovMIGy3xAgFdR8mBSpFASqrPS2PibiwfuS8ApsbVd2rrWIFNoAGOiFMXGzA2aIfJPqKVxGuuma/bMvJVhz0Dq/Sxd1jX5e9+RmuJHM/9DSJY1edAMYcAIr9XtYy8QWdutMRByiNFK0MgrVj7absTuWpCTuYz5dvMNCx4KCR7Gf7UZQDMgZiYa1vkm5pNWzWI/ZBiqADF0S0ZVUhl5Gr6TodXqK4BUnNzKeKeWYiZn95uh+5Qe4ki3zdAWwrURUFotzwN+U+RdShfrv9PlrNG2rJaQp24CuSJxSstbdOA1SBvf2jU56xjaXORI/AWOhc09iWC4PJlA1/ZWFOKBK8zN+jlJ33cB1jyN2bk+TVf2PljfAIb6sEZYNK3DS5zqdhKqVGdn6aydsqAS7e4pIWEqWYZwWOlMvGV4DiXU99G2wak8ZVe2WHB8RHFLZ1PXwDyWAM2+IewrHGA2SpUm1J+4wrz59vXqEJ8+G/Lg8Rlutw4GN5OhK12NH08AgP2DUi/ChDxjuFrGEwOtWj0QKbCJEr4jLpWoOvxPse6+lSXEOMzCVhY2xA75kSpG5jojNqW/3yUCza++Cx4go4LCcEYUXMaqDUoJVygyLR58kSOLQuJvu5B/lrh1dYhx5ErWTgWl+y8ILIu/39LXcewnzcY8sXh6wpYAXCOH0JYliutWtXmtxuUQuddu5GIp/TKZibJaBKrCzMbEhczCogrJc36zO6KUMdlbiTfYoQ17lg0TMwxQwiEH48J6PIDGOBPZpNIaenvGEoXoUP1mKbzOAl6gisvdSw6ziQEcHALrTersoKT/c8S7iN8PTlD7AK2p1mIiEopucuQlv tsdDBOpq aS6gyNwt6R4fZtFy1hkhDoSwwgfVyewWaj70voml45vE3QNnERCzrhsJFk/t79pFTfkc2bkdn9+kzB+ltFYL8RZmvFHxvhDxeCJ3G/9LOnD2rco+tSHROoIZIesr5502dHil8fNC5UJliwuCFyJfytKtXibIKoDlbHnQRZbaveUQcmREOb+4Es0iaab68TnZtetWVs2ghzYI1pOqgapbreE/05/2nakEYj220t8gGqCniKj+u7YgF6HLe9fWk8CJR/nqN 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: Li Zhijian writes: > It shows the demotion target nodes of a node. Export this information to > user directly. > > Below is an example where node0 node1 are DRAM, node3 is a PMEM node. > - Before PMEM is online, no demotion_nodes for node0 and node1. > $ cat /sys/devices/system/node/node0/demotion_nodes > > - After node3 is online as kmem > $ daxctl reconfigure-device --mode=system-ram --no-online dax0.0 && daxctl online-memory dax0.0 > [ > { > "chardev":"dax0.0", > "size":1054867456, > "target_node":3, > "align":2097152, > "mode":"system-ram", > "online_memblocks":0, > "total_memblocks":7 > } > ] > $ cat /sys/devices/system/node/node0/demotion_nodes > 3 > $ cat /sys/devices/system/node/node1/demotion_nodes > 3 > $ cat /sys/devices/system/node/node3/demotion_nodes > We have /sys/devices/virtual/memory_tiering/memory_tier*/nodelist already. A node in a higher tier can demote to any node in the lower tiers. What's more need to be displayed in nodeX/demotion_nodes? -- Best Regards, Huang, Ying > Signed-off-by: Li Zhijian > --- > drivers/base/node.c | 13 +++++++++++++ > include/linux/memory-tiers.h | 6 ++++++ > mm/memory-tiers.c | 8 ++++++++ > 3 files changed, 27 insertions(+) > > diff --git a/drivers/base/node.c b/drivers/base/node.c > index 493d533f8375..27e8502548a7 100644 > --- a/drivers/base/node.c > +++ b/drivers/base/node.c > @@ -7,6 +7,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -569,11 +570,23 @@ static ssize_t node_read_distance(struct device *dev, > } > static DEVICE_ATTR(distance, 0444, node_read_distance, NULL); > > +static ssize_t demotion_nodes_show(struct device *dev, > + struct device_attribute *attr, char *buf) > +{ > + int ret; > + nodemask_t nmask = next_demotion_nodes(dev->id); > + > + ret = sysfs_emit(buf, "%*pbl\n", nodemask_pr_args(&nmask)); > + return ret; > +} > +static DEVICE_ATTR_RO(demotion_nodes); > + > static struct attribute *node_dev_attrs[] = { > &dev_attr_meminfo.attr, > &dev_attr_numastat.attr, > &dev_attr_distance.attr, > &dev_attr_vmstat.attr, > + &dev_attr_demotion_nodes.attr, > NULL > }; > > diff --git a/include/linux/memory-tiers.h b/include/linux/memory-tiers.h > index 437441cdf78f..8eb04923f965 100644 > --- a/include/linux/memory-tiers.h > +++ b/include/linux/memory-tiers.h > @@ -38,6 +38,7 @@ void init_node_memory_type(int node, struct memory_dev_type *default_type); > void clear_node_memory_type(int node, struct memory_dev_type *memtype); > #ifdef CONFIG_MIGRATION > int next_demotion_node(int node); > +nodemask_t next_demotion_nodes(int node); > void node_get_allowed_targets(pg_data_t *pgdat, nodemask_t *targets); > bool node_is_toptier(int node); > #else > @@ -46,6 +47,11 @@ static inline int next_demotion_node(int node) > return NUMA_NO_NODE; > } > > +static inline next_demotion_nodes next_demotion_nodes(int node) > +{ > + return NODE_MASK_NONE; > +} > + > 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 37a4f59d9585..90047f37d98a 100644 > --- a/mm/memory-tiers.c > +++ b/mm/memory-tiers.c > @@ -282,6 +282,14 @@ void node_get_allowed_targets(pg_data_t *pgdat, nodemask_t *targets) > rcu_read_unlock(); > } > > +nodemask_t next_demotion_nodes(int node) > +{ > + if (!node_demotion) > + return NODE_MASK_NONE; > + > + return node_demotion[node].preferred; > +} > + > /** > * next_demotion_node() - Get the next node in the demotion path > * @node: The starting node to lookup the next node