type
status
date
slug
summary
tags
category
icon
password
FusionSphere服务器虚拟化
QOS
1、CPU QoS包含如下三个参数:
CPU资源份额
CPU份额定义多个虚拟机在竞争物理CPU资源的时候按比例分配计算资源。
以一个主频为2.8GHz的单核物理主机为例,如果上面运行有三台单CPU的虚拟机。三个虚拟机A,B,C,份额分别为1000,2000,4000。当三个虚拟机CPU满负载运行时,会根据三个虚拟机的份额按比例分配计算资源。份额为1000的虚拟机A的计算能力约为400MHz的,份额为2000的虚拟机B获得的计算能力约为800MHz,份额为4000的虚拟机C获得的计算能力约为1600MHz。(以上举例仅为说明CPU份额的概念,实际应用过程中情况会更复杂)。
CPU份额只在各虚拟机竞争计算资源时发挥作用,如果没有竞争情况发生,有需求的虚拟机可以独占物理CPU资源,例如,如果虚拟机B和C均处于空闲状态,虚拟机A可以获得整个物理核即2.8GHz的计算能力。
CPU资源预留(针对VM整体,不会独占)
CPU预留定义了多个虚拟机竞争物理CPU资源的时候分配的最低计算资源。
如果虚拟机根据份额值计算出来的计算能力小于虚拟机预留值,调度算法会优先按照虚拟机预留值的能力把计算资源分配给虚拟机,对于预留值超出按份额分配的计算资源的部分,调度算法会从主机上其他虚拟机的CPU上按各自的份额比例扣除,因此虚拟机的计算能力会以预留值为准。
如果虚拟机根据份额值计算出来的计算能力大于虚拟机预留值,那么虚拟机的计算能力会以份额值计算为准。
以一个主频为2.8GHz的单核物理机为例,如果运行有三台单CPU的虚拟机A、B、C,份额分别为1000、2000、4000,预留值分别为700MHz、0MHz、0MHz。当三个虚拟机满CPU负载运行时:
虚拟机A如果按照份额分配,本应得400MHz,但由于其预留值大于400MHz,因此最终计算能力按照预留值700MHz算。
多出的(700-400)MHz按照B和C各自的份额比例从B和C处扣除。
虚拟机B获得的计算能力约为(800-100)MHz,虚拟机C获得的计算能力约为(1600-200)MHz。CPU预留只在各虚拟机竞争计算资源的时候才发挥作用,如果没有竞争情况发生,有需求的虚拟机可以独占物理CPU资源。例如,如果虚拟机B和C均处于空闲状态,虚拟机A可以获得整个物理核即2.8GHz的计算能力。
CPU资源限额
控制虚拟机占用物理CPU资源的上限。以一个两CPU的虚拟机为例,如果设置该虚拟机CPU上限为3GHz,则该虚拟机的两个虚拟CPU计算能力被限制为1.5GHz。
2、内存QOS包含以下三个参数:
内存资源份额
内存份额定义多个虚拟机竞争内存资源的时候按比例分配内存资源。
在虚拟机申请内存资源,或主机释放空闲内存(虚拟机迁移或关闭)时,会根据虚拟机的内存份额情况按比例分配。
不同于CPU资源可实时调度,内存资源的调度是平缓的过程,内存份额策略在虚拟机运行过程中会不断进行微调,使虚拟机的内存获取量逐渐趋于比例。
以6G内存规格的主机为例,假设其上运行有三台4G内存规格的虚拟机,内存份额分别为20480、20480、40960,那么其内存分配比例为1:1:2。当三个虚拟机内部均逐步加压,策略会根据三个虚拟机的份额按比例分配调整内存资源,最终三个虚拟机获得的内存量稳定为1.5G、1.5G、3G。
内存份额只在各虚拟机竞争内存资源时发挥作用,如果没有竞争情况发生,有需求的虚拟机可以最大限度地获得内存资源。例如,如果虚拟机B和C没有内存压力且未达到预留值,虚拟机A内存需求压力增大后,可以从空闲内存、虚拟机B和C中获取内存资源,直到虚拟机A达到上限或空闲内存用尽且虚拟机B和C达到预留值。以上面的例子,当份额为40960的虚拟机没有内存压力(内存资源预留为1G),那么份额为20480的两个虚拟机理论上可以各获得最大2.5G的内存。
内存资源预留(独占)
内存预留定义多个虚拟机竞争内存资源的时候分配的内存下限,能够确保虚拟机在实际使用过程中一定可使用的内存资源。
预留的内存被会虚拟机独占。即,一旦内存被某个虚拟机预留,即使虚拟机实际内存使用量不超过预留量,其他虚拟机也无法抢占该虚拟机的空闲内存资源。
内存资源限额
控制虚拟机占用物理内存资源的上限。在开启多个虚拟机时,虚拟机之间会相互竞争内存资源,为了使虚拟机的内存得到充分利用,尽量减少空闲内存,用户可以在创建虚拟机时设置虚拟机配置文件中的内存上限参数,使服务器分配给该虚拟机的内存大小不超过内存上限值。
6.1中只有内存份额、内存预留
6.3以后,有两种情况
只有内存份额、内存预留生效,内存资源限额不生效(只能填写与内存规格相当、或者是0没有上限)
都生效。内存资源限额需要打开开关。???
3、网络QoS策略提供带宽配置控制能力,QoS功能不支持同一主机上虚拟机之间的流量限制。包含如下方面:
基于端口组成员接口发送方向与接收方向的带宽控制
基于端口组的每个成员接口提供流量整形、带宽优先级的控制能力。
4、磁盘IO上限。
最大读出字节数(KB/s)
最大写入字节数(KB/s)
最大读写字节数(KB/s)
最大每秒读请求个数
最大每秒写请求个数
最大每秒读写请求个数
多路径软件
在系统中为了避免单点故障,会把存储与主机之间设计冗余,会出现多个链路。出现新的问题:一个lun通过不同的路径到主机,主机有可能会认为是多个lun。
多路径软件:OS自带、第三方
功能:屏蔽冗余lun
选择最优路径
负载均衡
故障切换、恢复
路径例测等
KVM虚拟化
xen
早期是半虚拟化。后期演变为基于硬件辅助的全虚拟化。
架构:
domain0:特权虚拟机
1、拥有硬件驱动,能够直接识别、管理硬件
2、拥有后端驱动,与客户虚拟机中的前端驱动配合,实现IO虚拟化。为客户虚拟机提供IO设备。
3、管理所有客户虚拟机
4、需要开机自启
5、某些场景里,提供cache...
domainU:客户虚拟机
需要安装前端驱动
优点:相对来说,比较安全
kvm
KVM:实现CPU虚拟化、内存虚拟化。当运行IO虚拟化代码时,会转发给qemu。linux kernel中的一个模块,调用内核的功能,使得kernel成为hypervisor。内核态。
qemu-kvm:实现IO虚拟化(事实上,也能实现CPU虚拟化、内存虚拟化等)用户态。
优点:不需要专门实现,由linux kernel(2.6.20以后)实现。性能好
华为从6.3以后,全面转kvm
libvirt
1、通过调用hypervisor的api管理hypervisor上的虚拟机。比如,创建、删除、调整、迁移等2、可以统一管理不同类型hypervisor
3、可以统一的方式管理不同类型的VM。比如:所有虚拟机都通过.xml文件描述
4、向上提供api接口,给各种客户端管理。
virt-manager
对接libvirt,管理hypervisor的图形化客户端
virsh
对接libvirt,管理hypervisor的命令行客户端。比如:对各种资源查看、管理等virt-install
对接libvirt的命令行客户端。只是用于创建虚拟机。
virt-viewer
VNC客户端。主要用于安装操作系统过程中的VNC界面。
休息10分钟,4:02继续
CPU虚拟化
问题:
Native操作系统对CPU的认识与管理达成以下两点认识:
CPU资源永远就绪
OS对CPU具有最高权限
引入虚拟化后出现的问题:
1、多个VM之间共享CPU资源
解决方法:分时复用
本身物理服务器多路物理CPU,CPU有多个内核,每个内核超线程为多个线程,一般双线程。hypervisor就把vcpu调度到物理线程上,实现分时复用。
2、部分指令只有Hypervisor有权限使用
CPU指令:ring0 操作系统使用
ring1\2 驱动程序使用
ring3 应用程序使用
在虚拟化中,hypervisor使用0,vm原本应该使用3,但vm也有OS,想要申请使用ring0,越级。
解决方法:
1、经典虚拟化:解除特权、陷入模拟
到了X86架构后,在非特权中出现了19条敏感指令,无法完全使用经典虚拟化模拟
2、二进制翻译全虚拟化(vmware esx)
所有指令(0、3、敏感)全部被hypervisor所捕获,其中0、敏感处理,3不做处理,再转发给硬件3、半虚拟化(xen)
修改guest os,替换掉敏感指令。又回到经典虚拟化的方式
4、硬件辅助全虚拟化(目前所有虚拟化都使用)
CPU本身有root\non-root,root给hypervisor使用,non-root给guest os使用。包括intel vt-x\amd-v虚拟化性能开销:
在硬件辅助全虚拟化下,CPU分为两个模式,三个运行态。
root:0(内核模式),KVM使用,当VM需要实现CPU虚拟化、内存虚拟化等,需要从客户机模式退出到内核模式
3(用户模式),QEMU使用,当VM需要实现IO虚拟化,需要从内核模式切换到用户模式
non-root:客户机模式,VM运行时,需要从内核模式进入到客户机模式
1、VM运行过程,需要频繁在三个运行态切换,切换开销。
2、本身hypervisor本身也需要消耗性能。
(旧)华为云计算笔记(二)AI编程——???-tool
Loading...