[PATCH 1/3] balancenuma: add stats for huge pmd numa faults

From: Hillf Danton
Date: Fri Nov 23 2012 - 23:19:01 EST


A thp contributes 512 times more than a regular page to numa fault stats,
so deserves its own vm event counter. THP migration is also accounted.

[A duplicated computation of page node idx is cleaned up]

Signed-off-by: Hillf Danton <dhillf@xxxxxxxxx>
---

--- a/include/linux/vm_event_item.h Fri Nov 23 21:24:12 2012
+++ b/include/linux/vm_event_item.h Fri Nov 23 21:37:32 2012
@@ -40,6 +40,12 @@ enum vm_event_item { PGPGIN, PGPGOUT, PS
PAGEOUTRUN, ALLOCSTALL, PGROTATED,
#ifdef CONFIG_BALANCE_NUMA
NUMA_PTE_UPDATES,
+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
+ NUMA_THP_HINT_FAULTS,
+ NUMA_THP_HINT_FAULTS_LOCAL,
+ NUMA_THP_MIGRATE_SUCCESS,
+ NUMA_THP_MIGRATE_FAIL,
+#endif
NUMA_HINT_FAULTS,
NUMA_HINT_FAULTS_LOCAL,
NUMA_PAGE_MIGRATE,
--- a/mm/huge_memory.c Fri Nov 23 21:28:04 2012
+++ b/mm/huge_memory.c Fri Nov 23 21:52:06 2012
@@ -1035,12 +1035,13 @@ int do_huge_pmd_numa_page(struct mm_stru

page = pmd_page(pmd);
get_page(page);
- count_vm_numa_event(NUMA_HINT_FAULTS);
current_nid = page_to_nid(page);
+ count_vm_numa_event(NUMA_THP_HINT_FAULTS);
+ if (current_nid == numa_node_id())
+ count_vm_numa_event(NUMA_THP_HINT_FAULTS_LOCAL);

target_nid = mpol_misplaced(page, vma, haddr);
if (target_nid == -1) {
- current_nid = page_to_nid(page);
put_page(page);
goto clear_pmdnuma;
}
@@ -1063,9 +1064,11 @@ int do_huge_pmd_numa_page(struct mm_stru
migrated = migrate_misplaced_transhuge_page(mm, vma,
pmdp, pmd, addr,
page, target_nid);
- if (migrated)
+ if (migrated) {
+ count_vm_numa_event(NUMA_THP_MIGRATE_SUCCESS);
current_nid = target_nid;
- else {
+ } else {
+ count_vm_numa_event(NUMA_THP_MIGRATE_FAIL);
spin_lock(&mm->page_table_lock);
if (unlikely(!pmd_same(pmd, *pmdp))) {
unlock_page(page);
--- a/mm/vmstat.c Fri Nov 23 21:30:04 2012
+++ b/mm/vmstat.c Fri Nov 23 21:57:32 2012
@@ -776,6 +776,12 @@ const char * const vmstat_text[] = {

#ifdef CONFIG_BALANCE_NUMA
"numa_pte_updates",
+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
+ "numa_thp_hint_faults",
+ "numa_thp_hint_faults_local",
+ "numa_thp_migrated_success",
+ "numa_thp_migrated_fail",
+#endif
"numa_hint_faults",
"numa_hint_faults_local",
"numa_pages_migrated",
--
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/