From: Yoan Picchi <yoan.picchi@arm.com> To: maz@kernel.org, james.morse@arm.com, julien.thierry.kdev@gmail.com, suzuki.poulose@arm.com, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu Cc: catalin.marinas@arm.com, Yoan Picchi <yoan.picchi@arm.com>, will@kernel.org Subject: [PATCH v2 1/3] KVM: arm64: Add a stage2 page fault counter for kvm_stat Date: Tue, 20 Apr 2021 14:08:23 +0100 [thread overview] Message-ID: <20210420130825.15585-2-yoan.picchi@arm.com> (raw) In-Reply-To: <20210420130825.15585-1-yoan.picchi@arm.com> This counter is meant to detect stage 2 page fault exits. This is meant to measure how much those page fault influence the performance (by comparing this number of exits to some other exit causes). For now this counter is generic, but some more granularity is planned in the next commits so that one know how much of the page fault are for memory allocation, or for mmio for instance. The idea being that one using this counter can get a better idea of what is trigerring those exits to try to fix it. Signed-off-by: Yoan Picchi <yoan.picchi@arm.com> --- arch/arm64/include/asm/kvm_host.h | 1 + arch/arm64/kvm/guest.c | 1 + arch/arm64/kvm/mmu.c | 2 ++ 3 files changed, 4 insertions(+) diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h index 3d10e6527..02891ce94 100644 --- a/arch/arm64/include/asm/kvm_host.h +++ b/arch/arm64/include/asm/kvm_host.h @@ -561,6 +561,7 @@ struct kvm_vcpu_stat { u64 wfi_exit_stat; u64 mmio_exit_user; u64 mmio_exit_kernel; + u64 stage2_abort_exit; u64 exits; }; diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c index 9bbd30e62..82a4b6275 100644 --- a/arch/arm64/kvm/guest.c +++ b/arch/arm64/kvm/guest.c @@ -38,6 +38,7 @@ struct kvm_stats_debugfs_item debugfs_entries[] = { VCPU_STAT("wfi_exit_stat", wfi_exit_stat), VCPU_STAT("mmio_exit_user", mmio_exit_user), VCPU_STAT("mmio_exit_kernel", mmio_exit_kernel), + VCPU_STAT("stage2_abort_exit", stage2_abort_exit), VCPU_STAT("exits", exits), VCPU_STAT("halt_poll_success_ns", halt_poll_success_ns), VCPU_STAT("halt_poll_fail_ns", halt_poll_fail_ns), diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c index 77cb2d28f..c3527ccf6 100644 --- a/arch/arm64/kvm/mmu.c +++ b/arch/arm64/kvm/mmu.c @@ -966,6 +966,7 @@ int kvm_handle_guest_abort(struct kvm_vcpu *vcpu) fault_ipa = kvm_vcpu_get_fault_ipa(vcpu); is_iabt = kvm_vcpu_trap_is_iabt(vcpu); + /* Synchronous External Abort? */ if (kvm_vcpu_abt_issea(vcpu)) { /* @@ -980,6 +981,7 @@ int kvm_handle_guest_abort(struct kvm_vcpu *vcpu) trace_kvm_guest_fault(*vcpu_pc(vcpu), kvm_vcpu_get_esr(vcpu), kvm_vcpu_get_hfar(vcpu), fault_ipa); + vcpu->stat.stage2_abort_exit++; /* Check the stage-2 fault is trans. fault or write fault */ if (fault_status != FSC_FAULT && fault_status != FSC_PERM && -- 2.17.1 _______________________________________________ kvmarm mailing list kvmarm@lists.cs.columbia.edu https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
WARNING: multiple messages have this Message-ID (diff)
From: Yoan Picchi <yoan.picchi@arm.com> To: maz@kernel.org, james.morse@arm.com, julien.thierry.kdev@gmail.com, suzuki.poulose@arm.com, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu Cc: catalin.marinas@arm.com, will@kernel.org, Yoan Picchi <yoan.picchi@arm.com> Subject: [PATCH v2 1/3] KVM: arm64: Add a stage2 page fault counter for kvm_stat Date: Tue, 20 Apr 2021 14:08:23 +0100 [thread overview] Message-ID: <20210420130825.15585-2-yoan.picchi@arm.com> (raw) In-Reply-To: <20210420130825.15585-1-yoan.picchi@arm.com> This counter is meant to detect stage 2 page fault exits. This is meant to measure how much those page fault influence the performance (by comparing this number of exits to some other exit causes). For now this counter is generic, but some more granularity is planned in the next commits so that one know how much of the page fault are for memory allocation, or for mmio for instance. The idea being that one using this counter can get a better idea of what is trigerring those exits to try to fix it. Signed-off-by: Yoan Picchi <yoan.picchi@arm.com> --- arch/arm64/include/asm/kvm_host.h | 1 + arch/arm64/kvm/guest.c | 1 + arch/arm64/kvm/mmu.c | 2 ++ 3 files changed, 4 insertions(+) diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h index 3d10e6527..02891ce94 100644 --- a/arch/arm64/include/asm/kvm_host.h +++ b/arch/arm64/include/asm/kvm_host.h @@ -561,6 +561,7 @@ struct kvm_vcpu_stat { u64 wfi_exit_stat; u64 mmio_exit_user; u64 mmio_exit_kernel; + u64 stage2_abort_exit; u64 exits; }; diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c index 9bbd30e62..82a4b6275 100644 --- a/arch/arm64/kvm/guest.c +++ b/arch/arm64/kvm/guest.c @@ -38,6 +38,7 @@ struct kvm_stats_debugfs_item debugfs_entries[] = { VCPU_STAT("wfi_exit_stat", wfi_exit_stat), VCPU_STAT("mmio_exit_user", mmio_exit_user), VCPU_STAT("mmio_exit_kernel", mmio_exit_kernel), + VCPU_STAT("stage2_abort_exit", stage2_abort_exit), VCPU_STAT("exits", exits), VCPU_STAT("halt_poll_success_ns", halt_poll_success_ns), VCPU_STAT("halt_poll_fail_ns", halt_poll_fail_ns), diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c index 77cb2d28f..c3527ccf6 100644 --- a/arch/arm64/kvm/mmu.c +++ b/arch/arm64/kvm/mmu.c @@ -966,6 +966,7 @@ int kvm_handle_guest_abort(struct kvm_vcpu *vcpu) fault_ipa = kvm_vcpu_get_fault_ipa(vcpu); is_iabt = kvm_vcpu_trap_is_iabt(vcpu); + /* Synchronous External Abort? */ if (kvm_vcpu_abt_issea(vcpu)) { /* @@ -980,6 +981,7 @@ int kvm_handle_guest_abort(struct kvm_vcpu *vcpu) trace_kvm_guest_fault(*vcpu_pc(vcpu), kvm_vcpu_get_esr(vcpu), kvm_vcpu_get_hfar(vcpu), fault_ipa); + vcpu->stat.stage2_abort_exit++; /* Check the stage-2 fault is trans. fault or write fault */ if (fault_status != FSC_FAULT && fault_status != FSC_PERM && -- 2.17.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-04-20 13:34 UTC|newest] Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-04-20 13:08 [PATCH v2 0/3] KVM: arm64: add more event counters for kvm_stat Yoan Picchi 2021-04-20 13:08 ` Yoan Picchi 2021-04-20 13:08 ` Yoan Picchi [this message] 2021-04-20 13:08 ` [PATCH v2 1/3] KVM: arm64: Add a stage2 page fault counter " Yoan Picchi 2021-04-20 13:31 ` Marc Zyngier 2021-04-20 13:31 ` Marc Zyngier 2021-04-20 13:08 ` [PATCH v2 2/3] KVM: arm64: Add two page mapping counters " Yoan Picchi 2021-04-20 13:08 ` Yoan Picchi 2021-04-20 13:52 ` Marc Zyngier 2021-04-20 13:52 ` Marc Zyngier 2021-04-20 13:08 ` [PATCH v2 3/3] KVM: arm64: Add irq_exit counter " Yoan Picchi 2021-04-20 13:08 ` Yoan Picchi 2021-04-20 13:26 ` Marc Zyngier 2021-04-20 13:26 ` Marc Zyngier
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210420130825.15585-2-yoan.picchi@arm.com \ --to=yoan.picchi@arm.com \ --cc=catalin.marinas@arm.com \ --cc=james.morse@arm.com \ --cc=julien.thierry.kdev@gmail.com \ --cc=kvmarm@lists.cs.columbia.edu \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=maz@kernel.org \ --cc=suzuki.poulose@arm.com \ --cc=will@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.