QNX-9—QNX官网文档翻译—Performance Tuning

发布时间 2023-06-20 01:49:24作者: Hello-World3

https://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.hypervisor.user/topic/perform/perform.html


TODO


六、Interrupts

多余的中断会严重影响客户和系统的性能。

在 hypervisor 系统中,guest 配置中断控制器硬件,但是管理硬件以满足 guest 需求的是 hypervisor。因此,当硬件设备为 guest 产生中断时,hypervisor
必须总是进行干预。这意味着在中断时,guest操作系统必须至少退出一次,以允许虚拟机管理程序 hypervisor 检查中断并决定如何处理它

即使触发中断的设备被配置为 pass-through 设备(请参见“Understanding QNX Virtual Environments”一章中的“Pass-through devices”),管理中断控制器硬
件的也还是 hypervisor。虚拟机管理程序 hypervisor 必须屏蔽中断,通过使用中断信息更新vCPU线程将它传递给guest,最后,在物理EOI上解除中断屏蔽。

虚拟机管理程序对传递给guest的中断的干预(即使是对直通 pass-through 设备而言)可防止中断风暴危及系统行为,并允许在guest出现故障的情况下正确清理挂起的中断。

由于中断会触发客户退出,因此消除触发多余中断的操作是提高客户和整个系统性能的最有效方法之一。然而,由于中断对任何正常运行的系统来说都是必不可少
的,所以它们不能被消除。但是,您可以做的是设计和配置您的系统来有效地处理中断。

Guest IPI也不例外;管理程序也将它们作为中断来处理(参见本章中的“Guest IPIs”)。


1. 硬件中的虚拟化支持

如果硬件没有为虚拟化系统中的中断提供特殊支持,那么hypervisor主机会处理一切。它捕获中断并用中断信息适当的更新vCPU线程结构。这种纯软件方法在所有硬件上都可用,如果硬件没有提供其他方法,这种方法就是默认方法。它至少需要一个客户出口,并且开销最大。

许多ARM和x86平台提供虚拟化支持,减少了向虚拟化系统中的客户提供中断所需的工作。规划系统时,请考虑这些硬件特性的性能优势。

要利用硬件协助处理中断,您需要:

a. 对该功能的硬件支持(例如,x86平台上发布的中断)
b. BSP支持包括、启用和配置所需的组件和功能(例如,带硬件辅助的GICv3)
c. 包括并配置所需功能的虚拟机配置
d. 包括并配置所需功能的来宾配置

2. ARM

在支持的ARM平台上,hypervisor提供了两种技术来减少处理中断所需的客户退出。

(1) Interrupt enable

如果硬件允许,虚拟机管理程序可以设置guest的IRQ请求位,即使guest中禁用了中断。设置该位不会导致guest退出。

有关实现此硬件功能的更多信息,请参见您的ARM硬件文档。

(2) Generic Interrupt Controller (GIC) hardware assist

许多具有GICv2和更新的GIC硬件的ARM平台可选地为中断处理提供硬件辅助功能。

GIC硬件辅助不会消除物理中断上的guest退出,但它确实有助于客户操作虚拟GIC状态以响应客户中断传递(直通或来自vdev)。

3. X86

(1) 在支持的x86平台上,虚拟化系统中处理中断的硬件辅助目前包括 LAPIC 硬件辅助和发送中断。

本地组件高级可编程中断控制器(LAPIC)硬件辅助
LAPIC硬件辅助有助于减少处理中断所需的客户退出-客户进入周期数。

使用LAPIC的系统提供带有LAPIC信息的数据结构。为了减少处理客户中断所需的客户退出数量,设备驱动程序可以打开与硬件辅助LAPIC相关的位,然后通知客户运行。

只有当硬件支持发送中断时(见下文),或者当客户的vCPU已经停止时(即,已经计划接收中断的vCPU已经处于停止状态),才能使用此方法。如果硬件不支持发布的中断,并且vCPU尚未处于停止状态,则必须停止vCPU,这需要客户退出并重新进入。

这种方法只影响中断所针对的vCPU。虚拟机的其他vCPUs可以继续运行。

(2) 发布的中断

如果硬件支持发送中断,这种能力可用于消除访客退出以接收中断的需要。

与往常一样,虚拟机管理程序必须检查中断以确定其目的地,这需要一个客户退出-进入周期。然而,有了发布中断支持,当它已经确定如何处理中断时,管理程序不需要强制客户退出,这样客户就会注意到在其虚拟LAPIC中等待的中断:

a. guest可以继续跑。
b. 管理程序指示硬件用挂起的中断更新客户的虚拟LAPIC状态。
c. guest虚拟机注意到其虚拟LAPIC状态的变化,就像它在非虚拟化环境中运行时注意到其LAPIC状态的变化一样。
d. 客人对中断做出响应。


假设一个只有一个vCPU的客户机正在执行一些任务,比如计算pi的值。硬件设备为guest触发中断。硬件强制guest退出,以便管理程序可以检查中断。guest重新进入继续运行计算圆周率。

请记住,托管guest虚拟机的qvm进程实例至少有两个线程:vCPU线程和qvm主线程。利用投递式中断支持,可以如下实现上述目的:
(1) 主线程指示虚拟化支持硬件将中断投递给访客;
(2) 硬件更新客户的虚拟LAPIC,将中断传递给客户,而不强制另一个客户退出。