| 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 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, 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. | 
 | --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 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). | 
 | -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 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] |