perf kvm stat live doesn't work?

deviantintegral

New Member
Dec 22, 2023
9
4
3
I'm looking into a possible performance issue on a host, and would like to use perf to get some information. Everything I see online says I should be able to use "perf kvm stat live". However, I can't get stat to work at all. `perf kvm --host top` works, so it's not like everything is broken. The man page still has "perf kvm stat live" as an example.

Any ideas?

Code:
root@elevator:~# uname -a
Linux elevator 6.8.12-10-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-10 (2025-04-18T07:39Z) x86_64 GNU/Linux
root@elevator:~# dpkg -l | grep linux-tools
ii  linux-tools-6.8                      6.8.12-10                           amd64        Linux kernel version specific tools for version 6.8
root@elevator:~# perf_6.8 -v
perf version 6.8.12.10.pve.ga7bbcbe5de91
root@elevator:~# perf_6.8 kvm stat live

 Usage: perf kvm [<options>] {top|record|report|diff|buildid-list|stat}

    -i, --input <file>    Input file name
    -o, --output <file>   Output file name
    -v, --verbose         be more verbose (show counter open errors, etc)
        --guest           Collect guest os data
        --guest-code      Guest code can be found in hypervisor process
        --guestkallsyms <file>
                          file saving guest os /proc/kallsyms
        --guestmodules <file>
                          file saving guest os /proc/modules
        --guestmount <directory>
                          guest mount directory under which every guest os instance has a subdir
        --guestvmlinux <file>
                          file saving guest os vmlinux
        --host            Collect host os data
 
It looks like perf is not being compiled with the same options anymore. Here's for kernel 6.1:

Code:
# ldd /usr/bin/perf_6.1
    linux-vdso.so.1 (0x00007ffdca7fc000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x0000704ebd791000)
    libelf.so.1 => /lib/x86_64-linux-gnu/libelf.so.1 (0x0000704ebd776000)
    libdw.so.1 => /lib/x86_64-linux-gnu/libdw.so.1 (0x0000704ebd6ce000)
    libunwind-x86_64.so.8 => /lib/x86_64-linux-gnu/libunwind-x86_64.so.8 (0x0000704ebd6b1000)
    libunwind.so.8 => /lib/x86_64-linux-gnu/libunwind.so.8 (0x0000704ebd695000)
    liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x0000704ebd664000)
    libslang.so.2 => /lib/x86_64-linux-gnu/libslang.so.2 (0x0000704ebd2b6000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x0000704ebd297000)
    libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x0000704ebd1db000)
    libcap.so.2 => /lib/x86_64-linux-gnu/libcap.so.2 (0x0000704ebd1cf000)
    libnuma.so.1 => /lib/x86_64-linux-gnu/libnuma.so.1 (0x0000704ebd1c2000)
    libbabeltrace-ctf.so.1 => /lib/x86_64-linux-gnu/libbabeltrace-ctf.so.1 (0x0000704ebd16e000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x0000704ebcf8d000)
    /lib64/ld-linux-x86-64.so.2 (0x0000704ebe159000)
    libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x0000704ebcf7a000)
    libbabeltrace.so.1 => /lib/x86_64-linux-gnu/libbabeltrace.so.1 (0x0000704ebcf6c000)
    libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x0000704ebcf62000)
    libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x0000704ebce28000)
    libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x0000704ebcd8e000)

Notice how much shorter the one for 6.8 is:

Code:
# ldd /usr/bin/perf_6.8
    linux-vdso.so.1 (0x00007ffde1984000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x000079bb4a780000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x000079bb4a761000)
    libelf.so.1 => /lib/x86_64-linux-gnu/libelf.so.1 (0x000079bb4a746000)
    libdw.so.1 => /lib/x86_64-linux-gnu/libdw.so.1 (0x000079bb4a69e000)
    libslang.so.2 => /lib/x86_64-linux-gnu/libslang.so.2 (0x000079bb4a2f0000)
    libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x000079bb4a0d4000)
    liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x000079bb4a0a5000)
    libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x000079bb49fe9000)
    libnuma.so.1 => /lib/x86_64-linux-gnu/libnuma.so.1 (0x000079bb49fdc000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x000079bb49dfb000)
    /lib64/ld-linux-x86-64.so.2 (0x000079bb4b126000)
    libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x000079bb49de8000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x000079bb49dc6000)

Surprisingly, the 6.1 version is working well enough for my needs under kernel 6.8.