| perf-kvm(1) |
| =========== |
| |
| NAME |
| ---- |
| perf-kvm - Tool to trace/measure kvm guest os |
| |
| SYNOPSIS |
| -------- |
| [verse] |
| 'perf kvm' [--host] [--guest] [--guestmount=<path> |
| [--guestkallsyms=<path> --guestmodules=<path> | --guestvmlinux=<path>]] |
| {top|record|report|diff|buildid-list} [<options>] |
| 'perf kvm' [--host] [--guest] [--guestkallsyms=<path> --guestmodules=<path> |
| | --guestvmlinux=<path>] {top|record|report|diff|buildid-list|stat} [<options>] |
| 'perf kvm stat [record|report|live] [<options>] |
| |
| DESCRIPTION |
| ----------- |
| There are a couple of variants of perf kvm: |
| |
| 'perf kvm [options] top <command>' to generates and displays |
| a performance counter profile of guest os in realtime |
| of an arbitrary workload. |
| |
| 'perf kvm record <command>' to record the performance counter profile |
| of an arbitrary workload and save it into a perf data file. We set the |
| default behavior of perf kvm as --guest, so if neither --host nor --guest |
| is input, the perf data file name is perf.data.guest. If --host is input, |
| the perf data file name is perf.data.kvm. If you want to record data into |
| perf.data.host, please input --host --no-guest. The behaviors are shown as |
| following: |
| Default('') -> perf.data.guest |
| --host -> perf.data.kvm |
| --guest -> perf.data.guest |
| --host --guest -> perf.data.kvm |
| --host --no-guest -> perf.data.host |
| |
| 'perf kvm report' to display the performance counter profile information |
| recorded via perf kvm record. |
| |
| 'perf kvm diff' to displays the performance difference amongst two perf.data |
| files captured via perf record. |
| |
| 'perf kvm buildid-list' to display the buildids found in a perf data file, |
| so that other tools can be used to fetch packages with matching symbol tables |
| for use by perf report. As buildid is read from /sys/kernel/notes in os, then |
| if you want to list the buildid for guest, please make sure your perf data file |
| was captured with --guestmount in perf kvm record. |
| |
| 'perf kvm stat <command>' to run a command and gather performance counter |
| statistics. |
| Especially, perf 'kvm stat record/report' generates a statistical analysis |
| of KVM events. Currently, vmexit, mmio and ioport events are supported. |
| 'perf kvm stat record <command>' records kvm events and the events between |
| start and end <command>. |
| And this command produces a file which contains tracing results of kvm |
| events. |
| |
| 'perf kvm stat report' reports statistical data which includes events |
| handled time, samples, and so on. |
| |
| 'perf kvm stat live' reports statistical data in a live mode (similar to |
| record + report but with statistical data updated live at a given display |
| rate). |
| |
| OPTIONS |
| ------- |
| -i:: |
| --input=<path>:: |
| Input file name. |
| -o:: |
| --output=<path>:: |
| Output file name. |
| --host:: |
| Collect host side performance profile. |
| --guest:: |
| Collect guest side performance profile. |
| --guestmount=<path>:: |
| Guest os root file system mount directory. Users mounts guest os |
| root directories under <path> by a specific filesystem access method, |
| typically, sshfs. For example, start 2 guest os. The one's pid is 8888 |
| and the other's is 9999. |
| #mkdir ~/guestmount; cd ~/guestmount |
| #sshfs -o allow_other,direct_io -p 5551 localhost:/ 8888/ |
| #sshfs -o allow_other,direct_io -p 5552 localhost:/ 9999/ |
| #perf kvm --host --guest --guestmount=~/guestmount top |
| --guestkallsyms=<path>:: |
| Guest os /proc/kallsyms file copy. 'perf' kvm' reads it to get guest |
| kernel symbols. Users copy it out from guest os. |
| --guestmodules=<path>:: |
| Guest os /proc/modules file copy. 'perf' kvm' reads it to get guest |
| kernel module information. Users copy it out from guest os. |
| --guestvmlinux=<path>:: |
| Guest os kernel vmlinux. |
| -v:: |
| --verbose:: |
| Be more verbose (show counter open errors, etc). |
| |
| STAT REPORT OPTIONS |
| ------------------- |
| --vcpu=<value>:: |
| analyze events which occures on this vcpu. (default: all vcpus) |
| |
| --event=<value>:: |
| event to be analyzed. Possible values: vmexit, mmio, ioport. |
| (default: vmexit) |
| -k:: |
| --key=<value>:: |
| Sorting key. Possible values: sample (default, sort by samples |
| number), time (sort by average time). |
| -p:: |
| --pid=:: |
| Analyze events only for given process ID(s) (comma separated list). |
| |
| STAT LIVE OPTIONS |
| ----------------- |
| -d:: |
| --display:: |
| Time in seconds between display updates |
| |
| -m:: |
| --mmap-pages=:: |
| Number of mmap data pages (must be a power of two) or size |
| specification with appended unit character - B/K/M/G. The |
| size is rounded up to have nearest pages power of two value. |
| |
| -a:: |
| --all-cpus:: |
| System-wide collection from all CPUs. |
| |
| -p:: |
| --pid=:: |
| Analyze events only for given process ID(s) (comma separated list). |
| |
| --vcpu=<value>:: |
| analyze events which occures on this vcpu. (default: all vcpus) |
| |
| |
| --event=<value>:: |
| event to be analyzed. Possible values: vmexit, mmio, ioport. |
| (default: vmexit) |
| |
| -k:: |
| --key=<value>:: |
| Sorting key. Possible values: sample (default, sort by samples |
| number), time (sort by average time). |
| |
| --duration=<value>:: |
| Show events other than HLT that take longer than duration usecs. |
| |
| SEE ALSO |
| -------- |
| linkperf:perf-top[1], linkperf:perf-record[1], linkperf:perf-report[1], |
| linkperf:perf-diff[1], linkperf:perf-buildid-list[1], |
| linkperf:perf-stat[1] |