• Anil S Keshavamurthy's avatar
    [PATCH] Notify page fault call chain for x86_64 · 1bd858a5
    Anil S Keshavamurthy authored
    Currently in the do_page_fault() code path, we call notify_die(DIE_PAGE_FAULT,
    ...) to notify the page fault.  Since notify_die() is highly overloaded, this
    page fault notification is currently being sent to all the components
    registered with register_die_notification() which uses the same die_chain to
    loop for all the registered components which is unnecessary.
    
    In order to optimize the do_page_fault() code path, this critical page fault
    notification is now moved to different call chain and the test results showed
    great improvements.
    
    And the kprobes which is interested in this notifications, now registers onto
    this new call chain only when it need to, i.e Kprobes now registers for page
    fault notification only when their are an active probes and unregisters from
    this page fault notification when no probes are active.
    
    I have incorporated all the feedback given by Ananth and Keith and everyone,
    and thanks for all the review feedback.
    
    This patch:
    
    Overloading of page fault notification with the notify_die() has performance
    issues(since the only interested components for page fault is kprobes and/or
    kdb) and hence this patch introduces the new notifier call chain exclusively
    for page fault notifications their by avoiding notifying unnecessary
    components in the do_page_fault() code path.
    Signed-off-by: default avatarAnil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    1bd858a5
fault.c 17.4 KB