大家好,又见面了,我是你们的朋友全栈君。
三篇文章就VMM、虚拟机和容器的性能比较作了详细介绍
对以下问题予以解决:
如何虚拟化操作系统下的机器
大多数现代CPU架构的设计都不是可虚拟化的如何在无法虚拟化的cpu上实现VMM。
虚拟化让一台机器上可以运行多种操作系统类型和版本,文章通过讨论Disco的基本技术,了解虚拟化工作机制。要在虚拟机监视器上运行虚拟机所使用的基本技术是有限的直接执行,也就是操作系统如何虚拟化CPU的技术,因此在VMM上“启动”一个新的操作系统时,我们只需跳到第一个指令的地址,让操作系统开始运行即可。 正在运行的应用程序或操作系统试图执行某种特权操作时又会牵扯到VMM对进程尝试系统调用的行为进行干预的情况。 从以前讲的用户态、核心态来说trap命令让用户态进入核心态可以执行一些特权操作,当控制器是VMM,VMM不知道每个调用应该做什么。然而,VMM所知道的是操作系统的trap处理程序在哪里,VMM记录了必要的信息,当VMM从在给定操作系统上运行的用户进程接收到一个trap指令时,跳到操作系统的trap处理程序,并让操作系统按它应该的方式处理系统调用。虚拟化内存的时候VMM添加另一层虚拟化,以便多个操作系统能够共享机器的实际物理内存,通过页表、快表实现将得到的物理映射映射到底层机器地址。 VMM发展史上是消失过一段时间的,后又以服务器合并和实用程序计算的名义重出江湖,围绕兼容性、性能和简单性不断进步。为了解决如何在无法虚拟化的cpu上实现VMMs,半虚拟化和直接执行与快速二进制转换相结合的方法出现了, 它们将原始指令集的不可虚拟化部分替换为易于虚拟化和更有效的等价部分。但是VMM的虚拟内存子系统不断地控制有多少内存进入虚拟机,并且它必须通过将虚拟机的一部分分页到磁盘来周期性地回收一部分内存,具体操作的时候就会出现频繁访问页表的情况,导致不必要的开销,这又推动资源管理领域的进步。总的来说VMM的复兴似乎从根本上改变了软件和硬件设计师看待、管理和构建复杂软件环境的方式。VMMs还为部署创新的操作系统解决方案提供了向后能力路径,这些解决方案既能满足当前的需求,又能安全地利用现有的软件基础。
最后IBM研究报告的形式给出了最后一部分内容,Linux可以同时托管vm和容器,这一事实为这两种技术之间的比较提供了机会,而且与以前的许多比较相比,混淆变量更少。所以要具体学习某一个容器或者虚拟机需要先了解linux,通过讨论传统虚拟机部署的性能,并将它们与Linux容器的使用进行对比, 给出了当前的虚拟化选项对HPC和服务器工作负载的主要性能影响、影响虚拟化性能的一些不明显的实际问题、提供了使用最新硬件和软件的本地、容器和虚拟机环境的最新比较,跨越了与云相关的有趣的基准测试和工作负载的横截面、展示了容器是可行的,即使在整个服务器的范围内,对性能的影响也是最小的。 Docker和KVM的介绍也相对于非虚拟化Linux所带来的开销进行,Docker测试的每种情况下都等于或超过KVM性能,KVM和Docker对CPU和内存性能的开销几乎可以忽略不计。后又通过查阅资料,了解到这个Docker也是一项软件从业人员必学技术,对于JAVA岗位要求很多都要求掌握这项技术,任重道远。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/190530.html原文链接:https://javaforall.cn