From: Anup Patel <anup@brainfault.org>
To: zhouquan@iscas.ac.cn
Cc: ajones@ventanamicro.com, atishp@atishpatra.org,
paul.walmsley@sifive.com, palmer@dabbelt.com,
aou@eecs.berkeley.edu, mark.rutland@arm.com,
alexander.shishkin@linux.intel.com, jolsa@kernel.org,
linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org,
kvm@vger.kernel.org, kvm-riscv@lists.infradead.org,
linux-perf-users@vger.kernel.org
Subject: Re: [PATCH v4 0/2] riscv: Add perf support to collect KVM guest statistics from host side
Date: Tue, 15 Oct 2024 12:12:55 +0530 [thread overview]
Message-ID: <CAAhSdy1nmpiSfi-9B0ZXS9s6CYs_R9YZfd6rrXNc-BQHucm6ww@mail.gmail.com> (raw)
In-Reply-To: <cover.1728957131.git.zhouquan@iscas.ac.cn>
On Tue, Oct 15, 2024 at 8:28 AM <zhouquan@iscas.ac.cn> wrote:
>
> From: Quan Zhou <zhouquan@iscas.ac.cn>
>
> Add basic guest support to RISC-V perf, enabling it to distinguish
> whether PMU interrupts occur in the host or the guest, and then
> collect some basic guest information from the host side
> (guest os callchain is not supported for now).
>
> Based on the x86/arm implementation, tested with kvm-riscv.
> test env:
> - host: qemu-9.0.0
> - guest: qemu-9.0.0 --enable-kvm (only start one guest and run top)
>
> -----------------------------------------
> 1) perf kvm top
> ./perf kvm --host --guest \
> --guestkallsyms=/<path-to-kallsyms> \
> --guestmodules=/<path-to-modules> top
>
> PerfTop: 41 irqs/sec kernel:97.6% us: 0.0% guest kernel: 0.0% guest us: 0.0% exact: 0.0% [250Hz cycles:P], (all, 4 CPUs)
> -------------------------------------------------------------------------------
>
> 64.57% [kernel] [k] default_idle_call
> 3.12% [kernel] [k] _raw_spin_unlock_irqrestore
> 3.03% [guest.kernel] [g] mem_serial_out
> 2.61% [kernel] [k] handle_softirqs
> 2.32% [kernel] [k] do_trap_ecall_u
> 1.71% [kernel] [k] _raw_spin_unlock_irq
> 1.26% [guest.kernel] [g] do_raw_spin_lock
> 1.25% [kernel] [k] finish_task_switch.isra.0
> 1.16% [kernel] [k] do_idle
> 0.77% libc.so.6 [.] ioctl
> 0.76% [kernel] [k] queue_work_on
> 0.69% [kernel] [k] __local_bh_enable_ip
> 0.67% [guest.kernel] [g] __noinstr_text_start
> 0.64% [guest.kernel] [g] mem_serial_in
> 0.41% libc.so.6 [.] pthread_sigmask
> 0.39% [kernel] [k] mem_cgroup_uncharge_skmem
> 0.39% [kernel] [k] __might_resched
> 0.39% [guest.kernel] [g] _nohz_idle_balance.isra.0
> 0.37% [kernel] [k] sched_balance_update_blocked_averages
> 0.34% [kernel] [k] sched_balance_rq
>
> 2) perf kvm record
> ./perf kvm --host --guest \
> --guestkallsyms=/<path-to-kallsyms> \
> --guestmodules=/<path-to-modules> record -a sleep 60
>
> [ perf record: Woken up 3 times to write data ]
> [ perf record: Captured and wrote 1.292 MB perf.data.kvm (17990 samples) ]
>
> 3) perf kvm report
> ./perf kvm --host --guest \
> --guestkallsyms=/<path-to-kallsyms> \
> --guestmodules=/<path-to-modules> report -i perf.data.kvm
>
> # Total Lost Samples: 0
> #
> # Samples: 17K of event 'cycles:P'
> # Event count (approx.): 269968947184
> #
> # Overhead Command Shared Object Symbol
> # ........ ............... ....................... ..............................................
> #
> 61.86% swapper [kernel.kallsyms] [k] default_idle_call
> 2.93% :6463 [guest.kernel.kallsyms] [g] do_raw_spin_lock
> 2.82% :6462 [guest.kernel.kallsyms] [g] mem_serial_out
> 2.11% sshd [kernel.kallsyms] [k] _raw_spin_unlock_irqrestore
> 1.78% :6462 [guest.kernel.kallsyms] [g] do_raw_spin_lock
> 1.37% swapper [kernel.kallsyms] [k] handle_softirqs
> 1.36% swapper [kernel.kallsyms] [k] do_idle
> 1.21% sshd [kernel.kallsyms] [k] do_trap_ecall_u
> 1.21% sshd [kernel.kallsyms] [k] _raw_spin_unlock_irq
> 1.11% qemu-system-ris [kernel.kallsyms] [k] do_trap_ecall_u
> 0.93% qemu-system-ris libc.so.6 [.] ioctl
> 0.89% sshd [kernel.kallsyms] [k] __local_bh_enable_ip
> 0.77% qemu-system-ris [kernel.kallsyms] [k] _raw_spin_unlock_irqrestore
> 0.68% qemu-system-ris [kernel.kallsyms] [k] queue_work_on
> 0.65% sshd [kernel.kallsyms] [k] handle_softirqs
> 0.44% :6462 [guest.kernel.kallsyms] [g] mem_serial_in
> 0.42% sshd libc.so.6 [.] pthread_sigmask
> 0.34% :6462 [guest.kernel.kallsyms] [g] serial8250_tx_chars
> 0.30% swapper [kernel.kallsyms] [k] finish_task_switch.isra.0
> 0.29% swapper [kernel.kallsyms] [k] sched_balance_rq
> 0.29% sshd [kernel.kallsyms] [k] __might_resched
> 0.26% swapper [kernel.kallsyms] [k] tick_nohz_idle_exit
> 0.26% swapper [kernel.kallsyms] [k] sched_balance_update_blocked_averages
> 0.26% swapper [kernel.kallsyms] [k] _nohz_idle_balance.isra.0
> 0.24% qemu-system-ris [kernel.kallsyms] [k] finish_task_switch.isra.0
> 0.23% :6462 [guest.kernel.kallsyms] [g] __noinstr_text_start
>
> ---
> Change since v3:
> - Rebased on v6.12-rc3
>
> Change since v2:
> - Rebased on v6.11-rc7
> - Keep the misc type consistent with other architectures as `unsigned long` (Andrew)
> - Add the same comment for `kvm_arch_pmi_in_guest` as in arm64. (Andrew)
>
> Change since v1:
> - Rebased on v6.11-rc3
> - Fix incorrect misc type (Andrew)
>
> ---
> v3 link:
> https://lore.kernel.org/all/cover.1726126795.git.zhouquan@iscas.ac.cn/
> v2 link:
> https://lore.kernel.org/all/cover.1723518282.git.zhouquan@iscas.ac.cn/
> v1 link:
> https://lore.kernel.org/all/cover.1721271251.git.zhouquan@iscas.ac.cn/
>
> Quan Zhou (2):
> riscv: perf: add guest vs host distinction
> riscv: KVM: add basic support for host vs guest profiling
>
> arch/riscv/include/asm/kvm_host.h | 10 ++++++++
> arch/riscv/include/asm/perf_event.h | 6 +++++
> arch/riscv/kernel/perf_callchain.c | 38 +++++++++++++++++++++++++++++
> arch/riscv/kvm/Kconfig | 1 +
> arch/riscv/kvm/main.c | 12 +++++++--
> arch/riscv/kvm/vcpu.c | 7 ++++++
> 6 files changed, 72 insertions(+), 2 deletions(-)
Please include Reviewed-by tags obtained on previous patch revisions.
Queued this series for Linux-6.13
Regards,
Anup
>
>
> base-commit: 8e929cb546ee42c9a61d24fae60605e9e3192354
> --
> 2.34.1
>
prev parent reply other threads:[~2024-10-15 6:43 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-15 2:58 [PATCH v4 0/2] riscv: Add perf support to collect KVM guest statistics from host side zhouquan
2024-10-15 2:58 ` [PATCH v4 1/2] riscv: perf: add guest vs host distinction zhouquan
2024-10-15 2:58 ` [PATCH v4 2/2] riscv: KVM: add basic support for host vs guest profiling zhouquan
2024-10-15 6:42 ` Anup Patel [this message]
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=CAAhSdy1nmpiSfi-9B0ZXS9s6CYs_R9YZfd6rrXNc-BQHucm6ww@mail.gmail.com \
--to=anup@brainfault.org \
--cc=ajones@ventanamicro.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=aou@eecs.berkeley.edu \
--cc=atishp@atishpatra.org \
--cc=jolsa@kernel.org \
--cc=kvm-riscv@lists.infradead.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=mark.rutland@arm.com \
--cc=palmer@dabbelt.com \
--cc=paul.walmsley@sifive.com \
--cc=zhouquan@iscas.ac.cn \
/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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).