162306a36Sopenharmony_ci.. SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci.. include:: ../../disclaimer-zh_CN.rst 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci:Original: :ref:`Documentation/arch/arm64/perf.rst <perf_index>` 662306a36Sopenharmony_ci 762306a36Sopenharmony_ciTranslator: Bailu Lin <bailu.lin@vivo.com> 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci============= 1062306a36Sopenharmony_ciPerf 事件属性 1162306a36Sopenharmony_ci============= 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci:作者: Andrew Murray <andrew.murray@arm.com> 1462306a36Sopenharmony_ci:日期: 2019-03-06 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ciexclude_user 1762306a36Sopenharmony_ci------------ 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci该属性排除用户空间。 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci用户空间始终运行在 EL0,因此该属性将排除 EL0。 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ciexclude_kernel 2562306a36Sopenharmony_ci-------------- 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci该属性排除内核空间。 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci打开 VHE 时内核运行在 EL2,不打开 VHE 时内核运行在 EL1。客户机 3062306a36Sopenharmony_ci内核总是运行在 EL1。 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci对于宿主机,该属性排除 EL1 和 VHE 上的 EL2。 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci对于客户机,该属性排除 EL1。请注意客户机从来不会运行在 EL2。 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ciexclude_hv 3862306a36Sopenharmony_ci---------- 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci该属性排除虚拟机监控器。 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci对于 VHE 宿主机该属性将被忽略,此时我们认为宿主机内核是虚拟机监 4362306a36Sopenharmony_ci控器。 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci对于 non-VHE 宿主机该属性将排除 EL2,因为虚拟机监控器运行在 EL2 4662306a36Sopenharmony_ci的任何代码主要用于客户机和宿主机的切换。 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci对于客户机该属性无效。请注意客户机从来不会运行在 EL2。 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ciexclude_host / exclude_guest 5262306a36Sopenharmony_ci---------------------------- 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci这些属性分别排除了 KVM 宿主机和客户机。 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ciKVM 宿主机可能运行在 EL0(用户空间),EL1(non-VHE 内核)和 5762306a36Sopenharmony_ciEL2(VHE 内核 或 non-VHE 虚拟机监控器)。 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ciKVM 客户机可能运行在 EL0(用户空间)和 EL1(内核)。 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci由于宿主机和客户机之间重叠的异常级别,我们不能仅仅依靠 PMU 的硬件异 6262306a36Sopenharmony_ci常过滤机制-因此我们必须启用/禁用对于客户机进入和退出的计数。而这在 6362306a36Sopenharmony_ciVHE 和 non-VHE 系统上表现不同。 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci对于 non-VHE 系统的 exclude_host 属性排除 EL2 - 在进入和退出客户 6662306a36Sopenharmony_ci机时,我们会根据 exclude_host 和 exclude_guest 属性在适当的情况下 6762306a36Sopenharmony_ci禁用/启用该事件。 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci对于 VHE 系统的 exclude_guest 属性排除 EL1,而对其中的 exclude_host 7062306a36Sopenharmony_ci属性同时排除 EL0,EL2。在进入和退出客户机时,我们会适当地根据 7162306a36Sopenharmony_ciexclude_host 和 exclude_guest 属性包括/排除 EL0。 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci以上声明也适用于在 not-VHE 客户机使用这些属性时,但是请注意客户机从 7462306a36Sopenharmony_ci来不会运行在 EL2。 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci准确性 7862306a36Sopenharmony_ci------ 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci在 non-VHE 宿主机上,我们在 EL2 进入/退出宿主机/客户机的切换时启用/ 8162306a36Sopenharmony_ci关闭计数器 -但是在启用/禁用计数器和进入/退出客户机之间存在一段延时。 8262306a36Sopenharmony_ci对于 exclude_host, 我们可以通过过滤 EL2 消除在客户机进入/退出边界 8362306a36Sopenharmony_ci上用于计数客户机事件的宿主机事件计数器。但是当使用 !exclude_hv 时, 8462306a36Sopenharmony_ci在客户机进入/退出有一个小的停电窗口无法捕获到宿主机的事件。 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_ci在 VHE 系统没有停电窗口。 87