-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
perf kvm/powerpc: Add support for HCALL reasons
Powerpc provides hcall events that also provides insights into guest behaviour. Enhance perf kvm stat to record and analyze hcall events. - To trace hcall events : perf kvm stat record - To show the results : perf kvm stat report --event=hcall The result shows the number of hypervisor calls from the guest grouped by their respective reasons displayed with the frequency. This patch makes use of two additional tracepoints "kvm_hv:kvm_hcall_enter" and "kvm_hv:kvm_hcall_exit". To map the hcall codes to their respective names, it needs a mapping. Such mapping is added in this patch in book3s_hcalls.h. # pgrep qemu A sample output : 19378 60515 2 VMs running. # perf kvm stat record -a ^C[ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 4.153 MB perf.data.guest (39624 samples) ] # perf kvm stat report -p 60515 --event=hcall Analyze events for all VMs, all VCPUs: HCALL-EVENT Samples Samples% Time% MinTime MaxTime AvgTime H_IPI 822 66.08% 88.10% 0.63us 11.38us 2.05us (+- 1.42%) H_SEND_CRQ 144 11.58% 3.77% 0.41us 0.88us 0.50us (+- 1.47%) H_VIO_SIGNAL 118 9.49% 2.86% 0.37us 0.83us 0.47us (+- 1.43%) H_PUT_TERM_CHAR 76 6.11% 2.07% 0.37us 0.90us 0.52us (+- 2.43%) H_GET_TERM_CHAR 74 5.95% 2.23% 0.37us 1.70us 0.58us (+- 4.77%) H_RTAS 6 0.48% 0.85% 1.10us 9.25us 2.70us (+-48.57%) H_PERFMON 4 0.32% 0.12% 0.41us 0.96us 0.59us (+-20.92%) Total Samples:1244, Total events handled time:1916.69us. Signed-off-by: Hemant Kumar <hemant@linux.vnet.ibm.com> Cc: Alexander Yarygin <yarygin@linux.vnet.ibm.com> Cc: David Ahern <dsahern@gmail.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Scott Wood <scottwood@freescale.com> Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Cc: linuxppc-dev@lists.ozlabs.org Link: http://lkml.kernel.org/r/1453962787-15376-4-git-send-email-hemant@linux.vnet.ibm.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
- Loading branch information
Hemant Kumar
authored and
Arnaldo Carvalho de Melo
committed
Jan 29, 2016
1 parent
066d359
commit 78e6c39
Showing
2 changed files
with
187 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
#ifndef ARCH_PERF_BOOK3S_HV_HCALLS_H | ||
#define ARCH_PERF_BOOK3S_HV_HCALLS_H | ||
|
||
/* | ||
* PowerPC HCALL codes : hcall code to name mapping | ||
*/ | ||
#define kvm_trace_symbol_hcall \ | ||
{0x4, "H_REMOVE"}, \ | ||
{0x8, "H_ENTER"}, \ | ||
{0xc, "H_READ"}, \ | ||
{0x10, "H_CLEAR_MOD"}, \ | ||
{0x14, "H_CLEAR_REF"}, \ | ||
{0x18, "H_PROTECT"}, \ | ||
{0x1c, "H_GET_TCE"}, \ | ||
{0x20, "H_PUT_TCE"}, \ | ||
{0x24, "H_SET_SPRG0"}, \ | ||
{0x28, "H_SET_DABR"}, \ | ||
{0x2c, "H_PAGE_INIT"}, \ | ||
{0x30, "H_SET_ASR"}, \ | ||
{0x34, "H_ASR_ON"}, \ | ||
{0x38, "H_ASR_OFF"}, \ | ||
{0x3c, "H_LOGICAL_CI_LOAD"}, \ | ||
{0x40, "H_LOGICAL_CI_STORE"}, \ | ||
{0x44, "H_LOGICAL_CACHE_LOAD"}, \ | ||
{0x48, "H_LOGICAL_CACHE_STORE"}, \ | ||
{0x4c, "H_LOGICAL_ICBI"}, \ | ||
{0x50, "H_LOGICAL_DCBF"}, \ | ||
{0x54, "H_GET_TERM_CHAR"}, \ | ||
{0x58, "H_PUT_TERM_CHAR"}, \ | ||
{0x5c, "H_REAL_TO_LOGICAL"}, \ | ||
{0x60, "H_HYPERVISOR_DATA"}, \ | ||
{0x64, "H_EOI"}, \ | ||
{0x68, "H_CPPR"}, \ | ||
{0x6c, "H_IPI"}, \ | ||
{0x70, "H_IPOLL"}, \ | ||
{0x74, "H_XIRR"}, \ | ||
{0x78, "H_MIGRATE_DMA"}, \ | ||
{0x7c, "H_PERFMON"}, \ | ||
{0xdc, "H_REGISTER_VPA"}, \ | ||
{0xe0, "H_CEDE"}, \ | ||
{0xe4, "H_CONFER"}, \ | ||
{0xe8, "H_PROD"}, \ | ||
{0xec, "H_GET_PPP"}, \ | ||
{0xf0, "H_SET_PPP"}, \ | ||
{0xf4, "H_PURR"}, \ | ||
{0xf8, "H_PIC"}, \ | ||
{0xfc, "H_REG_CRQ"}, \ | ||
{0x100, "H_FREE_CRQ"}, \ | ||
{0x104, "H_VIO_SIGNAL"}, \ | ||
{0x108, "H_SEND_CRQ"}, \ | ||
{0x110, "H_COPY_RDMA"}, \ | ||
{0x114, "H_REGISTER_LOGICAL_LAN"}, \ | ||
{0x118, "H_FREE_LOGICAL_LAN"}, \ | ||
{0x11c, "H_ADD_LOGICAL_LAN_BUFFER"}, \ | ||
{0x120, "H_SEND_LOGICAL_LAN"}, \ | ||
{0x124, "H_BULK_REMOVE"}, \ | ||
{0x130, "H_MULTICAST_CTRL"}, \ | ||
{0x134, "H_SET_XDABR"}, \ | ||
{0x138, "H_STUFF_TCE"}, \ | ||
{0x13c, "H_PUT_TCE_INDIRECT"}, \ | ||
{0x14c, "H_CHANGE_LOGICAL_LAN_MAC"}, \ | ||
{0x150, "H_VTERM_PARTNER_INFO"}, \ | ||
{0x154, "H_REGISTER_VTERM"}, \ | ||
{0x158, "H_FREE_VTERM"}, \ | ||
{0x15c, "H_RESET_EVENTS"}, \ | ||
{0x160, "H_ALLOC_RESOURCE"}, \ | ||
{0x164, "H_FREE_RESOURCE"}, \ | ||
{0x168, "H_MODIFY_QP"}, \ | ||
{0x16c, "H_QUERY_QP"}, \ | ||
{0x170, "H_REREGISTER_PMR"}, \ | ||
{0x174, "H_REGISTER_SMR"}, \ | ||
{0x178, "H_QUERY_MR"}, \ | ||
{0x17c, "H_QUERY_MW"}, \ | ||
{0x180, "H_QUERY_HCA"}, \ | ||
{0x184, "H_QUERY_PORT"}, \ | ||
{0x188, "H_MODIFY_PORT"}, \ | ||
{0x18c, "H_DEFINE_AQP1"}, \ | ||
{0x190, "H_GET_TRACE_BUFFER"}, \ | ||
{0x194, "H_DEFINE_AQP0"}, \ | ||
{0x198, "H_RESIZE_MR"}, \ | ||
{0x19c, "H_ATTACH_MCQP"}, \ | ||
{0x1a0, "H_DETACH_MCQP"}, \ | ||
{0x1a4, "H_CREATE_RPT"}, \ | ||
{0x1a8, "H_REMOVE_RPT"}, \ | ||
{0x1ac, "H_REGISTER_RPAGES"}, \ | ||
{0x1b0, "H_DISABLE_AND_GETC"}, \ | ||
{0x1b4, "H_ERROR_DATA"}, \ | ||
{0x1b8, "H_GET_HCA_INFO"}, \ | ||
{0x1bc, "H_GET_PERF_COUNT"}, \ | ||
{0x1c0, "H_MANAGE_TRACE"}, \ | ||
{0x1d4, "H_FREE_LOGICAL_LAN_BUFFER"}, \ | ||
{0x1d8, "H_POLL_PENDING"}, \ | ||
{0x1e4, "H_QUERY_INT_STATE"}, \ | ||
{0x244, "H_ILLAN_ATTRIBUTES"}, \ | ||
{0x250, "H_MODIFY_HEA_QP"}, \ | ||
{0x254, "H_QUERY_HEA_QP"}, \ | ||
{0x258, "H_QUERY_HEA"}, \ | ||
{0x25c, "H_QUERY_HEA_PORT"}, \ | ||
{0x260, "H_MODIFY_HEA_PORT"}, \ | ||
{0x264, "H_REG_BCMC"}, \ | ||
{0x268, "H_DEREG_BCMC"}, \ | ||
{0x26c, "H_REGISTER_HEA_RPAGES"}, \ | ||
{0x270, "H_DISABLE_AND_GET_HEA"}, \ | ||
{0x274, "H_GET_HEA_INFO"}, \ | ||
{0x278, "H_ALLOC_HEA_RESOURCE"}, \ | ||
{0x284, "H_ADD_CONN"}, \ | ||
{0x288, "H_DEL_CONN"}, \ | ||
{0x298, "H_JOIN"}, \ | ||
{0x2a4, "H_VASI_STATE"}, \ | ||
{0x2b0, "H_ENABLE_CRQ"}, \ | ||
{0x2b8, "H_GET_EM_PARMS"}, \ | ||
{0x2d0, "H_SET_MPP"}, \ | ||
{0x2d4, "H_GET_MPP"}, \ | ||
{0x2ec, "H_HOME_NODE_ASSOCIATIVITY"}, \ | ||
{0x2f4, "H_BEST_ENERGY"}, \ | ||
{0x2fc, "H_XIRR_X"}, \ | ||
{0x300, "H_RANDOM"}, \ | ||
{0x304, "H_COP"}, \ | ||
{0x314, "H_GET_MPP_X"}, \ | ||
{0x31c, "H_SET_MODE"}, \ | ||
{0xf000, "H_RTAS"} \ | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters