• David Matlack's avatar
    KVM: selftests: Wait for all vCPU to be created before entering guest mode · 89d9a43c
    David Matlack authored
    Thread creation requires taking the mmap_sem in write mode, which causes
    vCPU threads running in guest mode to block while they are populating
    memory. Fix this by waiting for all vCPU threads to be created and start
    running before entering guest mode on any one vCPU thread.
    
    This substantially improves the "Populate memory time" when using 1GiB
    pages since it allows all vCPUs to zero pages in parallel rather than
    blocking because a writer is waiting (which is waiting for another vCPU
    that is busy zeroing a 1GiB page).
    
    Before:
    
      $ ./dirty_log_perf_test -v256 -s anonymous_hugetlb_1gb
      ...
      Populate memory time: 52.811184013s
    
    After:
    
      $ ./dirty_log_perf_test -v256 -s anonymous_hugetlb_1gb
      ...
      Populate memory time: 10.204573342s
    Signed-off-by: default avatarDavid Matlack <dmatlack@google.com>
    Message-Id: <20211111001257.1446428-4-dmatlack@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    89d9a43c
perf_test_util.c 6.81 KB