]> git.karo-electronics.de Git - karo-tx-linux.git/commit
mm, page_owner: track and print last migrate reason
authorVlastimil Babka <vbabka@suse.cz>
Tue, 9 Feb 2016 23:12:19 +0000 (10:12 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Tue, 9 Feb 2016 23:12:19 +0000 (10:12 +1100)
commit39c49ae45bc11c89084c20e95135a9a2c2935fa5
tree2199e49046173a977fd0151a0b8b7eea580df6c1
parent411bc6196bdb0ec7d7a4c22c272d640ec7a96cab
mm, page_owner: track and print last migrate reason

During migration, page_owner info is now copied with the rest of the page,
so the stacktrace leading to free page allocation during migration is
overwritten.  For debugging purposes, it might be however useful to know
that the page has been migrated since its initial allocation.  This might
happen many times during the lifetime for different reasons and fully
tracking this, especially with stacktraces would incur extra memory costs.
As a compromise, store and print the migrate_reason of the last migration
that occurred to the page.  This is enough to distinguish compaction, numa
balancing etc.

Example page_owner entry after the patch:

Page allocated via order 0, mask 0x24200ca(GFP_HIGHUSER_MOVABLE)
PFN 628753 type Movable Block 1228 type Movable Flags 0x1fffff80040030(dirty|lru|swapbacked)
 [<ffffffff811682c4>] __alloc_pages_nodemask+0x134/0x230
 [<ffffffff811b6325>] alloc_pages_vma+0xb5/0x250
 [<ffffffff81177491>] shmem_alloc_page+0x61/0x90
 [<ffffffff8117a438>] shmem_getpage_gfp+0x678/0x960
 [<ffffffff8117c2b9>] shmem_fallocate+0x329/0x440
 [<ffffffff811de600>] vfs_fallocate+0x140/0x230
 [<ffffffff811df434>] SyS_fallocate+0x44/0x70
 [<ffffffff8158cc2e>] entry_SYSCALL_64_fastpath+0x12/0x71
Page has been migrated, last migrate reason: compaction

Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Sasha Levin <sasha.levin@oracle.com>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Hugh Dickins <hughd@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/linux/migrate.h
include/linux/page_ext.h
include/linux/page_owner.h
mm/debug.c
mm/migrate.c
mm/page_owner.c