Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp667747pxa; Wed, 5 Aug 2020 09:56:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzmMwVOnPsFH/lMnOg8PZNAYCieLKy3jDrhjXvSZ7IV0/gCYbC6FJd3cHCXvU7t6pcS0pxB X-Received: by 2002:a05:6402:2042:: with SMTP id bc2mr172057edb.109.1596646609690; Wed, 05 Aug 2020 09:56:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1596646609; cv=none; d=google.com; s=arc-20160816; b=q+xacZyxmZOfKHpaMJraP/7/gEAlW102C2yovA0YUcEBsHu58GT4DVuHgnKGbMlVjt ffu9VzkeydDSid/N6/ajJgg+8drUmGEMJz4FvAQv4tTtZoETzy5hK9hlFm0KHh4lUoDf 4tG3RgpZErRsxnwOItQQrUO8ZYnEU8igSSBEhoNeVsalIU2mE7mH3oQak0kKMZS5tSYa 4jPYNRb/L0ut3OeLKlMNC/jDwLPE3kdkpd2HMPdklKqfblb5VVBDkt/xEhLS+a4yceWQ imrUystLs39srTu2k7ZLbWtruRddWlYgomOnSGbTVbct4G82Ox0t85umTuziklfi5uAV 6tVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature; bh=gnq2bYcLCYbS7fB6hPJYIGySV/efaN7joodM7bHp3HM=; b=WBKDUI8GtM7zpmleU08xOPprpoQCL29FetAzOSiSORJA5Vlk5BiV1jvkivfuOV1Dny sZ5Oux5WspRvCFmNR5x8sRXtZoC9w3Hcl/h2KCL4BYsOk731UPHSMG+QvQ3WvUHZdMzx YAWnfYt0dsDv0323sfs7vw8dwGMuoAuACZ8+z8Q2ywCblg6GJJg1ouymUTntxhMBgg39 fGb96y5PvstPsK7xvPVuQ1wKl8p+wVGY7LDSe4T10jjNP3r26egE0Sej/SLB/Y5CcrVE GOFMt3oYmURBxfv5U4wG9bG3Rck+vYSlR1t1WCfg0WYCEotFpCWFN8Up4yIELQROhPVI 9tkg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=mGGnDTpN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j9si1641495ejx.438.2020.08.05.09.56.25; Wed, 05 Aug 2020 09:56:49 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=mGGnDTpN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727852AbgHEQyb (ORCPT + 99 others); Wed, 5 Aug 2020 12:54:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46396 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728139AbgHEQtq (ORCPT ); Wed, 5 Aug 2020 12:49:46 -0400 Received: from mail-pg1-x544.google.com (mail-pg1-x544.google.com [IPv6:2607:f8b0:4864:20::544]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 76992C0A8938; Wed, 5 Aug 2020 07:11:20 -0700 (PDT) Received: by mail-pg1-x544.google.com with SMTP id t6so24510493pgq.1; Wed, 05 Aug 2020 07:11:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=gnq2bYcLCYbS7fB6hPJYIGySV/efaN7joodM7bHp3HM=; b=mGGnDTpNY8ZF+dLJA+3RJn/hk+73NVX1GPiWuFeKj+prG1T5Q8RHEnAe34YY7ukHRh C9nNFsKDK339IwgGBO4ithBKkz6AQSgtkyiJzTUXPPI+SF9/zjSlJ3GmJQbHhepK72cs i0nwwk1P6k9gGvDitoQ5lD+4hQDzmYv49X2pGW/d3uNqLhLzH0wO4oPzqwI1Fs1Vpi01 OWCldIcCxihrBnDzIWcJaNL9kjCR6ErUPUQ6nDigCLnEbr0ObGtSWZ76VyZxhFTo4Obl vqQr+3waWg9fZ/qrUl/4lfkLv1DAwOJAZCzyMehir3PlK6cc9umER0w/WUJNmlSUS9qZ 7CYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=gnq2bYcLCYbS7fB6hPJYIGySV/efaN7joodM7bHp3HM=; b=ll40ktqYFkDll/eFP8oNlInzcdHl8eaC5GWXDhOk97yeEinYji2P7l33r3BiDv7kWG 9lIDsDXcJGPgTpNd+C2rm6cXgQrSSG5mou+c2dR8ckFzS8CvZxgasiapIA8fspNJMo7/ b/pMHlvLJCND0FHsJvaeb3MIj+pWZphqZWSFTnOhPgjX6FqWXh5oF2odcA+Hgotur6w1 HbyZMHTTQ92CQwSSApG+yfVMK0ZRYWuscLeqfX7FzpqIwH0Y29Ri7fiRi+7/23F8LvTA kHAKg2mzrB3rBNveqNBkt/ItRFHlbYNGzcS88Uf1tjw1yzhaGOcYlQ3gPrWVcXbXLD/6 2icA== X-Gm-Message-State: AOAM531cJHyPvxK3dL2+Oidd+9anwJeLPQJTOKwWBE2h0sg/NzQXMKyF 7eNdYiGwbL5qwQJ1u6OVP0s= X-Received: by 2002:a63:4c22:: with SMTP id z34mr3191367pga.370.1596636680035; Wed, 05 Aug 2020 07:11:20 -0700 (PDT) Received: from localhost.localdomain ([203.205.141.56]) by smtp.gmail.com with ESMTPSA id z29sm3898453pfj.182.2020.08.05.07.11.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Aug 2020 07:11:19 -0700 (PDT) From: Yulei Zhang To: pbonzini@redhat.com Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, sean.j.christopherson@intel.com, jmattson@google.com, vkuznets@redhat.com, xiaoguangrong.eric@gmail.com, kernellwp@gmail.com, lihaiwei.kernel@gmail.com, Yulei Zhang Subject: [RFC 0/9] KVM:x86/mmu:Introduce parallel memory virtualization to boost performance Date: Wed, 5 Aug 2020 22:12:02 +0800 Message-Id: <20200805141202.8641-1-yulei.kernel@gmail.com> X-Mailer: git-send-email 2.17.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Yulei Zhang Currently in KVM memory virtulization we relay on mmu_lock to synchronize the memory mapping update, which make vCPUs work in serialize mode and slow down the execution, especially after migration to do substantial memory mapping setup, and performance get worse if increase vCPU numbers and guest memories. The idea we present in this patch set is to mitigate the issue with pre-constructed memory mapping table. We will fast pin the guest memory to build up a global memory mapping table according to the guest memslots changes and apply it to cr3, so that after guest starts up all the vCPUs would be able to update the memory concurrently, thus the performance improvement is expected. And after test the initial patch with memory dirty pattern workload, we have seen positive results even with huge page enabled. For example, guest with 32 vCPUs and 64G memories, in 2M/1G huge page mode we would get more than 50% improvement. Yulei Zhang (9): Introduce new fields in kvm_arch/vcpu_arch struct for direct build EPT support Introduce page table population function for direct build EPT feature Introduce page table remove function for direct build EPT feature Add release function for direct build ept when guest VM exit Modify the page fault path to meet the direct build EPT requirement Apply the direct build EPT according to the memory slots change Add migration support when using direct build EPT Introduce kvm module parameter global_tdp to turn on the direct build EPT mode Handle certain mmu exposed functions properly while turn on direct build EPT mode arch/mips/kvm/mips.c | 13 + arch/powerpc/kvm/powerpc.c | 13 + arch/s390/kvm/kvm-s390.c | 13 + arch/x86/include/asm/kvm_host.h | 13 +- arch/x86/kvm/mmu/mmu.c | 537 ++++++++++++++++++++++++++++++-- arch/x86/kvm/svm/svm.c | 2 +- arch/x86/kvm/vmx/vmx.c | 17 +- arch/x86/kvm/x86.c | 55 ++-- include/linux/kvm_host.h | 7 +- virt/kvm/kvm_main.c | 43 ++- 10 files changed, 648 insertions(+), 65 deletions(-) -- 2.17.1