CPU虚拟化技术介绍

十月飞翔 等级 722 0 0
标签:

虚拟化的三个条件:等价性,高效性和资源控制。这三条是针对VMM(Virtual Machine Manager)说的。

陷入和模拟模型 处理器分为两种运行模式:系统模式和用户模式。CPU指令对应分为特权指令和非特权指令。

陷入和模拟模型下,虚拟机用户程序仍然运行在用户模式下,虚拟机的内核也运行在用户模式,成为特权级压缩(Ring Compression)。这种模式下,虚拟机的非特权指令直接运行在处理器上。执行特权指令时会触发处理器异常,从而陷入VMM中,由VMM代理虚拟机完成系统资源的访问----模拟。

X86架构虚拟化的障碍 x86架构并不是所有的敏感指令都是特权指令。---- 解决办法是静态翻译和动态翻译。翻译是指对敏感指令进行翻译,静态是对可执行文件的指令进行翻译,动态翻译是以代码块为单元动态修改二进制代码。

VMX 为了从硬件层面解决x86架构的虚拟化问题,intel开发了VT技术支持虚拟化,为CPU增加了Virtual-Machine Extensions, 简称VMX。

启动VMX支持后, CPU提供两种运行模式:VM Root Mode和 VMX non-Root Mode, 每种模式都支持ring0 ~ ring3 . VMM运行在 Root Mode, VM运行在non-Root Mode。Guest无需再采用特权压缩方式,Guest kernel直接运行在VMX non-Root Mode的ring0种。

这个模式的好处:

Guest用户空间的系统调用直接陷入Guest模式的内核空间,不再陷入Host模式的内核空间。 对于外部中断,会触发CPU从Guest模式退出到Host模式,Host内核处理外部中断后再重新切入Guest模式。 不再是所有的特权指令都会导致处于Guest模式的CPU会发生VM exit,只有敏感指令才会。因为不是所有的特权指令都需要VMM来处理。

收藏
评论区

相关推荐

