"JP Kobryn (Meta)" <[email protected]> writes: > When investigating pressure on a NUMA node, there is no straightforward way > to determine which policies are driving allocations to it. > > Add per-policy page allocation counters as new node stat items. These > counters track allocations to nodes and also whether the allocations were > intentional or fallbacks. > > The new stats follow the existing numa hit/miss/foreign style and have the > following meanings: > > hit > - for BIND and PREFERRED_MANY, allocation succeeded on node in nodemask > - for other policies, allocation succeeded on intended node > - counted on the node of the allocation > miss > - allocation intended for other node, but happened on this one > - counted on other node > foreign > - allocation intended on this node, but happened on other node > - counted on this node > > Counters are exposed per-memcg, per-node in memory.numa_stat and globally > in /proc/vmstat.
IMHO, it may be better to describe your workflow as an example to use the newly added statistics. That can describe why we need them. For example, what you have described in https://lore.kernel.org/linux-mm/[email protected]/ > 1) Pressure/OOMs reported while system-wide memory is free. > 2) Check per-node pgscan/pgsteal stats (provided by patch 2) to narrow > down node(s) under pressure. They become available in > /sys/devices/system/node/nodeN/vmstat. > 3) Check per-policy allocation counters (this patch) on that node to > find what policy was driving it. Same readout at nodeN/vmstat. > 4) Now use /proc/*/numa_maps to identify tasks using the policy. One question. If we have to search /proc/*/numa_maps, why can't we find all necessary information via /proc/*/numa_maps? For example, which VMA uses the most pages on the node? Which policy is used in the VMA? ... --- Best Regards, Huang, Ying [snip]

