Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3455432imm; Tue, 29 May 2018 07:33:38 -0700 (PDT) X-Google-Smtp-Source: AB8JxZr4nbpeFJwbsun7Rn03VcMyJUDdTs5aqvr1P2nm12fXEPhZYok0kFbr56nh8QQfvmDwmo4w X-Received: by 2002:a65:48c9:: with SMTP id o9-v6mr14320720pgs.106.1527604418770; Tue, 29 May 2018 07:33:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527604418; cv=none; d=google.com; s=arc-20160816; b=zybzzzsrumPPmbT0+GX7g0WtHFDHChKZV5xmqb1ucRg5TqqaIS+eZNYHJ2o5HFMdom 38Wxxtj9kVc8h9WD7XLx1bj0VoZQ14AjDw43nUJ2xlcYDdYFkUKJN7RBJa1y731yBKYt gc2ukE1Ri83OXzXL+8w2rWxdXlFyQw55JyGGswytKfcmPstEkFbOrUt1yD11D5pfWaa3 4SKTWpaJMg0t3WzR2duipomm1QJgS/FUToQgqJdzA41tbFO68GpgGA2b3eLfYZOFaGMF OQRmhcuD0Z36Rk+L8J8qgv5ur9PZfzKfvdOggn5DI02vcES3eKhMS5saOgaGIxE1FzPd +Nag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=6MRp7L72pBw5okNRBaw9xat6JBUDTa0mW9bG2TLrV+U=; b=AE6TRX1XuGufZLX56sv5YPbaQndVqu9I67v2tPkcxAEFx3+1jGNojO+qvlTZV2m4Xn K9i1GaFxi8Ji1NbIihk08OWyCgx8AmmUeesJb5eLiQKsk8lE0/hdihnx/6+WRsESnoLO kBniTwWNcT8j+rn2oOvxTt1oK9p+Vak7mJyEsk0GT3lBhIT1SUm7VT/UheVbhr7hTovy sIo9MarV7bPCHOdm2xL5yNQlg3R2HdN0okD6arY08OUsS4dFuknOcAC3aToJFQpigzP8 ViKt0G9JCqJ5ZRQu20TqGK55CoEf33veQLHYi49xC/SmhDlrJX8welWiFJ+NszOVz63g BeFg== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 91-v6si12228065ple.308.2018.05.29.07.33.24; Tue, 29 May 2018 07:33:38 -0700 (PDT) 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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935048AbeE2ObJ (ORCPT + 99 others); Tue, 29 May 2018 10:31:09 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:33088 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S934857AbeE2ObF (ORCPT ); Tue, 29 May 2018 10:31:05 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id F1BEBCB9D7; Tue, 29 May 2018 14:31:04 +0000 (UTC) Received: from flask (unknown [10.43.2.80]) by smtp.corp.redhat.com (Postfix) with SMTP id 39E952023487; Tue, 29 May 2018 14:31:03 +0000 (UTC) Received: by flask (sSMTP sendmail emulation); Tue, 29 May 2018 16:31:02 +0200 Date: Tue, 29 May 2018 16:31:02 +0200 From: Radim =?utf-8?B?S3LEjW3DocWZ?= To: Wanpeng Li Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Paolo Bonzini Subject: Re: [PATCH] KVM: VMX: Optimize tscdeadline timer latency Message-ID: <20180529143102.GC7819@flask> References: <1527576797-5738-1-git-send-email-wanpengli@tencent.com> <20180529142324.GA7819@flask> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20180529142324.GA7819@flask> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.1]); Tue, 29 May 2018 14:31:05 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.1]); Tue, 29 May 2018 14:31:05 +0000 (UTC) for IP:'10.11.54.4' DOMAIN:'int-mx04.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'rkrcmar@redhat.com' RCPT:'' Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 2018-05-29 16:23+0200, Radim Krčmář: > 2018-05-29 14:53+0800, Wanpeng Li: > > From: Wanpeng Li > > > > 'Commit d0659d946be0 ("KVM: x86: add option to advance tscdeadline > > hrtimer expiration")' advances the tscdeadline (the timer is emulated > > by hrtimer) expiration in order that the latency which is incurred > > by hypervisor (apic_timer_fn -> vmentry) can be avoided. This patch > > adds the advance tscdeadline expiration support to which the tscdeadline > > timer is emulated by VMX preemption timer to reduce the hypervisor > > lantency (handle_preemption_timer -> vmentry). clockevents infrastruture > > can program minimum delay if hrtimer feeds a expiration in the past, > > we set delta_tsc to 1(which will be converted to 0 before vmentry) > > which can lead to an immediately vmexit when delta_tsc is not bigger > > than advance ns. > > > > This patch can reduce ~63% latency (~4450 cycles to ~1660 cycles on > > a haswell desktop) for kvm-unit-tests/tscdeadline_latency when testing > > busy waits. > > > > Cc: Paolo Bonzini > > Cc: Radim Krčmář > > Signed-off-by: Wanpeng Li > > --- > > diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c > > @@ -12444,6 +12444,12 @@ static int vmx_set_hv_timer(struct kvm_vcpu *vcpu, u64 guest_deadline_tsc) > > tscl = rdtsc(); > > guest_tscl = kvm_read_l1_tsc(vcpu, tscl); > > delta_tsc = max(guest_deadline_tsc, guest_tscl) - guest_tscl; > > + lapic_timer_advance_cycles = nsec_to_cycles(vcpu, lapic_timer_advance_ns); > > + if (delta_tsc > lapic_timer_advance_cycles) > > + delta_tsc -= lapic_timer_advance_cycles; > > + else > > + delta_tsc = 1; > > Why don't we just "return 1" to say that the timer has expired? This case might be rare, so setting delta_tsc = 0 would be safer.