Received: by 10.223.164.202 with SMTP id h10csp289527wrb; Wed, 29 Nov 2017 22:25:02 -0800 (PST) X-Google-Smtp-Source: AGs4zMYp0RltMw4BN/Ijw/BVyf9kWpGhgn16Sa9WjGjj1TZabgsFAonpVt8Pd89gMD/87BnPANgW X-Received: by 10.84.133.164 with SMTP id f33mr1474697plf.241.1512023102344; Wed, 29 Nov 2017 22:25:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512023102; cv=none; d=google.com; s=arc-20160816; b=DOE//aig6sGZm8yJ5aKAQ6CuRIepd0f1zoghd2XY9U0wnjQvLVeUyx5LG5GOqyOtRa xSEReBbzpHB1265XCI/+fum8KVtVuUxDIgvkrm509GWAesUDoH/QcVQyK27vT2yOEomw 1pw5at1ah+bJJMme95qhHHiBNzvfDSo7hRVC9VMbGFx8WDnugm9L53yIYVKXLlHWYPNQ qa9hNMIwBjnp+s+IGj1g+IWMUDXIJxXmHFJCH5qgYJ9iiwuez3hV1wzzjpysY4byzON2 Umd6cn5QDwsh6H8xuieBuchQR7bNsDaiWp10wylvIHfT+6xBPg4/e6wI2yhjA94nAFpB pdmA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:cc:to:subject :message-id:date:from:references:in-reply-to:mime-version :dkim-signature:arc-authentication-results; bh=V7w6dk3OhWTSrks7qBRfaIFMz0STAjgvzqI5VpptoaE=; b=wqqU78eN+cfZXFXzyzhQPlojAHfzNkmk4pQpBLQWj6eqq228J9Nw12EWaxlj+oz42K 7OY+UEylnq6cDJwVzaG2vkdQg9NOwpDDQ7T7cpmHsbSHjxGW6RpLr4wBqnARWvPLo/9Z QmM8YPCvuQbyYQJFl/XDVgNEQum1ef2iYC5FAk66INsCmmr6heYsYhH43Z+B5h3vVni1 sgLqvxx7YZDsNVoCNXT/xJNFH7lJKb5+IsnsNvjQNloWsWqI0Oww7DuLyZAEID6eoFX2 BJ8426CVXMqLX0UaM9Q0XknzAyM/A/UJhApoMlpwfz7ULZlb9gzfdj0oeHgocEtcPk0i QNpw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=hhR8hJ1k; 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 f3si2536315pgn.581.2017.11.29.22.24.49; Wed, 29 Nov 2017 22:25:02 -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=hhR8hJ1k; 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 S1751964AbdK3GYi (ORCPT + 99 others); Thu, 30 Nov 2017 01:24:38 -0500 Received: from mail-ot0-f193.google.com ([74.125.82.193]:45183 "EHLO mail-ot0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751089AbdK3GYh (ORCPT ); Thu, 30 Nov 2017 01:24:37 -0500 Received: by mail-ot0-f193.google.com with SMTP id j64so5221085otj.12; Wed, 29 Nov 2017 22:24:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=V7w6dk3OhWTSrks7qBRfaIFMz0STAjgvzqI5VpptoaE=; b=hhR8hJ1kciC/zfKyVzCpB3LMyGY28UcKQ7WAtcJl6uRfJTD6XmN65YWt7518JX6R3x buuJW3Rqy8XBr9mqWn5xiYMXTGa9iCGodgK7lQVgk0OR8cjkryc8EfGrkz/UMv8/9Ghc 6Pkyi15PTR5NgPY578UZGNVnX76/zMVGwNivH41UcdPJn+uoSATs5a3PkAO1LiW5/UFu OglpOMmT6aJv8RdrLtU+YuLf0Ma6l+zDJokH+/G5JJsWS5s6rRaQqaNVDKWlPmyQkIr8 Kfrg4iWj9mgmY+QQ8JjkG/MydUsdP8X3uGPDVdVHwu4RZMQYKTGij0KPkzUYZi9DJFaV B94Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=V7w6dk3OhWTSrks7qBRfaIFMz0STAjgvzqI5VpptoaE=; b=jnI0RSTjDlIlM9WW7w+hVydxrvFOL6UkgzBwZxnqfmz7ebe2vNiUrVouRga+b56nLk dS1Vgn+XdVEWXgT83RrcURxvlDWlq3+p12Xlt3lb2E87xmzAe4vAlullfcWXQuFkLW5+ vmZLHbTTntfx2ODPO1IkUVxb7VkSBO4l1Zd9Dks4vLKHz+eBCugUx26ozXJliJMQY7YA l0SxFfjvZ4qlN2cspshY4dFdINfsqV3roGM2QRBPn/2pXTQ+SOjFBZRnfUbwJ+/TDZaL M4s29hSvrkkMdiW+6FGE0uqE4x1TJ3GEAxbs25u+Drc+chMHRikxuVRJVMl/HbpGKGC6 j+4w== X-Gm-Message-State: AJaThX4PMS7Q4GCupvNfOXaae6AtVBXO+0qIe8QT4f5S0YSKge4TUWLk 74Uj58tVDPy4wT/vHz8lpRe3tcinbzMtX5KS51g= X-Received: by 10.157.49.40 with SMTP id e37mr4420683otc.45.1512023076537; Wed, 29 Nov 2017 22:24:36 -0800 (PST) MIME-Version: 1.0 Received: by 10.74.209.8 with HTTP; Wed, 29 Nov 2017 22:24:36 -0800 (PST) In-Reply-To: <20171129162118.GA10661@flask> References: <1511841955-7375-1-git-send-email-wanpeng.li@hotmail.com> <1511841955-7375-3-git-send-email-wanpeng.li@hotmail.com> <20171129162118.GA10661@flask> From: Wanpeng Li Date: Thu, 30 Nov 2017 14:24:36 +0800 Message-ID: Subject: Re: [PATCH v6 2/4] KVM: X86: Add Paravirt TLB Shootdown To: =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= Cc: "linux-kernel@vger.kernel.org" , kvm , Paolo Bonzini , Wanpeng Li , Peter Zijlstra Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 2017-11-30 0:21 GMT+08:00 Radim Kr=C4=8Dm=C3=A1=C5=99 : > 2017-11-27 20:05-0800, Wanpeng Li: >> From: Wanpeng Li >> >> 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. >> >> 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. >> >> Testing on a Xeon Gold 6142 2.6GHz 2 sockets, 32 cores, 64 threads, >> so 64 pCPUs, and each VM is 64 vCPUs. >> >> ebizzy -M >> vanilla optimized boost >> 1VM 46799 48670 4% >> 2VM 23962 42691 78% >> 3VM 16152 37539 132% >> >> Cc: Paolo Bonzini >> Cc: Radim Kr=C4=8Dm=C3=A1=C5=99 >> Cc: Peter Zijlstra >> Signed-off-by: Wanpeng Li >> --- >> diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c >> @@ -498,6 +498,37 @@ static void __init kvm_apf_trap_init(void) >> update_intr_gate(X86_TRAP_PF, async_page_fault); >> } >> >> +static DEFINE_PER_CPU(cpumask_t, __pv_tlb_mask); >> + >> +static void kvm_flush_tlb_others(const struct cpumask *cpumask, >> + const struct flush_tlb_info *info) >> +{ >> + u8 state; >> + int cpu; >> + struct kvm_steal_time *src; >> + cpumask_t *flushmask =3D &per_cpu(__pv_tlb_mask, smp_processor_id(= )); >> + >> + if (unlikely(!flushmask)) >> + return; > > I don't see how this can be NULL and if it could, we'd have to call > native_flush_tlb_others() instead of returning anyway. > > Also, Peter mentioned that we're wasting memory (default is 1k per CPU) > when not running on KVM. Hyper-V hijacks x86_platform.apic_post_init() > to achieve late allocation. smp_ops.smp_prepare_cpus seems slightly > better for our purposes, but I don't really like either. > > Couldn't we use use arch_initcall(), or early_initcall() if there are > complications with allocating after smp_init()? Do it in v7. In addition, move pv_mmu_ops.flush_tlb_others =3D kvm_flush_tlb_others to the arch_initcall() fails to work even if I disable rodata through grub. So I continue to keep the callback replacement in kvm_guest_init() and late allocation in arch_initcall(). Regards, Wanpeng Li From 1585418147958746687@xxx Wed Nov 29 16:22:48 +0000 2017 X-GM-THRID: 1585281262875379228 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread