• Jin Yao's avatar
    perf parse-events: Set exclude_guest=1 for user-space counting · 943b69ac
    Jin Yao authored
    Currently if we run 'perf record -e cycles:u', exclude_guest=0.
    
    But it doesn't make sense in most cases that we request for
    user-space counting but we also get the guest report.
    
    Of course, we also need to consider 'perf kvm' usage case that
    authorized perf users on the host may only want to count guest user
    space events. For example,
    
      # perf kvm --guest record -e cycles:u
    
    When we have 'exclude_guest=1' for 'perf kvm' usage, we may get nothing
    from guest events.
    
    To keep perf semantics consistent and clear, this patch sets
    exclude_guest=1 for user-space counting but except for 'perf kvm' usage.
    
    Before:
    
      perf record -e cycles:u ./div
      perf evlist -v
      cycles:u: ..., exclude_kernel: 1, exclude_hv: 1, ...
    
    After:
      perf record -e cycles:u ./div
      perf evlist -v
      cycles:u: ..., exclude_kernel: 1, exclude_hv: 1,  exclude_guest: 1, ...
    
    Before:
      perf kvm --guest record -e cycles:u -vvv
    
    perf_event_attr:
    
      size                             120
      { sample_period, sample_freq }   4000
      sample_type                      IP|TID|TIME|ID|CPU|PERIOD
      read_format                      ID
      disabled                         1
      inherit                          1
      exclude_kernel                   1
      exclude_hv                       1
      freq                             1
      sample_id_all                    1
    
    After:
    
      perf kvm --guest record -e cycles:u -vvv
    
    perf_event_attr:
      size                             120
      { sample_period, sample_freq }   4000
      sample_type                      IP|TID|TIME|ID|CPU|PERIOD
      read_format                      ID
      disabled                         1
      inherit                          1
      exclude_kernel                   1
      exclude_hv                       1
      freq                             1
      sample_id_all                    1
    
    For Before/After, exclude_guest are both 0 for perf kvm usage.
    
    perf test 6
    
     6: Parse event definition strings             : Ok
    Signed-off-by: default avatarJin Yao <yao.jin@linux.intel.com>
    Tested-by: default avatarLike Xu <like.xu@linux.intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Jin Yao <yao.jin@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/20200814012120.16647-1-yao.jin@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    943b69ac
parse-events.c 73.6 KB