forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
5.8 KiB
165 lines
5.8 KiB
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]
|
|
|