From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A2A061741F8; Thu, 25 Jul 2024 12:38:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721911119; cv=none; b=VEmFPa/AZYxuXVJwVkH37KH28/S8DNVQuuD12qUAwyWZkqcEq6bO9KsPT63rkRJQtxm54Ra0WqyRnh8XS6Aw6ilPqA8WWGjmGn+3nQHznjYpz/oJNrx3bIYuCZ9hnf+j74YsysvudXGK4bD+8TLy+yXWpAwUb+3dIUptaEnTJEk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721911119; c=relaxed/simple; bh=VG+cP0kFl7e/oaB73V3oKDo0+7NMuvP6lVqYhJM22ps=; h=Date:Message-ID:From:To:Cc:Subject:In-Reply-To:References: MIME-Version:Content-Type; b=OcSjzt4IrdL06SKvm1yV8Zq/qzAfG6AHeQ9qHBMVwOcaWux06BBdPvLXac8EH6x+qyWpDI6XZMoXaRjKqWR5ICUVosog00HrcxcXX4SLX/o7EkNse055dir1iGS6h+SSPpeUuqGtWqrCEXOXAC57s3ltJssU/eOmMRISnxwUijY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=D7eRuQ+9; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="D7eRuQ+9" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 71432C116B1; Thu, 25 Jul 2024 12:38:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721911119; bh=VG+cP0kFl7e/oaB73V3oKDo0+7NMuvP6lVqYhJM22ps=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=D7eRuQ+9Roalcj7cFfAnZbXasHzhzgikkU6RlUdQ+VRvNx8CP2c1UWvUSrOmPV1XT I1JWAx5pBzFP8D4LE7QRkmZ1bkwoWiBUCoV9LIthgGWdLSoNIQFpp4ht5XsgPL5DI0 CLyVZfRZTz/GjjjZgq5dZO1a7Ikc4JerefFCdarODgaAyJyC0PD8zyigHGdAbSowyy bpa74XKJlp4fO3fywS58Doft2m+B4KDDmI23tGw7GUAdJtbiLDkZSVXNcTVKHT4VrL LuDnWaMCSlPnFQj0prqPGQlfaNhJzZCC20jjvcJuVtlR+rVtSZRq8PygrNbOrh59Qp EJHbnnn04QuUg== Received: from sofa.misterjones.org ([185.219.108.64] helo=goblin-girl.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1sWxjx-00FITm-6c; Thu, 25 Jul 2024 13:38:37 +0100 Date: Thu, 25 Jul 2024 13:38:36 +0100 Message-ID: <865xst3aur.wl-maz@kernel.org> From: Marc Zyngier To: jianyong.wu@outlook.com Cc: oliver.upton@linux.dev, kvmarm@lists.linux.dev, linux-kernel@vger.kernel.org Subject: Re: [PATCH] KVM: arm64: Add some statistics under kvm debugfs In-Reply-To: References: User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/29.3 (aarch64-unknown-linux-gnu) MULE/6.0 (HANACHIRUSATO) Precedence: bulk X-Mailing-List: kvmarm@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: jianyong.wu@outlook.com, oliver.upton@linux.dev, kvmarm@lists.linux.dev, linux-kernel@vger.kernel.org X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false On Thu, 25 Jul 2024 04:27:38 +0100, jianyong.wu@outlook.com wrote: > > From: Jianyong Wu > > There are some statistics missing from kvm debugfs on arm64. For > example: irq_exits number, irq_injection number and so on. But it's > useful to monitoring kvm performance, so, add them here. > > Signed-off-by: Jianyong Wu > --- > arch/arm64/include/asm/kvm_host.h | 3 +++ > arch/arm64/kvm/guest.c | 3 +++ > arch/arm64/kvm/handle_exit.c | 1 + > arch/arm64/kvm/sys_regs.c | 1 + > arch/arm64/kvm/vgic/vgic.c | 1 + > 5 files changed, 9 insertions(+) > > diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h > index 9e8a496fb284..1e20319977b3 100644 > --- a/arch/arm64/include/asm/kvm_host.h > +++ b/arch/arm64/include/asm/kvm_host.h > @@ -1024,6 +1024,9 @@ struct kvm_vcpu_stat { > u64 mmio_exit_user; > u64 mmio_exit_kernel; > u64 signal_exits; > + u64 irq_exits; > + u64 irq_injections; > + u64 handle_sys_reg_exits; > u64 exits; > }; > > diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c > index e2f762d959bb..a3783388a802 100644 > --- a/arch/arm64/kvm/guest.c > +++ b/arch/arm64/kvm/guest.c > @@ -50,6 +50,9 @@ const struct _kvm_stats_desc kvm_vcpu_stats_desc[] = { > STATS_DESC_COUNTER(VCPU, mmio_exit_user), > STATS_DESC_COUNTER(VCPU, mmio_exit_kernel), > STATS_DESC_COUNTER(VCPU, signal_exits), > + STATS_DESC_COUNTER(VCPU, irq_exits), > + STATS_DESC_COUNTER(VCPU, irq_injections), > + STATS_DESC_COUNTER(VCPU, handle_sys_reg_exits), > STATS_DESC_COUNTER(VCPU, exits) > }; > > diff --git a/arch/arm64/kvm/handle_exit.c b/arch/arm64/kvm/handle_exit.c > index 617ae6dea5d5..d69ab1207da4 100644 > --- a/arch/arm64/kvm/handle_exit.c > +++ b/arch/arm64/kvm/handle_exit.c > @@ -335,6 +335,7 @@ int handle_exit(struct kvm_vcpu *vcpu, int exception_index) > > switch (exception_index) { > case ARM_EXCEPTION_IRQ: > + ++vcpu->stat.irq_exits; > return 1; > case ARM_EXCEPTION_EL1_SERROR: > return 1; > diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c > index c9f4f387155f..2a6bfc673636 100644 > --- a/arch/arm64/kvm/sys_regs.c > +++ b/arch/arm64/kvm/sys_regs.c > @@ -3568,6 +3568,7 @@ int kvm_handle_sys_reg(struct kvm_vcpu *vcpu) > int Rt = kvm_vcpu_sys_get_rt(vcpu); > int sr_idx; > > + ++vcpu->stat.handle_sys_reg_exits; > trace_kvm_handle_sys_reg(esr); > > if (triage_sysreg_trap(vcpu, &sr_idx)) > diff --git a/arch/arm64/kvm/vgic/vgic.c b/arch/arm64/kvm/vgic/vgic.c > index 4ec93587c8cd..9f7371e01f35 100644 > --- a/arch/arm64/kvm/vgic/vgic.c > +++ b/arch/arm64/kvm/vgic/vgic.c > @@ -454,6 +454,7 @@ int kvm_vgic_inject_irq(struct kvm *kvm, struct kvm_vcpu *vcpu, > > vgic_queue_irq_unlock(kvm, irq, flags); > vgic_put_irq(kvm, irq); > + ++vcpu->stat.irq_injections; Like for most stats, I don't think this is warranted. Most of these already have trace points associated to it, and you can readily *count* those. These stats are an absolute waste of cycles and memory, and I have suggested alternative approaches in the past (all of them relying on the tracing infrastructure). Thanks, M. -- Without deviation from the norm, progress is not possible.