Performance measurements for hypervisors on embedded ARM processors

Posted Jiamings

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Performance measurements for hypervisors on embedded ARM processors相关的知识,希望对你有一定的参考价值。


S. Toumassian, R. Werner and A. Sikora, “Performance measurements for hypervisors on embedded ARM processors,” 2016 International Conference on Advances in Computing, Communications and Informatics (ICACCI), 2016, pp. 851-855, doi: 10.1109/ICACCI.2016.7732152.

主要内容:

1、介绍了Xen和Jailhouse的架构。

2、Xen和Jailhouse的验证方法和测量结果。

随着物联网 (IoT) 和工业 4.0 等现代发展,越来越多的计算服务需要托管在嵌入式设备上。 过去,不同的服务通常在不同的硬件上运行,这增加了成本并降低了灵活性。 随着计算设备功能的不断增强,在同一硬件上运行多个服务变得可取。 但是,引起了人们对安全的担忧。 虚拟化的概念允许在单台机器上运行多个服务的隔离实例。 这个概念已经在传统服务器计算机中使用了几十年,但现在也越来越多地用于嵌入式微控制器。 因此,需要从嵌入式需求的角度重新审视不同的概念,例如更极端的成本和资源限制、硬件访问和实时能力。

文章目录

1. 完全虚拟化、半虚拟化和硬件辅助虚拟化介绍

完全虚拟化(不修改客户系统,VMM使用动态二进制转换模拟特权指令,VMWare、Qemu):在完全虚拟化中,管理程序模拟硬件资源(CPU、内存和 PCI 设备),以便可以运行未经修改的客户系统 [2]。客户系统是具有已定义权限(通常非常有限)的域,例如 Windows Server 2003 和 Windows XP。完全虚拟化采用二进制转换将特权操作“转换为等效的非特权指令块”[2],以直接在 CPU 上运行,产生与原始指令完全相同的效果 [2] [3]。VMware [4] 首次采用了将动态二进制转换和直接执行技术相结合的方式[2]。在完全虚拟化中,操作系统 (OS) 和硬件都不需要任何修改 [2]。除了 VMware,还有 Qemu [5]、Virtual PC [6] 等。

半虚拟化(修改客户系统,客户使用超级调用执行特权指令,Xen):这种虚拟化技术的虚拟化开销低于完全虚拟化 [2]。在半虚拟化中,客户系统被修改为使用所谓的超级调用而不是特权指令。与系统调用 (syscall) 一样,它是从应用程序到操作系统内核的软件陷阱,超级调用是从客户域到管理程序的软件陷阱。半虚拟化还允许用一个超级调用替换多个特权指令。这有助于减少特权模式和非特权模式之间的上下文切换次数,从而减少开销。第一个半虚拟化概念是由 Denali [7] 和后来的 Xen [8] 引入的。然而,半虚拟化的缺点是它需要修改操作系统 [2]。

硬件辅助虚拟化(不修改客户系统,借助虚拟扩展,VT-x,AMD-V):一些硬件供应商已经开发了虚拟化扩展,以使未经修改的客户操作系统能够在管理程序之上运行,例如 Intel VT-x [9]、AMD-V [10] 和 ARM 虚拟化扩展 [11]。他们为处理器添加了一个新的特权级别。最高特权级别“Ring-1”用于管理程序,用户应用程序在“Ring-3”中运行[2]。新特权级别的优点是“Ring-1”“让 VMM 安全透明地使用 VM 的直接执行,因此简化了 VMM 设计”[2]。

虚拟化的好处是多方面的,例如安全性、灵活性以及成本和空间的减少。 此外,虚拟化使系统管理和配置更容易。 但是,上面提到的所有虚拟化技术都会增加性能开销。

2. intel 虚拟化 VT-d VT-x VT-c 有什么区别,各是什么意思,有什么作用?

​https://www.d3tt.com/view/111​

3. Hypervisor 介绍

3.1 Xen on ARM

【Jailhouse

如图,Xen Hypervisor 或 Xen Virtual Machine Monitor (VMM) 是一个裸机开源管理程序,它直接在物理级别上运行,并集成了硬件和虚拟机之间的低级通信。在 Xen 管理程序层之上运行的虚拟机称为域。域 0 或 dom0 是指特权虚拟机(特权域),其中包含设备的所有驱动程序。Xen 在引导时创建 Dom0。Dom0 包含了所有未修改的 Linux 设备驱动程序,该域有权直接访问硬件,处理对系统 I/O 功能的所有访问,控制、创建、暂停、迁移、终止以及与其他域 [1] 通信。Dom0 通过半虚拟化后端驱动程序为非特权域提供对硬件的访问权限。此外,修改后的非特权域可以使用半虚拟化前端驱动程序访问一组虚拟设备。(Xen具有特殊的Dom0负责承上启下,利用前后端驱动接口完成非特权域对硬件资源的访问)

对应ARM的三个虚拟化扩展执行级别(用户模式、内核模式、管理程序模式),Xen在管理程序模式下运行,VM内核模式在内核模式下运行,VM用户模式在用户模式下运行。

