perf.rst 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. .. SPDX-License-Identifier: GPL-2.0
  2. =====================
  3. Perf Event Attributes
  4. =====================
  5. :Author: Andrew Murray <andrew.murray@arm.com>
  6. :Date: 2019-03-06
  7. exclude_user
  8. ------------
  9. This attribute excludes userspace.
  10. Userspace always runs at EL0 and thus this attribute will exclude EL0.
  11. exclude_kernel
  12. --------------
  13. This attribute excludes the kernel.
  14. The kernel runs at EL2 with VHE and EL1 without. Guest kernels always run
  15. at EL1.
  16. For the host this attribute will exclude EL1 and additionally EL2 on a VHE
  17. system.
  18. For the guest this attribute will exclude EL1. Please note that EL2 is
  19. never counted within a guest.
  20. exclude_hv
  21. ----------
  22. This attribute excludes the hypervisor.
  23. For a VHE host this attribute is ignored as we consider the host kernel to
  24. be the hypervisor.
  25. For a non-VHE host this attribute will exclude EL2 as we consider the
  26. hypervisor to be any code that runs at EL2 which is predominantly used for
  27. guest/host transitions.
  28. For the guest this attribute has no effect. Please note that EL2 is
  29. never counted within a guest.
  30. exclude_host / exclude_guest
  31. ----------------------------
  32. These attributes exclude the KVM host and guest, respectively.
  33. The KVM host may run at EL0 (userspace), EL1 (non-VHE kernel) and EL2 (VHE
  34. kernel or non-VHE hypervisor).
  35. The KVM guest may run at EL0 (userspace) and EL1 (kernel).
  36. Due to the overlapping exception levels between host and guests we cannot
  37. exclusively rely on the PMU's hardware exception filtering - therefore we
  38. must enable/disable counting on the entry and exit to the guest. This is
  39. performed differently on VHE and non-VHE systems.
  40. For non-VHE systems we exclude EL2 for exclude_host - upon entering and
  41. exiting the guest we disable/enable the event as appropriate based on the
  42. exclude_host and exclude_guest attributes.
  43. For VHE systems we exclude EL1 for exclude_guest and exclude both EL0,EL2
  44. for exclude_host. Upon entering and exiting the guest we modify the event
  45. to include/exclude EL0 as appropriate based on the exclude_host and
  46. exclude_guest attributes.
  47. The statements above also apply when these attributes are used within a
  48. non-VHE guest however please note that EL2 is never counted within a guest.
  49. Accuracy
  50. --------
  51. On non-VHE hosts we enable/disable counters on the entry/exit of host/guest
  52. transition at EL2 - however there is a period of time between
  53. enabling/disabling the counters and entering/exiting the guest. We are
  54. able to eliminate counters counting host events on the boundaries of guest
  55. entry/exit when counting guest events by filtering out EL2 for
  56. exclude_host. However when using !exclude_hv there is a small blackout
  57. window at the guest entry/exit where host events are not captured.
  58. On VHE systems there are no blackout windows.