浏览代码

thp, vmstats: add counters for huge file pages

THP_FILE_ALLOC: how many times huge page was allocated and put page
cache.

THP_FILE_MAPPED: how many times file huge page was mapped.

Link: http://lkml.kernel.org/r/1466021202-61880-13-git-send-email-kirill.shutemov@linux.intel.com
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Kirill A. Shutemov 9 年之前
父节点
当前提交
95ecedcd6a
共有 3 个文件被更改,包括 10 次插入0 次删除
  1. 7 0
      include/linux/vm_event_item.h
  2. 1 0
      mm/memory.c
  3. 2 0
      mm/vmstat.c

+ 7 - 0
include/linux/vm_event_item.h

@@ -70,6 +70,8 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT,
 		THP_FAULT_FALLBACK,
 		THP_FAULT_FALLBACK,
 		THP_COLLAPSE_ALLOC,
 		THP_COLLAPSE_ALLOC,
 		THP_COLLAPSE_ALLOC_FAILED,
 		THP_COLLAPSE_ALLOC_FAILED,
+		THP_FILE_ALLOC,
+		THP_FILE_MAPPED,
 		THP_SPLIT_PAGE,
 		THP_SPLIT_PAGE,
 		THP_SPLIT_PAGE_FAILED,
 		THP_SPLIT_PAGE_FAILED,
 		THP_DEFERRED_SPLIT_PAGE,
 		THP_DEFERRED_SPLIT_PAGE,
@@ -100,4 +102,9 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT,
 		NR_VM_EVENT_ITEMS
 		NR_VM_EVENT_ITEMS
 };
 };
 
 
+#ifndef CONFIG_TRANSPARENT_HUGEPAGE
+#define THP_FILE_ALLOC ({ BUILD_BUG(); 0; })
+#define THP_FILE_MAPPED ({ BUILD_BUG(); 0; })
+#endif
+
 #endif		/* VM_EVENT_ITEM_H_INCLUDED */
 #endif		/* VM_EVENT_ITEM_H_INCLUDED */

+ 1 - 0
mm/memory.c

@@ -2968,6 +2968,7 @@ static int do_set_pmd(struct fault_env *fe, struct page *page)
 
 
 	/* fault is handled */
 	/* fault is handled */
 	ret = 0;
 	ret = 0;
+	count_vm_event(THP_FILE_MAPPED);
 out:
 out:
 	spin_unlock(fe->ptl);
 	spin_unlock(fe->ptl);
 	return ret;
 	return ret;

+ 2 - 0
mm/vmstat.c

@@ -817,6 +817,8 @@ const char * const vmstat_text[] = {
 	"thp_fault_fallback",
 	"thp_fault_fallback",
 	"thp_collapse_alloc",
 	"thp_collapse_alloc",
 	"thp_collapse_alloc_failed",
 	"thp_collapse_alloc_failed",
+	"thp_file_alloc",
+	"thp_file_mapped",
 	"thp_split_page",
 	"thp_split_page",
 	"thp_split_page_failed",
 	"thp_split_page_failed",
 	"thp_deferred_split_page",
 	"thp_deferred_split_page",