On (08/07/15 12:38), Pintu Kumar wrote: > This patch add new counter slowpath_entered in /proc/vmstat to > track how many times the system entered into slowpath after > first allocation attempt is failed. > This is useful to know the rate of allocation success within > the slowpath. > This patch is tested on ARM with 512MB RAM. > A sample output is shown below after successful boot-up: > shell> cat /proc/vmstat > nr_free_pages 4712 > pgalloc_normal 1319432 > pgalloc_movable 0 > pageoutrun 379 > allocstall 0 > slowpath_entered 585 > compact_stall 0 > compact_fail 0 > compact_success 0 > > From the above output we can see that the system entered > slowpath 585 times. so what can you do with this number? -ss > But the existing counter kswapd(pageoutrun), direct_reclaim(allocstall), > direct_compact(compact_stall) does not tell this value. > From the above value, it clearly indicates that the system have > entered slowpath 585 times. Out of which 379 times allocation passed > through kswapd, without performing direct reclaim/compaction. > That means the remaining 206 times the allocation would have succeeded > using the alloc_pages_high_priority. > > Signed-off-by: Pintu Kumar <pintu.k@xxxxxxxxxxx> > --- > include/linux/vm_event_item.h | 2 +- > mm/page_alloc.c | 2 ++ > mm/vmstat.c | 2 +- > 3 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/include/linux/vm_event_item.h b/include/linux/vm_event_item.h > index 2b1cef8..9825f294 100644 > --- a/include/linux/vm_event_item.h > +++ b/include/linux/vm_event_item.h > @@ -37,7 +37,7 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT, > #endif > PGINODESTEAL, SLABS_SCANNED, KSWAPD_INODESTEAL, > KSWAPD_LOW_WMARK_HIT_QUICKLY, KSWAPD_HIGH_WMARK_HIT_QUICKLY, > - PAGEOUTRUN, ALLOCSTALL, PGROTATED, > + PAGEOUTRUN, ALLOCSTALL, SLOWPATH_ENTERED, PGROTATED, > DROP_PAGECACHE, DROP_SLAB, > #ifdef CONFIG_NUMA_BALANCING > NUMA_PTE_UPDATES, > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 2024d2e..4a5d487 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -3029,6 +3029,8 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order, > if (IS_ENABLED(CONFIG_NUMA) && (gfp_mask & __GFP_THISNODE) && !wait) > goto nopage; > > + count_vm_event(SLOWPATH_ENTERED); > + > retry: > if (!(gfp_mask & __GFP_NO_KSWAPD)) > wake_all_kswapds(order, ac); > diff --git a/mm/vmstat.c b/mm/vmstat.c > index 1fd0886..1c54fdf 100644 > --- a/mm/vmstat.c > +++ b/mm/vmstat.c > @@ -778,7 +778,7 @@ const char * const vmstat_text[] = { > "kswapd_high_wmark_hit_quickly", > "pageoutrun", > "allocstall", > - > + "slowpath_entered", > "pgrotated", > > "drop_pagecache", > -- > 1.7.9.5 > > -- > To unsubscribe, send a message with 'unsubscribe linux-mm' in > the body to majordomo@xxxxxxxxx. For more info on Linux MM, > see: http://www.linux-mm.org/ . > Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a> > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>