--- arch/x86_64/mm/fault.c | 8 ++++++++ include/linux/vmstat.h | 1 + mm/vmstat.c | 5 +++++ 3 files changed, 14 insertions(+) --- linux-2.6.23-rc6.orig/arch/x86_64/mm/fault.c +++ linux-2.6.23-rc6/arch/x86_64/mm/fault.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -393,10 +394,16 @@ asmlinkage void __kprobes do_page_fault( if (likely(!locked)) { vma = __find_get_vma(mm, address, &locked); + if (unlikely(locked)) + count_vm_event(FAULT_RCU_SLOW); + else + count_vm_event(FAULT_RCU); + } else { down_read(&mm->mmap_sem); vma = find_vma(mm, address); get_vma(vma); + count_vm_event(FAULT_LOCKED); } if (!vma) goto bad_area; @@ -416,6 +423,7 @@ asmlinkage void __kprobes do_page_fault( locked = 1; goto again; } + count_vm_event(FAULT_STACK); if (expand_stack(vma, address)) goto bad_area; /* --- linux-2.6.23-rc6.orig/include/linux/vmstat.h +++ linux-2.6.23-rc6/include/linux/vmstat.h @@ -37,6 +37,7 @@ enum vm_event_item { PGPGIN, PGPGOUT, PS FOR_ALL_ZONES(PGSCAN_DIRECT), PGINODESTEAL, SLABS_SCANNED, KSWAPD_STEAL, KSWAPD_INODESTEAL, PAGEOUTRUN, ALLOCSTALL, PGROTATED, + FAULT_RCU, FAULT_RCU_SLOW, FAULT_LOCKED, FAULT_STACK, NR_VM_EVENT_ITEMS }; --- linux-2.6.23-rc6.orig/mm/vmstat.c +++ linux-2.6.23-rc6/mm/vmstat.c @@ -529,6 +529,11 @@ static const char * const vmstat_text[] "allocstall", "pgrotated", + + "fault_rcu", + "fault_rcu_slow", + "fault_locked", + "fault_stack", #endif }; -- -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org