Messages in this thread Patch in this message | | | Date | Wed, 26 Dec 2018 21:14:53 +0800 | From | Fengguang Wu <> | Subject | [RFC][PATCH v2 07/21] mm: export node type {pmem|dram} under /sys/bus/node |
| |
From: Fan Du <fan.du@intel.com>
User space migration daemon could check /sys/bus/node/devices/nodeX/type for node type.
Software can interrogate node type for node memory type and distance to get desirable target node in migration.
grep -r . /sys/devices/system/node/*/type /sys/devices/system/node/node0/type:dram /sys/devices/system/node/node1/type:dram /sys/devices/system/node/node2/type:pmem /sys/devices/system/node/node3/type:pmem
Along with next patch which export `peer_node`, migration daemon could easily find the memory type of current node, and the target node in case of migration.
grep -r . /sys/devices/system/node/*/peer_node /sys/devices/system/node/node0/peer_node:2 /sys/devices/system/node/node1/peer_node:3 /sys/devices/system/node/node2/peer_node:0 /sys/devices/system/node/node3/peer_node:1
Signed-off-by: Fan Du <fan.du@intel.com> Signed-off-by: Fengguang Wu <fengguang.wu@intel.com> --- drivers/base/node.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
--- linux.orig/drivers/base/node.c 2018-12-23 19:39:04.763414931 +0800 +++ linux/drivers/base/node.c 2018-12-23 19:39:04.763414931 +0800 @@ -233,6 +233,15 @@ static ssize_t node_read_distance(struct } static DEVICE_ATTR(distance, S_IRUGO, node_read_distance, NULL); +static ssize_t type_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + int nid = dev->id; + + return sprintf(buf, is_node_pmem(nid) ? "pmem\n" : "dram\n"); +} +static DEVICE_ATTR(type, S_IRUGO, type_show, NULL); + static struct attribute *node_dev_attrs[] = { &dev_attr_cpumap.attr, &dev_attr_cpulist.attr, @@ -240,6 +249,7 @@ static struct attribute *node_dev_attrs[ &dev_attr_numastat.attr, &dev_attr_distance.attr, &dev_attr_vmstat.attr, + &dev_attr_type.attr, NULL }; ATTRIBUTE_GROUPS(node_dev);
| |