• Hemant Kumar's avatar
    perf kvm/powerpc: Port perf kvm stat to powerpc · 066d3593
    Hemant Kumar authored
    perf kvm can be used to analyze guest exit reasons. This support already
    exists in x86. Hence, porting it to powerpc.
    
     - To trace KVM events :
      perf kvm stat record
      If many guests are running, we can track for a specific guest by using
      --pid as in : perf kvm stat record --pid <pid>
    
     - To see the results :
      perf kvm stat report
    
    The result shows the number of exits (from the guest context to
    host/hypervisor context) grouped by their respective exit reasons with
    their frequency.
    
    Since, different powerpc machines have different KVM tracepoints, this
    patch discovers the available tracepoints dynamically and accordingly
    looks for them. If any single tracepoint is not present, this support
    won't be enabled for reporting. To record, this will fail if any of the
    events we are looking to record isn't available.  Right now, its only
    supported on PowerPC Book3S_HV architectures.
    
    To analyze the different exits, group them and present them (in a slight
    descriptive way) to the user, we need a mapping between the "exit code"
    (dumped in the kvm_guest_exit tracepoint data) and to its related
    Interrupt vector description (exit reason). This patch adds this mapping
    in book3s_hv_exits.h.
    
    It records on two available KVM tracepoints for book3s_hv:
    
    "kvm_hv:kvm_guest_exit" and "kvm_hv:kvm_guest_enter".
    
    Here is a sample o/p:
     # pgrep qemu
    19378
    60515
    
    2 Guests are running on the host.
    
     # 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
    
    Analyze events for pid(s) 60515, all VCPUs:
    
         VM-EXIT Samples Samples% Time% MinTime    MaxTime  Avg time
    
           SYSCALL  9141  63.67%  7.49% 1.26us   5782.39us    9.87us (+- 6.46%)
    H_DATA_STORAGE  4114  28.66%  5.07% 1.72us   4597.68us   14.84us (+-20.06%)
    HV_DECREMENTER   418   2.91%  4.26% 0.70us  30002.22us  122.58us (+-70.29%)
          EXTERNAL   392   2.73%  0.06% 0.64us    104.10us    1.94us (+-18.83%)
    RETURN_TO_HOST   287   2.00% 83.11% 1.53us 124240.15us 3486.52us (+-16.81%)
    H_INST_STORAGE     5   0.03%  0.00% 1.88us      3.73us    2.39us (+-14.20%)
    
    Total Samples:14357, Total events handled time:1203918.42us.
    Signed-off-by: default avatarHemant 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-3-git-send-email-hemant@linux.vnet.ibm.comSigned-off-by: default avatarSrikar Dronamraju <srikar@linux.vnet.ibm.com>
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    066d3593
builtin-kvm.c 37.2 KB