On Tue 17-01-17 17:13:03, Greg KH wrote: > > This is a note to let you know that I've just added the patch titled > > mm: fix remote numa hits statistics > > to the 4.9-stable tree which can be found at: > http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary > > The filename of the patch is: > mm-fix-remote-numa-hits-statistics.patch > and it can be found in the queue-4.9 subdirectory. > > If you, or anyone else, feels it should not be added to the stable tree, > please let <stable@xxxxxxxxxxxxxxx> know about it. It is not marked for stable so why it has been chosen? Me or Andrew would have marked it for stable if it was needed. In fact I do not really thing it is necessary. It fixes counters which haven't been accurate for quite some time and nobody has noticed. > >From 2df26639e708a88dcc22171949da638a9998f3bc Mon Sep 17 00:00:00 2001 > From: Michal Hocko <mhocko@xxxxxxxx> > Date: Tue, 10 Jan 2017 16:57:39 -0800 > Subject: mm: fix remote numa hits statistics > > From: Michal Hocko <mhocko@xxxxxxxx> > > commit 2df26639e708a88dcc22171949da638a9998f3bc upstream. > > Jia He has noticed that commit b9f00e147f27 ("mm, page_alloc: reduce > branches in zone_statistics") has an unintentional side effect that > remote node allocation requests are accounted as NUMA_MISS rathat than > NUMA_HIT and NUMA_OTHER if such a request doesn't use __GFP_OTHER_NODE. > > There are many of these potentially because the flag is used very rarely > while we have many users of __alloc_pages_node. > > Fix this by simply ignoring __GFP_OTHER_NODE (it can be removed in a > follow up patch) and treat all allocations that were satisfied from the > preferred zone's node as NUMA_HITS because this is the same node we > requested the allocation from in most cases. If this is not the local > node then we just account it as NUMA_OTHER rather than NUMA_LOCAL. > > One downsize would be that an allocation request for a node which is > outside of the mempolicy nodemask would be reported as a hit which is a > bit weird but that was the case before b9f00e147f27 already. > > Fixes: b9f00e147f27 ("mm, page_alloc: reduce branches in zone_statistics") > Link: http://lkml.kernel.org/r/20170102153057.9451-2-mhocko@xxxxxxxxxx > Signed-off-by: Michal Hocko <mhocko@xxxxxxxx> > Reported-by: Jia He <hejianet@xxxxxxxxx> > Reviewed-by: Vlastimil Babka <vbabka@xxxxxxx> # with cbmc[1] superpowers > Acked-by: Mel Gorman <mgorman@xxxxxxx> > Cc: Johannes Weiner <hannes@xxxxxxxxxxx> > Cc: Joonsoo Kim <iamjoonsoo.kim@xxxxxxx> > Cc: Taku Izumi <izumi.taku@xxxxxxxxxxxxxx> > Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > > --- > mm/page_alloc.c | 15 ++++----------- > 1 file changed, 4 insertions(+), 11 deletions(-) > > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -2556,30 +2556,23 @@ int __isolate_free_page(struct page *pag > * Update NUMA hit/miss statistics > * > * Must be called with interrupts disabled. > - * > - * When __GFP_OTHER_NODE is set assume the node of the preferred > - * zone is the local node. This is useful for daemons who allocate > - * memory on behalf of other processes. > */ > static inline void zone_statistics(struct zone *preferred_zone, struct zone *z, > gfp_t flags) > { > #ifdef CONFIG_NUMA > - int local_nid = numa_node_id(); > enum zone_stat_item local_stat = NUMA_LOCAL; > > - if (unlikely(flags & __GFP_OTHER_NODE)) { > + if (z->node != numa_node_id()) > local_stat = NUMA_OTHER; > - local_nid = preferred_zone->node; > - } > > - if (z->node == local_nid) { > + if (z->node == preferred_zone->node) > __inc_zone_state(z, NUMA_HIT); > - __inc_zone_state(z, local_stat); > - } else { > + else { > __inc_zone_state(z, NUMA_MISS); > __inc_zone_state(preferred_zone, NUMA_FOREIGN); > } > + __inc_zone_state(z, local_stat); > #endif > } > > > > Patches currently in stable-queue which might be from mhocko@xxxxxxxx are > > queue-4.9/mm-memcg-fix-the-active-list-aging-for-lowmem-requests-when-memcg-is-enabled.patch > queue-4.9/mm-fix-remote-numa-hits-statistics.patch > queue-4.9/mm-pmd-dirty-emulation-in-page-fault-handler.patch -- Michal Hocko SUSE Labs -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html