On Thu, Apr 7, 2022 at 8:08 PM Huang, Ying <ying.huang@xxxxxxxxx> wrote: > > Wei Xu <weixugc@xxxxxxxxxx> writes: > > > On Thu, Apr 7, 2022 at 4:11 PM Tim Chen <tim.c.chen@xxxxxxxxxxxxxxx> wrote: > >> > >> On Thu, 2022-04-07 at 15:12 -0700, Wei Xu wrote: > >> > >> > > >> > (resending in plain-text, sorry). > >> > > >> > memory.demote can work with any level of memory tiers if a nodemask > >> > argument (or a tier argument if there is a more-explicitly defined, > >> > userspace visible tiering representation) is provided. The semantics > >> > can be to demote X bytes from these nodes to their next tier. > >> > > >> > >> We do need some kind of userspace visible tiering representation. > >> Will be nice if I can tell the memory type, nodemask of nodes in tier Y with > >> > >> cat memory.tier_Y > >> > >> > >> > memory_dram/memory_pmem assumes the hardware for a particular memory > >> > tier, which is undesirable. For example, it is entirely possible that > >> > a slow memory tier is implemented by a lower-cost/lower-performance > >> > DDR device connected via CXL.mem, not by PMEM. It is better for this > >> > interface to speak in either the NUMA node abstraction or a new tier > >> > abstraction. > >> > >> Just from the perspective of memory.reclaim and memory.demote, I think > >> they could work with nodemask. For ease of management, > >> some kind of abstraction of tier information like nodemask, memory type > >> and expected performance should be readily accessible by user space. > >> > > > > I agree. The tier information should be provided at the system level. > > One suggestion is to have a new directory "/sys/devices/system/tier/" > > for tiers, e.g.: > > > > /sys/devices/system/tier/tier0/memlist: all memory nodes in tier 0. > > /sys/devices/system/tier/tier1/memlist: all memory nodes in tier 1. > > I think that it may be sufficient to make tier an attribute of "node". > Some thing like, > > /sys/devices/system/node/nodeX/memory_tier > This works. If we want additional information about each tier, we can then add a tier-specific subtree. In addition, it would be good to also expose the demotion target nodes (node_demotion[]) via sysfs, e.g.: /sys/devices/system/node/nodeX/demotion_path which returns node_demotion[X]. > Best Regards, > Huang, Ying > > > We can discuss this tier representation in a new thread. > > > >> Tim > >> > >> > > >> > It is also desirable to make this interface stateless, i.e. not to > >> > require the setting of memory_dram.reclaim_policy. Any policy can be > >> > specified as arguments to the request itself and should only affect > >> > that particular request. > >> > > >> > Wei > >> >