Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp9243ybv; Tue, 18 Feb 2020 16:37:58 -0800 (PST) X-Google-Smtp-Source: APXvYqwVs94EzHaoDzzk1cKBU3FBY/s9hO2yZmzfZX+pLqNl5ZV99vzcnwuV0aPI0jcWV0scSGh+ X-Received: by 2002:a05:6830:13ca:: with SMTP id e10mr18032384otq.267.1582072678707; Tue, 18 Feb 2020 16:37:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582072678; cv=none; d=google.com; s=arc-20160816; b=fvCZ03vIAb97tfFEDyGth+gMNVug51wNtK3/g/CMieIuQDQCRfhUtMF4J94dhyNWRd I1VRUWVy6EZ4eYQba27FlXGZqFm2Yvw/+oDMBVb773a33JkJpdRNvJboA9kZY+ULKqJl YjPsW4GYTFuIn824OyC3PRuwtZC92tSm5rXqwHtBKIhYIUV+urVQJ2M2iS+1AmFDkJ0F a1J07UjUfsZ6Tj1MW+JS7NixJRx66mkTDYZevQCal+4xaJ13mpamS1O6xnIYBi9l1WB3 eRhAVUvRyYnlfK+C3C9jmLEFfTyiJFvhF35mYsFlUJUaZQkUvdH2QJ1x9OKq1Ju+A3Vq 8OkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=XUM7KYT8zgsfj9AzoZxftNzri4odTmzfAEqNR5lKaWw=; b=P3He9zLVEUHkzDDSbIN05lpUXNhClZO1KR/zVqyiKjoiiXAkL7IG7FmoV8xw7lQBOI BHXbKSjWbfqnR8tbAPTA7p7/8tCCc/iShnCq+7C4hC2Ny61TCkzDOhCava5ZioF6/O0z q6vtTnvt7G1duXCIkH5uw9lZ35ZBn9DKUpxcLQhlBOvmGsjCTk5Q0W8oy1t1rClUnfSZ OwXGiZrlmY7qtGT31DaXpFPgRh1TF+hXTEVeWHilqqhFeXuZl4H2KITV5Dvfv/FdCIL5 AMWprOU/qyxjtRy+AskGCwvvBOoS4duVSRfDC/28vgjwbSh5JRqKFNZ7X0auQPuXiyV8 gmPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=qfZzlQbj; 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=QUARANTINE 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 y24si8660657oih.24.2020.02.18.16.37.46; Tue, 18 Feb 2020 16:37:58 -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=qfZzlQbj; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727762AbgBSAcj (ORCPT + 99 others); Tue, 18 Feb 2020 19:32:39 -0500 Received: from mail-ot1-f66.google.com ([209.85.210.66]:36093 "EHLO mail-ot1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726595AbgBSAci (ORCPT ); Tue, 18 Feb 2020 19:32:38 -0500 Received: by mail-ot1-f66.google.com with SMTP id j20so21479357otq.3; Tue, 18 Feb 2020 16:32:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=XUM7KYT8zgsfj9AzoZxftNzri4odTmzfAEqNR5lKaWw=; b=qfZzlQbjZ0+031d4jhozHvVorMj77fI0+w6j921OCntJmi4EDigsgKgaS6H31x8TFs E7dKwMFPvLt10gT0VEmBXdpZhNNOuZJH3pWXR/bfTSigaa3OBq/Y4ELNhGrychMqk+mJ HslduXnGz9KGO3Mj/0jyIOlfd7dJOCzuyph/+wwGh+oZyBY57K5apnYbUqe3i3sDjz7S MecOvz5isl7ZoPmFvgLEhrUtMYsr79sVr89X0T1i+YiQIID9U+28EzkNB2FMASwelGVx z/1+KRrF9hox8B4DJdiBmRJaQLdCa+EgrH6GhKNTxY16587oAq06gV0w/MEHIfAaniX3 yS0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=XUM7KYT8zgsfj9AzoZxftNzri4odTmzfAEqNR5lKaWw=; b=CXft6/9mTGlA7TQ04Sqqw5EK+iYjD9dEwv6ak5NZXy4xkcGlG2k19Xgh19EpvqeavQ 59lzAFS8EXuJMeWYsmOFcYcjc/aP87vj8ImCj+V3Z+qaTwhk6HrgoXPVdlbf0MVmJ6SI /bOKRumt79wlM0iKAr0kNpTBZgkY7uO6RkF8bgO+FbvrV8HpRjacFZH45PYjbS+wVRw0 75xK15mov6aiWEajjlQpPOZXSqj52poO7Bul9JbE4O+jadTBP2rMqr7ac4jMdRAcUBCA UGfXOBzLVVeBd/tcH2YIJWEpS0cKumat9KJBnPQB0JLu4kc3Y0FKJwmiThkUVcdSq3WC oYuA== X-Gm-Message-State: APjAAAWAor/jbIakY9F+UuzH2Ps2zzEbq8nQBuBdLrz4uVPx1ByYtpnC c+TQAldIB1xxfUoMhItvI2DleB8DLxfy+v6lU+g= X-Received: by 2002:a05:6830:1011:: with SMTP id a17mr16743411otp.45.1582072357905; Tue, 18 Feb 2020 16:32:37 -0800 (PST) MIME-Version: 1.0 References: <1581988630-19182-1-git-send-email-wanpengli@tencent.com> <87r1ys7xpk.fsf@vitty.brq.redhat.com> In-Reply-To: <87r1ys7xpk.fsf@vitty.brq.redhat.com> From: Wanpeng Li Date: Wed, 19 Feb 2020 08:32:26 +0800 Message-ID: Subject: Re: [PATCH v4 1/2] KVM: X86: Less kvmclock sync induced vmexits after VM boots To: Vitaly Kuznetsov Cc: Paolo Bonzini , Sean Christopherson , Wanpeng Li , Jim Mattson , Joerg Roedel , LKML , kvm Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 18 Feb 2020 at 22:54, Vitaly Kuznetsov wrote: > > Wanpeng Li writes: > > > From: Wanpeng Li > > > > In the progress of vCPUs creation, it queues a kvmclock sync worker to the global > > workqueue before each vCPU creation completes. Each worker will be scheduled > > after 300 * HZ delay and request a kvmclock update for all vCPUs and kick them > > out. This is especially worse when scaling to large VMs due to a lot of vmexits. > > Just one worker as a leader to trigger the kvmclock sync request for all vCPUs is > > enough. > > > > Signed-off-by: Wanpeng Li > > --- > > v3 -> v4: > > * check vcpu->vcpu_idx > > > > arch/x86/kvm/x86.c | 5 +++-- > > 1 file changed, 3 insertions(+), 2 deletions(-) > > > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > > index fb5d64e..d0ba2d4 100644 > > --- a/arch/x86/kvm/x86.c > > +++ b/arch/x86/kvm/x86.c > > @@ -9390,8 +9390,9 @@ void kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu) > > if (!kvmclock_periodic_sync) > > return; > > > > - schedule_delayed_work(&kvm->arch.kvmclock_sync_work, > > - KVMCLOCK_SYNC_PERIOD); > > + if (vcpu->vcpu_idx == 0) > > + schedule_delayed_work(&kvm->arch.kvmclock_sync_work, > > + KVMCLOCK_SYNC_PERIOD); > > } > > > > void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu) > > Forgive me my ignorance, I was under the impression > schedule_delayed_work() doesn't do anything if the work is already > queued (see queue_delayed_work_on()) and we seem to be scheduling the > same work (&kvm->arch.kvmclock_sync_work) which is per-kvm (not > per-vcpu). Do we actually happen to finish executing it before next vCPU > is created or why does the storm you describe happens? I miss it, ok, let's just make patch 2/2 upstream. Wanpeng