lkml.org 
[lkml]   [2022]   [Dec]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    Subject[Patch v2 0/2] NUMA aware page table allocation
    From
    Hi,

    This series improves page table accesses by allocating page tables on
    the same NUMA node where underlying physical page is present.

    Currently page tables are allocated during page faults and page splits.
    In both instances page table location will depend on the current thread
    mempolicy. This can create suboptimal placement of page tables on NUMA
    node, for example, thread doing eager page split is on different NUMA
    node compared to page it is splitting.

    Reviewers please provide suggestion to the following:

    1. Module parameter is true by default, which means this feature will
    be enabled by default. Is this okay or should I set it to false?

    2. I haven't reduced KVM_ARCH_NR_OBJS_PER_MEMORY_CACHE considering that
    it might not be too much of an impact as only online nodes are filled
    during topup phase and in many cases some of these nodes will never
    be refilled again. Please let me know if you want this to be
    reduced.

    3. I have tried to keep everything in x86/mmu except for some changes in
    virt/kvm/kvm_main.c. I used __weak function so that only x86/mmu will
    see the change, other arch nothing will change. I hope this is the
    right approach.

    4. I am not sure what is the right way to split patch 2. If you think
    this is too big for a patch please let me know what would you prefer.

    Thanks
    Vipin

    v2:
    - All page table pages will be allocated on underlying physical page's
    NUMA node.
    - Introduced module parameter, numa_aware_pagetable, to disable this
    feature.
    - Using kvm_pfn_to_refcounted_page to get page from a pfn.

    v1: https://lore.kernel.org/all/20220801151928.270380-1-vipinsh@google.com/

    Vipin Sharma (2):
    KVM: x86/mmu: Allocate page table pages on TDP splits during dirty log
    enable on the underlying page's numa node
    KVM: x86/mmu: Allocate page table pages on NUMA node of underlying
    pages

    arch/x86/include/asm/kvm_host.h | 4 +-
    arch/x86/kvm/mmu/mmu.c | 126 ++++++++++++++++++++++++--------
    arch/x86/kvm/mmu/paging_tmpl.h | 4 +-
    arch/x86/kvm/mmu/tdp_mmu.c | 26 ++++---
    include/linux/kvm_host.h | 17 +++++
    include/linux/kvm_types.h | 2 +
    virt/kvm/kvm_main.c | 7 +-
    7 files changed, 141 insertions(+), 45 deletions(-)


    base-commit: df0bb47baa95aad133820b149851d5b94cbc6790
    --
    2.39.0.rc0.267.gcb52ba06e7-goog

    \
     
     \ /
      Last update: 2022-12-01 20:58    [W:4.042 / U:0.184 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site