| 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 (x86 only) and ioport (x86 only) | |
| 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 sample, percent_sample, time, percent_time, max_t, min_t, mean_t. | |
| '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, for the 'report', 'diff' and 'buildid-list' subcommands. | |
| -o:: | |
| --output=<path>:: | |
| Output file name, for the 'record' subcommand. Doesn't work with 'report', | |
| just redirect the output to a file when using 'report'. | |
| --host:: | |
| Collect host side performance profile. | |
| --guest:: | |
| Collect guest side performance profile. | |
| :GMEXAMPLECMD: kvm --host --guest | |
| :GMEXAMPLESUBCMD: top | |
| include::guest-files.txt[] | |
| --stdio:: Use the stdio interface. | |
| -v:: | |
| --verbose:: | |
| Be more verbose (show counter open errors, etc). | |
| STAT REPORT OPTIONS | |
| ------------------- | |
| --vcpu=<value>:: | |
| analyze events which occur on this vcpu. (default: all vcpus) | |
| --event=<value>:: | |
| event to be analyzed. Possible values: vmexit, mmio (x86 only), | |
| ioport (x86 only). (default: vmexit) | |
| -k:: | |
| --key=<value>:: | |
| Sorting key. Possible values: sample (default, sort by samples | |
| number), percent_sample (sort by sample percentage), time | |
| (sort by average time), precent_time (sort by time percentage), | |
| max_t (sort by maximum time), min_t (sort by minimum time), mean_t | |
| (sort by mean 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 in bytes with appended unit character - B/K/M/G. | |
| The size is rounded up to the nearest power-of-two page 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 occur on this vcpu. (default: all vcpus) | |
| --event=<value>:: | |
| event to be analyzed. Possible values: vmexit, | |
| mmio (x86 only), ioport (x86 only). | |
| (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 (x86 only) or Wait state (s390 only) | |
| that take longer than duration usecs. | |
| --proc-map-timeout:: | |
| When processing pre-existing threads /proc/XXX/mmap, it may take | |
| a long time, because the file may be huge. A time out is needed | |
| in such cases. | |
| This option sets the time out limit. The default value is 500 ms. | |
| 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] |