漫谈虚拟化–内核和IO

漫谈虚拟化–内核和IO

作者:NAN 2017-11-29 14:57:47

云计算

虚拟化 在模拟的场景中,一般的步骤就是虚拟机的的虚拟内存转换成虚拟机的物理内存,然后转换成宿主机的虚拟内存,然后找到真正的物理内存,需要经过两次转换,而且存在多个虚拟机的时候,每个虚拟机的TLB基本上都不能命中,从而导致性能大大降低。

[[211645]]

前言

时光如流水,来去匆匆,有的时候你并不知道你是虚拟的环境中还是在真实的环境中,一切只是内核kernel的感受而已。。。

一种不同的体验,几种不同的实现方式,那么。。。你又在娜里。。。

虚拟化的分类

虚拟化场景其实和现实一样一样的。。。。

在虚拟化的场景中,虚拟机有的时候知道自己运行在虚拟化环境之中,那么这种就需要修改内核,从而也就是1型虚拟化,例如vmware ESX和ESXI,直接由hypervisor来管理硬件,从而提供给上层的虚拟机使用,这个时候,虚拟机使用的内核调用方式就是hyper call,而不是常规的system call了,这种相对于其他的虚拟化技术,效率高了不少(虚拟机必须修改内核才能发起hypervisor call)。

在二型虚拟化中,也就是硬件上面运行的是一个宿主机,然后在其中运行了一个用户空间的程序,用来提供上层虚拟机的管理,这种可以称之为VMM(virtual machine monitor)或者hypervisor,在虚拟机进行调用相关指令的时候,都是发送请求到宿主机,然后被vmm捕获到,然后再进行运行或者调用外部的硬件指令。这种由于指令都要进行最少一次的转换,从而效率损失不少(虚拟机可以运行各种操作系统)。

在现实中,我们进公司的时候,到底是选择外包呢,还是不选外包呢,在使用外包的时候,其实就是***种类型的虚拟化了,所有人都明确的知道自己在外包之中,从而直接调用外包公司的接口提供服务,这种效率可能很高,但是硬件环境肯定是差的,从而。。。。我也不知道到底是好不好,哈哈、。。。。

在不选择外包的时候,每个人都生活在一个虚拟的空间之中,以为自己使用的是所有的CPU资源,以为自己使用的是所有的物理内存,以为自己能驱动所有的硬件,其实。。。。到底有多少资源能够使用,这个也是不确定的,,,没准,也只是生活在一种虚拟化的场景之中。。。梦中梦。。。

内存的虚拟化

在虚拟化场景中,CPU和内存其实是不可分割的,基本上使用的是哪个物理机的CPU,那么就必然会使用其内存,为啥呢?

CPU的硬件中,实现了两种主要的芯片,一个是MMU,内存管理单元,主要是用来管理内存的,其实也就是从线性地址转换到物理地址,在进程中,使用的线性地址,也就是每个进程能看到的内存地址其实是整个的物理地址,其中划分了一部分为内核使用,剩余的都是进程使用的内存空间,而每次在进程使用变量的时候,那么这些变量值都是保存在内存之中,那么就要将这个地址在CPU中去找,然后就经过MMU,找到物理地址,而CPU的速度远远大于内存的速度,那么为了匹配这种速度,从而也就有了另外一种芯片,也就是TLB,主要就是用来缓存线性地址到物理地址转换的物理结果,从而每次在寻找地址的时候,都是先找TLB,如果没有那么就会经过MMU转换,然后找到物理内存。

在CPU的物理结构中,有一级缓存,有二级缓存,有三级缓存,三级缓存一般是各个CPU共享的,从而有可能发生资源占用,从而也就从SMP的架构转换到了NUMA架构,从而也就是非一致性内存访问。主要的目的也就是为了提高性能,那么在使用CPU的时候,不可能去别的物理机上找到内存地址,然后读取数据,从而为了提高速度和性能,也就是CPU和MEM基本上是绑定的,在同一个物理机上使用。

超卖的概念,CPU是虚拟的,内存也是虚拟的,其实VCPU也就是虚拟CPU,其实也就是物理机上的一个进程,其实你虚拟的cpu个数可以超过物理的核心数,但是一般超卖的比是1.5,看性能而定,并且要看服务器的压力,也就是CPU的平均负载。内存也是虚拟的,而且有的类库是每个进程或者每个虚拟机都会使用的,从而也可以超过物理内存,但是。。。好像没有一个比例。

在模拟的场景中,一般的步骤就是虚拟机的的虚拟内存转换成虚拟机的物理内存,然后转换成宿主机的虚拟内存,然后找到真正的物理内存,需要经过两次转换,而且存在多个虚拟机的时候,每个虚拟机的TLB基本上都不能***,从而导致性能大大降低。

从而在硬件层面,提供了硬件辅助的虚拟化技术,例如tagged TLB,也就是对TLB加了一个字段,表示为是哪个虚拟机的线性地址到物理地址的转换;例如提供了MMU的内存单元管理功能,也就是直接将虚拟地址换到物理机的虚拟地址,从而省略了转换到虚拟机的物理地址的步骤,从而能大大的提高性能。

硬件支持的内存虚拟化(AMD Nested Page Tables[NPT]和Intel Extended Page Tables[EPT])

I/O的虚拟化

I/O设备,一般分为驱动器和设备本身,而驱动程序运行在内核中,在虚拟话的场景中,如果进程需要调度外部的IO设备,那么首先进程会调用虚拟机的驱动程序,驱动虚拟机的硬件,然后被物理机的vmm捕获,然后将调用物理机的驱动程序,然后才真正的调用物理设备。也就是也分为两步走。

在IO设备的虚拟化场景中,一种是使用模拟的方式,也就是通过软件的模拟,在linux中,一切皆文件,从而也就是提供了一堆的文件进行调用。

一种是使用半虚拟化的方式,这种也是需要硬件的支持的,也就是虚拟机驱动程序直接调用的是物理机的驱动程序,然后驱动硬件,从而省略了虚拟机的驱动调用虚拟机的设备步骤。

***一种就是IO透传技术,其主要使用的方式就是直接将一些网卡设备或者硬盘设备直接绑定给虚拟机使用,从而基本上达到物理硬件的性能,不过这些硬件的管理还是需要使用hypervisor来进行管理。

硬件支持的设备和I/O虚拟化(Intel VT-d,AMD IOMMU)

总结

虚拟化的出现不过是为了更好的利用物理主机的资源,例如CPU,内存,I/O。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/245873.html<

(0)
运维的头像运维
上一篇2025-04-26 09:34
下一篇 2025-04-26 09:35

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注