Received: by 10.223.164.202 with SMTP id h10csp20442wrb; Fri, 10 Nov 2017 01:52:11 -0800 (PST) X-Google-Smtp-Source: ABhQp+QJ3WVuCjDmpVaDzmW0vns/xuKmzit2SnE8ZDdivlYscXAVB7axJishIbPS59JJX00FLzGE X-Received: by 10.98.198.28 with SMTP id m28mr3783337pfg.217.1510307531771; Fri, 10 Nov 2017 01:52:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510307531; cv=none; d=google.com; s=arc-20160816; b=qTqNAB9YTIARzkcy+HwVdQBzGldTgn9itQ43wytmzmJw8dBkpcEl2P0ETaIJYQc9Yq NFUFkDhsNlJwurmois+3JOk5Z1Wtj/wIwE6kPkkWrl0qCZlCYofLRsorRgrrhf+jN5aA mgOnn0G4Ovmnio83znBbtzZSLMO67+2EbKTNy9llq82W16Jhm2C9g0uADXctyAKDoQl9 kqLzjzfl5x9QrXhN0MVqozJELfHyB7+5X7GFPBo9xPKgHO0wxC3OMJdaBiu1dMetrcMi c6/EgtBpiDO0RdsKPAacpgG1gLZjKa9YSa3TWiNvlZdXce5B6nXAzBF0ZfrEpb+t2iua VsJw== 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=io0389wHuElGgCnIaPhYzaNnOFwpy9mjinV/pnpB59U=; b=XEX9JZVEzr3DPjk9ziekxheeM3figHcT/tm2AXPQZnVQ0Bp5ZLwybqIRBG3YRJj6WI q/lbEjA9SPKgfOsWY3Zyx1/A/nvYxD6sGeJR7ef6Tnv/3XDTmy+DpKbXFeQjsisWKAl0 9WVpw0C4loEFqPccfUjqjwPfV1UFyjqy1o+D8MPDyyADgU5X1kdmiQmP1Hgxmj4CaP38 HhXpZlgmq4LJ7wfK/MvN8Zv2ZXKob/RvYgnBcRUlELyCA+3O8XRphVjtEZHsRW0LC09r cK1UyPRUhMQS0h8eemP2HNnZFrcsTf/KIKdq8w4UCGPuA00kcFqahOGHDqB12Qdz9TRH GmYg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=QgtaNTZk; 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 l24si1521220pgo.103.2017.11.10.01.52.00; Fri, 10 Nov 2017 01:52:11 -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=QgtaNTZk; 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 S1752642AbdKJJuC (ORCPT + 81 others); Fri, 10 Nov 2017 04:50:02 -0500 Received: from mail-pg0-f65.google.com ([74.125.83.65]:55108 "EHLO mail-pg0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752241AbdKJJtx (ORCPT ); Fri, 10 Nov 2017 04:49:53 -0500 Received: by mail-pg0-f65.google.com with SMTP id l24so6994829pgu.11; Fri, 10 Nov 2017 01:49:53 -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=io0389wHuElGgCnIaPhYzaNnOFwpy9mjinV/pnpB59U=; b=QgtaNTZko5CupTyj74ddvOqTnLp3mI3B5IJgo0CXQztvsXvIAbLaxVd0YnmwmXLVNI +JpjY1XKU5LC4j4MUDMqWcVx1RMwYq/+fbKvTAcOkUxj4WLhipKOA+lnNFWfcV9ve4ke VMRFYNdqNIB80arNQSFJlciy434qSbd2Hdmwg9xGAsUauIlpAp7Us+hdts8xU41POw4b mbqpTxdMHvQ3dY0TSpVO/+RrQ8cPhsOijrbDU2a8IpOa6SQe35A/suqT5OOS1Nlrefnj Jyde97LglKiFcN84fWC1cbgJZ2RiH7LgAZRiO5oQ6k1FQhQ3MjJLvMA4VRt9Wc0ojZjh qFvw== 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=io0389wHuElGgCnIaPhYzaNnOFwpy9mjinV/pnpB59U=; b=TvbydpltgUNKXtuwfmBUyoVv1phwmLIPRov+0ufNZCp0ITvPm5JB0LiI/vMlyCzClx 1RIXsfKoNG8FAW/MPHjpVy1Uzr+iX2u82/eZvJKvn4kQuXoJZcdNad+N6Wi8xoo1ESud dLfIng7+O3JKHTK36ttPnmKODWey2F9q7pYVUqBz9BzZoylhSFxrb/Oek7K3VkQDOREw /hw8FBerJkgvjy2kru6GKZsuXo0IoCSV/XWYr2ra3QszbvpqqUDv8v5r4dVHPm5gmIkg spQZPM4AQtLsAWzURh6WQoXrv5YhQzvoOUWv0bueJhY4zr1xBzllBpX7+3nMZwKxTBuR bZgw== X-Gm-Message-State: AJaThX4Jk5ph4jzA+iIyA+/Z42/tJsiDs7dHIU1ChPRmdnZSbbBFxz7j mDUj40/fMgmm9FLHhjq0PtC/jw== X-Received: by 10.98.13.212 with SMTP id 81mr3781669pfn.205.1510307392557; Fri, 10 Nov 2017 01:49:52 -0800 (PST) Received: from localhost ([203.205.141.123]) by smtp.gmail.com with ESMTPSA id v85sm17665874pfi.71.2017.11.10.01.49.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 10 Nov 2017 01:49:51 -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 v3 0/4] KVM: Paravirt remote TLB flush Date: Fri, 10 Nov 2017 01:49:43 -0800 Message-Id: <1510307387-14812-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 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: Add vCPU running/preempted state KVM: Add paravirt remote TLB flush KVM: X86: introduce invalidate_gpa argument to tlb flush KVM: Add flush_on_enter before guest enter Documentation/virtual/kvm/cpuid.txt | 10 +++++++++ arch/x86/include/asm/kvm_host.h | 2 +- arch/x86/include/uapi/asm/kvm_para.h | 6 +++++ arch/x86/kernel/kvm.c | 43 ++++++++++++++++++++++++++++++++++-- arch/x86/kvm/cpuid.c | 3 ++- arch/x86/kvm/svm.c | 14 ++++++------ arch/x86/kvm/vmx.c | 21 +++++++++--------- arch/x86/kvm/x86.c | 24 ++++++++++++-------- 8 files changed, 93 insertions(+), 30 deletions(-) -- 2.7.4 From 1583662152621415653@xxx Fri Nov 10 07:12:00 +0000 2017 X-GM-THRID: 1583661782195795507 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread