Re: [PATCH v3 0/3] create sysfs representation of ACPI HMAT
From: Matthew Wilcox <hidden>
Date: 2017-12-20 18:19:43
Also in:
linux-acpi, linux-mm, linuxppc-dev, lkml, nvdimm
On Mon, Dec 18, 2017 at 01:35:47PM -0700, Ross Zwisler wrote:
What I'm hoping to do with this series is to just provide a sysfs representation of the HMAT so that applications can know which NUMA nodes to select with existing utilities like numactl. This series does not currently alter any kernel behavior, it only provides a sysfs interface. Say for example you had a system with some high bandwidth memory (HBM), and you wanted to use it for a specific application. You could use the sysfs representation of the HMAT to figure out which memory target held your HBM. You could do this by looking at the local bandwidth values for the various memory targets, so: # grep . /sys/devices/system/hmat/mem_tgt*/local_init/write_bw_MBps /sys/devices/system/hmat/mem_tgt2/local_init/write_bw_MBps:81920 /sys/devices/system/hmat/mem_tgt3/local_init/write_bw_MBps:40960 /sys/devices/system/hmat/mem_tgt4/local_init/write_bw_MBps:40960 /sys/devices/system/hmat/mem_tgt5/local_init/write_bw_MBps:40960 and look for the one that corresponds to your HBM speed. (These numbers are made up, but you get the idea.)
Presumably ACPI-based platforms will not be the only ones who have the ability to expose different bandwidth memories in the future. I think we need a platform-agnostic way ... right, PowerPC people? I don't know what the right interface is, but my laptop has a set of /sys/devices/system/memory/memoryN/ directories. Perhaps this is the right place to expose write_bw (etc).
Once you know the NUMA node of your HBM, you can figure out the NUMA node of it's local initiator: # ls -d /sys/devices/system/hmat/mem_tgt2/local_init/mem_init* /sys/devices/system/hmat/mem_tgt2/local_init/mem_init0 So, in our made-up example our HBM is located in numa node 2, and the local CPU for that HBM is at numa node 0.
initiator is a CPU? I'd have expected you to expose a memory controller abstraction rather than re-use storage terminology.