CPU缓存和内存屏障
CPU性能优化手段-缓存 ------------ 为了提高程序运行的性能,现代CPU在很多方面对程序进行了优化。 例如:CPU高速缓存。尽可能地避免处理器访问主内存的时间开销,处理器大多会利用缓存(cache)以提高性能。 ![](https://oscimg.oschina.net/oscnet/bbe04d9c9b6eb586bfccbd23808
MySQL 导致 CPU 消耗过大,如何优化
![](https://oscimg.oschina.net/oscnet/89e8e6fb-9ef9-402d-a1df-a71816f19084.jpg) 谁在消耗cpu? -------- 用户+系统+IO等待+软硬中断+空闲 ![](https://oscimg.oschina.net/oscnet/adef23c4-c070-44ad-a8
MySQL 数据库性能优化之SQL优化【转】
* **优化目标** 1. 减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段。 2. 降低 CPU 计算 除了 IO 瓶颈
Mysql占用过高CPU时的优化手段
慢查询日志,将那些执行时间过长且占用资源过多的SQL拿来进行explain分析,导致CPU过高,多数是GroupBy、OrderBy排序问题所导致,然后慢慢进行优化改进。比如优化insert语句、优化group by语句、优化order by语句、优化join语句等等; 3)考虑定时优化文件及索引; 4)定期分析表,使用optimize table;
FreeBSD系统CPU优化
如何让你的FreeBSD系统达到最优化\[CPU\] 一个最重要的答案就是:运行针对你cpu型号编译的程序! 我们知道,FreeBSD中大部分软件都在ports下编译。如何设定编译时的参数呢?就是/etc/make.conf这个配置文件! 打开/etc/make.conf这个文件,找到这两行: \--------------------
InfluxDB和MySQL的读写对比测试
今天进行了InfluxDB和MySQL的对比测试,这里记录下结果,也方便我以后查阅。 操作系统: CentOS6.5\_x64 InfluxDB版本 : v1.1.0 MySQL版本:v5.1.73 CPU : Intel(R) Core(TM) i5-2320 CPU @ 3.00GHz 内存 :12G 硬盘 :SSD  一、MyS
JVM CPU Profiler技术原理及源码深度解析
研发人员在遇到线上报警或需要优化系统性能时,常常需要分析程序运行行为和性能瓶颈。Profiling技术是一种在应用运行时收集程序相关信息的动态分析手段,常用的JVM Profiler可以从多个方面对程序进行动态分析,如CPU、Memory、Thread、Classes、GC等,其中CPU Profiling的应用最为广泛。CPU Profiling经常被用于
Minicube 部署单节点k8s
部署单节点k8s(minicube方式) ==================== 1.检测cpu是否支持虚拟化 grep -E --color 'vmx|svm' /proc/cpuinfo 非空即支持虚拟化 同时需要bios开启虚拟化 2.安装k8s管理工具kubectl 1.下载最新版本 cur
Nginx 作为web server 的优化要点
常用优化要点 ------ nginx使用的是固定数量的workers, 每个worker都处理进入的请求。最佳实践是每个CPU内核配置一个worker. 如何知道您的系统有几个CPU? $ grep ^processor /proc/cpuinfo | wc -l 对于一个四核处理器,配置文件类似: \# One worker per
PostgreSQL_如何查找TOP_SQL_(例如IO消耗最高的SQL)
### 标签 PostgreSQL , pg\_stat\_statements , TOP SQL 背景 -- 数据库是较大型的应用,对于繁忙的数据库,需要消耗大量的内存、CPU、IO、网络资源。 SQL优化是数据库优化的手段之一,优化什么SQL效果最佳呢?首先要了解最耗费资源的SQL,即TOP SQL。 从哪里可以了解数据库的资源都被哪些SQL
Redis 子进程开销监控和优化方式
Redis子进程负责AOF或者RDB文件的重写,它的运行过程主要涉及CPU、内存、硬盘三部分的消耗 01  CPU CPU开销分析。 子进程负责把进程内的数据分批写入文件,这个过程 属于CPU密集操作,通常子进程对单核CPU利用率接近90% CPU消耗优化。Redis是CPU密集型服务,不要做绑定单核CPU操作。由于子进程非常消耗
Redis的TPS太低的优化方法
Redis的TPS太低的优化方法 问题检查 ---- 1. 内存检查,看看是否存在内存不足使用SWAP的情况 2. 单核CPU和整体CPU的使用情况检查,看看CPU负荷是否高居不下 3. 检查磁盘IO和网络IO的情况 4. 检查网络延迟是否正常,网络一定要好 5. 用redis的 `info commandstats` 命令查看命令执行分布和事
支持国产化!HFish全面兼容国产CPU
12月初始,HFish又传喜讯!近日,微步在线旗下免费蜜罐 HFish 经过严格测试,通过了通用软硬件适配认证,获得由统信软件技术有限公司、上海兆芯集成电路有限公司、海光信息技术股份有限公司颁发的联合认证证书。这代表着 HFish 蜜罐在统信服务器操作系统、海光(5000、7000系列处理器)、兆芯(KH20000、ZXC+系列处理器)平台上整体运行稳定,均
支持国产化!HFish全面兼容国产CPU
12月初始,HFish又传喜讯!近日,微步在线旗下免费蜜罐 HFish 经过严格测试,通过了通用软硬件适配认证,获得由统信软件技术有限公司、上海兆芯集成电路有限公司、海光信息技术股份有限公司颁发的联合认证证书。这代表着 HFish 蜜罐在统信服务器操作系统、海光(5000、7000系列处理器)、兆芯(KH20000、ZXC+系列处理器)平台上整体运行稳定,均
CPU虚拟化技术介绍
虚拟化的三个条件:等价性,高效性和资源控制。这三条是针对VMM(Virtual Machine Manager)说的。陷入和模拟模型处理器分为两种运行模式:系统模式和用户模式。CPU指令对应分为特权指令和非特权指令。陷入和模拟模型下,虚拟机用户程序仍然运行在用户模式下,虚拟机的内核也运行在用户模式,成为特权级压缩(Ring Compression)。这种模式