Received: by 10.223.164.202 with SMTP id h10csp28569wrb; Mon, 13 Nov 2017 02:02:25 -0800 (PST) X-Google-Smtp-Source: AGs4zMZ9dbg/NW9kbL3hzZ7O20OJONs8omgtQ6YatqY1ZmXJf/G/HkFq387D8UkW6OwpGj+N8EqQ X-Received: by 10.159.241.135 with SMTP id s7mr8385504plr.22.1510567345827; Mon, 13 Nov 2017 02:02:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510567345; cv=none; d=google.com; s=arc-20160816; b=bP2Hp4llSAuTj0G2wE5GmuLlaVp6NMpZa0zZPOJghkcHrA1bDhLMHq+k2UEoUOtpgB 5zD7cEO1BbZQdiepDvRxp80XFUOdernAgqKX8tzFkOD7C8E8nB3Yn7z9ZGpq8IZh+kmg Sc/thziwlKf+MZ8cwP7WKfAt2sDrUjZMC9B5YqhsOYJj3i2Xef9+Jz3cIs2h16/2pT/G ene4/gP9SYQIOFqmF9cjzm5lHYUGtulBzg2kDaltPMoi4Fr4bRq6ITpCfDf7rlwtFIF6 FxzhVVdx8WfAi6dy/6WfzXICEHbRrLIvpv7z3QzzMNHEjvjdD3UuYWXPRHEK1KTyPQCN 4PYg== 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:arc-authentication-results; bh=/9c98/oNoDDjqJt5MtUkUyVIF7TsNSkkdA3gmIW52qo=; b=h1KRuOoPaPcO9PmtjbN6myB2YobNYDr8NlH7SfR/dwygZqldejVUErIIgm1xlz7O9Q 1Xy1lnDE7V9b5Yfvn456tSI5uQvHMac0ZycTKbYy68hw2fiQBHoMhhc9MViby7q3S+yQ j/r/SrKIjupmVEVDZBWcyi5mE8d+aSEXTs9ZVRYxhmcNb6HNehtWzpzqVVvMRccnIFwK gYFkK5oYm+kbBm79FYrcwyoq7QcIKLWpzwxnOAKkNsLg5UiTlVdN1laFZzw55u87iIDi yGBgnTk72Ylkd+sHuKx67b3pcH1ih0Pv5GHkFH/qAP1lYJw6AKNLezLANpg/YLhz7gHR 4Oqg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ejUB4yTS; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w6si13787970plz.428.2017.11.13.02.02.11; Mon, 13 Nov 2017 02:02:25 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ejUB4yTS; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751515AbdKMKBZ (ORCPT + 93 others); Mon, 13 Nov 2017 05:01:25 -0500 Received: from mail-pf0-f193.google.com ([209.85.192.193]:43329 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751268AbdKMKBX (ORCPT ); Mon, 13 Nov 2017 05:01:23 -0500 Received: by mail-pf0-f193.google.com with SMTP id a84so6572135pfl.0; Mon, 13 Nov 2017 02:01:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=/9c98/oNoDDjqJt5MtUkUyVIF7TsNSkkdA3gmIW52qo=; b=ejUB4yTSR89aJP+ULJBf2/zqkV4R2qyVWjEndMlHjKL3Tjk0xqgm2YPosFv9EkeOAx 2BiSyZlE9AinovF38yaXWzlUNYih2LK7fq9UzklbPbiwsTujl0aeOttCWl0bwE4oiKot 1Vfn4mUHoDDcqgHdOgMHxRpLSLbc2iWETXzxSO+BCiin8Tymo1aOiHilq7QMvjC2w6+w ay9H273F82D0sgfqlHYyvJNM+BoycK1l0U//N4Eb+IOq9B0kpWeTiXg+mMuB240b5iiL hbZyKLX1dRKNvFkG0zk8j/oRPaDh+jRqQWKB+tqwgFqyUlmmCi0XXX3gHfUkFMqZBoFs vF1A== 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=/9c98/oNoDDjqJt5MtUkUyVIF7TsNSkkdA3gmIW52qo=; b=YcA+2C0ztEbwXXXK9/aJxorDdiic0rjPpISACKxZJlKfnF3LSSlGyIjsPLlM4ZBf25 CH2XQLPLivpi8SazoepL63xhogEnmNO5hw+Xny9wvBzp1aynNzzm1v82kukRGE3ijkGs NKoKJi2S7OYgsuR0Vc4I67sFzz9IxKN4Z8PIttVq5oQMo7uMVsoILiAF6K7WEMQL+OOm d9O47SKQmqLCaN2/TD4EyG1YRqy4I/lLMPIJVsL4HwFp85QxVT6SNcNLW6EbDRFWcrtK AyBBQxbwnbpAJMkRZY/Uxf17tIpFC8KpwILFwroBOrWbl89wRTTddT89xwlpbQocZV7R tx2Q== X-Gm-Message-State: AJaThX6vtzD3tluOSvJgPUMyyzRY9Jc48BS5aeL1Of7mx1/a7VHeHRNN Q8EG14/Unr0922c6DYRoPCu9Eg== X-Received: by 10.84.165.171 with SMTP id y40mr8679590pla.362.1510567283276; Mon, 13 Nov 2017 02:01:23 -0800 (PST) Received: from localhost ([203.205.141.123]) by smtp.gmail.com with ESMTPSA id w69sm29311512pfd.22.2017.11.13.02.01.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Nov 2017 02:01:22 -0800 (PST) From: Wanpeng Li X-Google-Original-From: Wanpeng Li To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: Paolo Bonzini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Peter Zijlstra , Wanpeng Li Subject: [PATCH v5 0/4] KVM: X86: Paravirt remote TLB flush Date: Mon, 13 Nov 2017 02:01:16 -0800 Message-Id: <1510567280-19376-1-git-send-email-wanpeng.li@hotmail.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Remote flushing api's does a busy wait which is fine in bare-metal scenario. But with-in the guest, the vcpus might have been pre-empted or blocked. In this scenario, the initator vcpu would end up busy-waiting for a long amount of time. This patch set implements para-virt flush tlbs making sure that it does not wait for vcpus that are sleeping. And all the sleeping vcpus flush the tlb on guest enter. Idea was discussed here: https://lkml.org/lkml/2012/2/20/157 The best result is achieved when we're overcommiting the host by running multiple vCPUs on each pCPU. In this case PV tlb flush avoids touching vCPUs which are not scheduled and avoid the wait on the main CPU. In addition, thanks for commit 9e52fc2b50d ("x86/mm: Enable RCU based page table freeing (CONFIG_HAVE_RCU_TABLE_FREE=y)") Test on a Haswell i7 desktop 4 cores (2HT), so 8 pCPUs, running ebizzy in one linux guest. ebizzy -M vanilla optimized boost 8 vCPUs 10152 10083 -0.68% 16 vCPUs 1224 4866 297.5% 24 vCPUs 1109 3871 249% 32 vCPUs 1025 3375 229.3% Note: The patchset is rebased against "locking/qspinlock/x86: Avoid test-and-set when PV_DEDICATED is set" v3 v4 -> v5: * flushmask instead of cpumask v3 -> v4: * use READ_ONCE() * use try_cmpxchg instead of cmpxchg * add {} to if * no FLUSH flags to preserve during set_preempted * "KVM: X86" prefix to patch subject v2 -> v3: * percpu cpumask v1 -> v2: * a new CPUID feature bit * fix cmpxchg check * use kvm_vcpu_flush_tlb() to get the statistics right * just OR the KVM_VCPU_PREEMPTED in kvm_steal_time_set_preempted * add a new bool argument to kvm_x86_ops->tlb_flush * __cpumask_clear_cpu() instead of cpumask_clear_cpu() * not put cpumask_t on stack * rebase the patchset against "locking/qspinlock/x86: Avoid test-and-set when PV_DEDICATED is set" v3 Wanpeng Li (4): KVM: X86: Add vCPU running/preempted state KVM: X86: Add paravirt remote TLB flush KVM: X86: introduce invalidate_gpa argument to tlb flush KVM: X86: Add flush_on_enter before guest enter Documentation/virtual/kvm/cpuid.txt | 4 ++++ arch/x86/include/asm/kvm_host.h | 2 +- arch/x86/include/uapi/asm/kvm_para.h | 6 +++++ arch/x86/kernel/kvm.c | 46 ++++++++++++++++++++++++++++++++++-- arch/x86/kvm/cpuid.c | 3 ++- arch/x86/kvm/svm.c | 14 +++++------ arch/x86/kvm/vmx.c | 21 ++++++++-------- arch/x86/kvm/x86.c | 25 +++++++++++++------- 8 files changed, 88 insertions(+), 30 deletions(-) -- 2.7.4 From 1583909022730674607@xxx Mon Nov 13 00:35:54 +0000 2017 X-GM-THRID: 1583909022730674607 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread