分享

车载基础软件——内核和中间件核心技术:虚拟化(二)

 车载诊断技术 2023-03-08 发布于上海

车用基础软件的内核和中间件核心技术——虚拟化(二)

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。

老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:

人生中最大的谎言就是不活在“此时此刻”。纠结过去、关注未来,把微弱而模糊的光打向人生整体,自认为看到了些什么。你之前就一直忽略“此时此刻”,只关注根本不存在的过去和未来。对自己的人生和无可替代的刹那撒了一个大大的谎言。

本文主要分享关于车用基础软件的内核和中间件核心技术---虚拟化的技术发展趋势。

虚拟化的技术发展趋势

虚拟化技术最早可以追溯到20世纪60年代,IBM(米国著名公司)开发了虚拟机监视器软件,将计算机硬件虚拟分割成一个或多个虚拟机,可支持多名用户对大型计算机的同时、交互的访问。随着21 世纪通用服务器算力的提升,云计算蓬勃发展,作为底层支撑技术的云虚拟化也快速迭代演进。后来算力从云、边、端逐步下沉,也就伴随着出现了边缘虚拟化、端侧嵌入式虚拟化。它们的典型架构、关键技术需求如图:

云侧虚拟化

其特点是硬件平台基本同构,大量节点构成集群,架构设计以吞吐能力优先,要支持多业务并发,虚拟化要满足集群负载均衡、节能降耗的资源调度策略,在进行跨节点虚拟机调配过程中,要保证业务无中断迁移。虚拟机故障时,要能保证从检查点恢复,减少业务损失,虚拟机要能支持 CPU 算力、内存、存储空间、网络、GPU、外设等能力的弹性扩展,还要能超分配,以便提升数据中心的运营收益。

边侧虚拟化

是在某些特定业务的边缘节点上,采用通用ICT架构,支持多种业务的动态部署,典型如SDN、NFV。其技术特点是:基于通用硬件平台、行业定制的管理部署平台,实现软硬解耦、软件定义,多功能节点按需部署、弹性组网,一般会采用1+1或者N+1冗余方式保证业务高可用,在 5G 电信网元中需要考虑5G业务端到端实时性,Hypervisor、虚拟机、通信协议栈都需要设计考虑。

端侧虚拟化

端侧典型特点是异构,其芯片架构、处理能力都差异较大。一般是单芯片方案,不存在着集群、主备间的虚拟机迁移,因此比较强调高安全、单节点高可靠,比如会有功能安全 ASIL 等级要求,同时对于实时性、确定性有更强的要求。另外,端侧资源更加有限、成本更敏感,因此要求 Hypervisor 轻量化、高性能。

虚拟化模型趋势

Hypervisor 可以划分为两大类,一类是 Type1 裸机型,Hypervisor 直接运行在硬件设备上的,也叫做 Bare-Metal Hardware Virtualization(裸机虚拟化环境);一类是 Type2 主机托管型,也叫做 Hosted Virtualization (主机虚拟化环境)。图 2.4-4 展示了两种 Hypervisor 的分层架构

Type2 型Hypervisor需要借助宿主操作系统来管理CPU、内存、网络等资源,由于Hypervisor和硬件之间存在一个宿主操作系统,Hypervisor及VM的所有操作都要经过宿主操作系统,所以就不可避免地会存在延迟、性能损耗,同时宿主操作系统的安全缺陷及稳定性问题都会影响到运行在之上的VM(虚拟机),所以 , Type-2型 Hypervisor主要用于对性能和安全要求不高的场合,比如 : 个人PC系统。

Type1 型的Hypervisor不依赖主机操作系统,其自身具备操作系统的基础功能。设计上更简洁,直接运行于硬件之上,整体代码量和架构更为精简,对内存和存储资源要求更少,可满足自动驾驶车控系统功能安全等级要求,也具备进行形式化验证的条件。所以汽车操作系统更适合使用Type 1型Hyper-visor。

随着微内核操作系统技术的发展,很多基于微内核操作系统设计的Hypervisor依赖的Host OS 已经非常精简,只包括基本的、不变的功能,如 : CPU调度和内存管理,设备驱动和其他可变组件处于内核之外,这类Hypervisor应当归于 Type1、还是 Type2,业内存在分歧。总体来说,微内核 Hypervisor更小、更稳定、扩展性更好,更适合用于嵌入式虚拟化场合。

Hypervisor与虚拟机协作技术路线

1、全虚拟化

最初的虚拟化是通过软件模拟具有完整硬件系统功能的、运行在一个隔离环境中的计算机系统,即通过软件虚拟硬件设备提供给GuestOS使用,优点是GuestOS不感知外部真实硬件环境、不用改动。由于Guest OS中每次访问全虚拟化硬件都要陷入到 Hypervisor中,直接导致该方式虚拟的硬件性能较差。

一般只用来模拟如串口等比较简单的硬件。对硬件的模拟可以在Hypervisor中直接模拟,也可以将请求传递到其他 VM 中进行模拟,如在某一VM中通过QEMU进行模拟。

2、硬件辅助虚拟化

Intel最早提出硬件辅助虚拟化技术,由硬件直接提供共享功能,支持多GuestOS的访问,减少软件虚拟技术带来的延时和性能损耗。Intel提出了分别针对处理器 & 内存、IO、网络的 Intel VT-x、Intel VT-d 和 Intel VT-c 技术等。随着 ARM 算力提升,从移动端向边缘、甚至云算力中心发展,ARM 也在不断增强其硬件辅助虚拟化技术,比如 stage 2页表转换、虚拟异常等。

3、半虚拟化

在硬件辅助虚拟化技术不完善、不强大的发展阶段,或者对于某些复杂外设的共享复用,为避免全虚拟化的性能问题,可以采用 GuestOS 与 Hypervisor 协作的半虚拟化技术。这种技术一般应用于 IO 设备虚拟化,采用前后端的方式来实现 IO 设备虚拟化,在 Guest OS 中实现前端驱动,在 Hypervisor 或 Host OS 中实现后端驱动,前后端一般按照 VirtIO 标准来实现,后端驱动作为硬件的实际访问方。

Guest OS 中前端驱动通过 Virt Queue 等通信机制与后端驱动进行通信,前端驱动将 Guest OS 的请求传递给后端驱动,后端驱动将请求发送给硬件驱动,处理完后将结果再传回给前端驱动。半虚拟化相对全虚拟化实现的硬件性能较好,且可实现相对比较复杂的硬件,比如 : 块设备,网卡,显示设备等。具体如图:

Hypervisor 支持将硬件资源直接分配给其上虚拟机中 Guest OS 使用,无需通过 Hypervisor 进行地址和指令翻译。例如 : 串口资源、USB资源等接口比较丰富的资源可以通过Pass-through直接分配给某虚拟机使用。

设备控制器一般都是以MMIO方式来访问的,所以只需要将控制器地址区域映射到 VM 就可实现设备控制器的分配,同时还需要分配一个设备硬件中断对应的虚拟中断到该 VM,直接透传的方式就是VM独占访问该硬件,所以在性能上是最好的。

搁笔分享完毕!

愿你我相信时间的力量

做一个长期主义者!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多