Xen version3 具有 Credit 调度器,Xen version4.5 引入了RTDS(实时可延迟调度器),为客户提供实时性能,为了调度 VCPU,RTDS 调度程序遵循抢占式全局最早截止日期优先 (EDF) 理论来选择优先级,这意味着具有较短截止日期的 VCPU 获得更高的优先级。在 Xen 管理程序中,调度和排序队列中的 VCPU 的每次迭代都会增加额外的负载,从而导致额外的执行时间。此外,Xen 中的两个调度程序都遵循某种算法来对 VCPU 进行排序,从而增加了 Xen 管理程序的复杂性。

3.2 Jailhouse

【Jailhouse

Jailhouse 是 Siemens [14] 的开源分区管理程序。Jailhouse 虚拟机管理程序不遵循其他虚拟机管理程序的方法,因为没有模拟不存在的设备,也没有在客户之间共享任何 CPU,因此,不需要调度程序。Jailhouse 背后的主要思想是使虚拟机管理程序尽可能简单。除了以客户身份运行裸机应用程序之外,Jailhouse 还能够运行修改后的 Linux 内核映像(半虚拟化特征)。Jailhose将一个系统划分为称为“cell”的隔离区。每个cell都与其他cell很好地隔离,并为其客户提供自己的硬件资源。

与 Xen 等其他 VMM 和许多其他虚拟机管理程序相比,Jailhouse 可以被认为是一个非常轻量级的虚拟机管理程序。

3.3 KVM

基于内核的虚拟机 (KVM) 是一个 Linux 子系统,它采用硬件虚拟化扩展来在 Linux OS [15] 中提供管理程序功能。从面向 x86 平台的内核版本 2.6.20 开始,它已包含在 Linux 中。目前,它还支持 ARM Cortex-A15 和 Cortex-A7 平台。 KVM 扩展了 Linux 传统的内核和用户模式,并创建了一种新的进程模式,称为“guest”。 来宾有自己的内核和用户模式 [1]。对主机来说,Guest显示为普通的 Linux 进程。KVM.ko 是一个内核模块,它作为一个设备驱动程序,提供管理虚拟硬件的能力 [1]。通过打开设备节点“/dev/kvm”来创建虚拟机; “每个虚拟机在实例化时都可以拥有由 Linux 调度程序分配的自己的地址空间”[1]。

3.4 Xvisor

Xviso 是开源轻量级虚拟机管理程序。它是没有 ARM 虚拟化扩展的 ARM 处理器提供虚拟化解决方案的管理程序 [16]。Xvisor 是一个遵循完全虚拟化方法的裸机管理程序。这意味着它可以以访客身份运行未修改的操作系统。

4. Performance Measurements

这些测量的目的是调查嵌入式 ARM 处理器上虚拟化环境中不同管理程序的开销,以便了解哪个候选者更适合实时应用程序。本文的方法是使用一个重负载应用程序-Cpuburn-a8,在未使用Hypervisor的情况下、使用 Xen 以及 Jailhouse 的情况下分别执行,创建一个内核模块来访问物理计数器和一个用户应用程序来进行测量特权域和非特权域的切换次数/时间。

实验环境:

  • banana-pi, Allwinner A20(Cortex-A7 CPU), 8GB SD-Card
  • Xen hypervisor version 4.6 including a (RTDS) scheduler.
  • Jailhouse hypervisor in its current master branch version (as of May 2016).
  • Linux kernel version 4.1, as it contains all the necessary configurations to enable virtualization on ARM processors and additionally has long time support (until September 2017).

内核模块。物理计数寄存器 (CNTPCT) 是一个通用定时器寄存器,保存 64 位物理计数器值。但是,它只能从内核模式访问。为了使用户模式能够访问 CNTPCT 寄存器,定时器控制寄存器 CNTKCTL 的第一位必须设置为 1。同样,CNTKCTL 只能从内核模式访问。为了解决这个问题,我们创建了一个内核模块,它允许用户模式访问物理定时器。

用户程序。不停执行用户程序 Cpuburn-a8,Xen中,考察两种不同的调度器(Credit、RTDS),Jailhouse中,使用完全相同的平台和测试程序。

5. Results

重复四次取均值。

【Jailhouse

根据表中列出的结果,Xen 管理程序在使用Credit调度程序时具有显着更高的开销,使用 RTDS 调度程序可以减少开销。总的来说,Jailhouse 在系统上具有最低且非常有吸引力的开销。原因是 Jailhouse 既不虚拟化也不在客户之间共享硬件资源,因此不需要调度程序,所有这些都减少了开销并保持了管理程序的轻量级。

最后,尽管 Xen 提供了更多的管理功能,但开销仍然相对较高。另一方面,Hypervisor 相较于 Xen 功能不丰富,但它提供了一个几乎为零开销的虚拟化系统。


以上是关于Performance measurements for hypervisors on embedded ARM processors的主要内容,如果未能解决你的问题,请参考以下文章

测量性能(Measuring Performance) ms

测量性能(Measuring Performance) ms

测量性能(Measuring Performance) ms

[HTML 5 Performance] Measuring used JS heap size in chrome

Performance measurements for hypervisors on embedded ARM processors

机器学习:模型性能度量(performance measure)(待补充)