On Wed, Mar 27, 2024 at 2:44 PM Gregory Price gregory.price@memverge.com wrote:
On Wed, Mar 27, 2024 at 02:30:59PM -0700, Yuanchu Xie wrote:
I realize this does not generalize well to hotness information, but I lack the intuition for an abstraction that presents hotness in a useful way. Based on a recent proposal for move_phys_pages[2], it seems like userspace tiering software would like to move specific physical pages, instead of informing the kernel "move x number of hot pages to y device". Please advise.
[2] https://lore.kernel.org/lkml/20240319172609.332900-1-gregory.price@memverge....
Please note that this proposed interface (move_phys_pages) is very unlikely to be received upstream due to side channel concerns. Instead, it's more likely that the tiering component will expose a "promote X pages from tier A to tier B", and the kernel component would then use/consume hotness information to determine which pages to promote.
I see that mm/memory-tiers.c only has support for demotion. What kind of hotness information do devices typically provide? The OCP proposal is not very specific about this. A list of hot pages with configurable threshold? Access frequency for all pages at configured granularity? Is there a way to tell which NUMA node is accessing them, for page promotion?
(Just as one example, there are many more realistic designs)
So if there is a way to expose workingset data to the mm/memory_tiers.c component instead of via sysfs/cgroup - that is preferable.
Appreciate the feedback. The data in its current form might be useful to inform demotion decisions, but for promotion, are you aware of any recent developments? I would like to encode hotness as workingset data as well.
The 'move_phys_pages' interface is more of an experimental interface to test the effectiveness of this approach without having to plumb out the entire system. Definitely anything userland interface should not be designed to generate physical address information for consumption unless it is hard-locked behind admin caps.
Regards, Gregory