一、KVM基础功能

  (1)支持

    硬件支持 VT-x VT-d

    系统支持 kernel > 3.5

  (2)计算机系统的子系统

    CPU 处理器

    Memory 内存

    Storage 存储

    Network 网络

    Display 显示

二、 CPU

  SMP(Symmetrical Multi-Processing),对称多处理技术,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。

  SMT(Simultaneous multithreading),同时多线程。SMT 可通过复制处理器上的结构状态,让同一个处理器上的多个线程同步执行并共享处理器的执行资源。

  CMP(Chip multiprocessors),即单芯片多处理器,也指多核心。其思想是将大规模并行处理器中的SMP(对称多处理器)集成到同一芯片内,各个处理器并行执行不同的进程。与CMP比较, SMT处理器结构的灵活性比较突出。

  NUMA (非统一内存访问),是一种用于多处理器的电脑记忆体设计,内存访问时间取决于处理器的内存位置。 在NUMA下,处理器访问它自己的本地存储器的速度比非本地存储器(存储器的地方到另一个处理器之间共享的处理器或存储器)快一些。

  NUMA架构在逻辑上遵循对称多处理(SMP)架构。

1、vCPU (virtual CPU)

  (1)进程模式

    用户模式 (User Mode): 主要处理I/O的模拟和管理,由QEMU实现。

    内核模式 (Kernel Mode) :主要处理高性能和高安全的指令。

    客户模式 (Guest Mode) :主要执行Guest的大部分命令。

图1  vCPU在KVM中的三种执行模式

  (2)kvm

图2 KVM系统的分层架构

工作原理

KVM包含一个内核模块kvm.ko用来实现核心虚拟化功能,以及一个和处理器强相关的模块如kvm-intel.ko或kvm-amd.ko。KVM本身不实现任何模拟,仅仅是暴露了一个/dev/kvm接口,这个接口可被宿主机用来主要负责vCPU的创建,虚拟内存的地址空间分配,vCPU寄存器的读写以及vCPU的运行。有了KVM以后,guest os的CPU指令不用再经过QEMU来转译便可直接运行,大大提高了运行速度。但KVM的kvm.ko本身只提供了CPU和内存的虚拟化,所以它必须结合QEMU才能构成一个完整的虚拟化技术,也就是下面要介绍的技术。

What's QEMU-KVM

从前面的介绍可知,KVM负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm并不能模拟其他设备,还必须有个运行在用户空间的工具才行。KVM的开发者选择了比较成熟的开源虚拟化软件QEMU来作为这个工具,QEMU模拟IO设备(网卡,磁盘等),对其进行了修改,最后形成了QEMU-KVM。

在QEMU-KVM中,KVM运行在内核空间,QEMU运行在用户空间,实际模拟创建、管理各种虚拟硬件,QEMU将KVM整合了进来,通过/ioctl 调用 /dev/kvm,从而将CPU指令的部分交给内核模块来做,KVM实现了CPU和内存的虚拟化,但KVM不能虚拟其他硬件设备,因此qemu还有模拟IO设备(磁盘,网卡,显卡等)的作用,KVM加上QEMU后就是完整意义上的服务器虚拟化。
综上所述,QEMU-KVM具有两大作用:

  1. 提供对cpu,内存(KVM负责),IO设备(QEMU负责)的虚拟
  2. 对各种虚拟设备的创建,调用进行管理(QEMU负责)

这个方案中,QEMU模拟其他的硬件,如Network, Disk,同样会影响这些设备的性能。于是又产生了pass through半虚拟化设备virtio_blk, virtio_net,提高设备性能。

QEMU-KVM,是QEMU的一个特定于KVM加速模块的分支,里面包含了很多关于KVM的特定代码,与KVM模块一起配合使用。

目前QEMU-KVM已经与QEMU合二为一,所有特定于KVM的代码也都合入了QEMU,当需要与KVM模块配合使用的时候,只需要在QEMU命令行加上 --enable-kvm就可以。

2、SMP

  SMP(Symmetric Multi-Processor)对称多处理器。是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。

3、CPU 超配

  虚拟机的 vCPU总数可以超过物理CPU数量,这个叫 CPU over-commit(超配)。KVM允许 over-commit,这个特性使得虚拟机能够充分利用宿主机的 CPU 资源,但前提是在同一时刻,不是所有的虚拟机都满负荷运行。

4、CPU 模型

  (1)CPU模型

    qemu64

    qemu32

    直接传递

    其它POWER

  (2)VMM自定义策略的CPU类型,可以提供一些高级的过滤功能,同一组硬件平台上的动态迁移更加平滑和安全。

    CPU类型存放位置及定义格式:

    more /usr/share/libvirt/cpu_map.xml | grep "model name"

<domain type='kvm'><cpu mode='custom' match='exact'><model fallback='allow'>Westmere</model></cpu>
</domain>    

(3)使用物理机CPU类型,定义如下:

<domain type='kvm'><cpu mode='host-passthrough'></cpu>
</domain>

  (4)使用物理机CPU类型特点:

    物理CPU特性供虚拟机使用,嵌套

    公有云,客户看到物理CPU,体验会比较好

    虚拟机的迁移会有问题

(5)使用物理机CPU的虚拟机vCPU参数配置文件:

文件所在位置:/etc/libvirt/qemu/

打开文件:virsh edit centos-2-1(虚拟机名)

<vcpu placement='static'>16</vcpu><cpu mode='host-passthrough' check='partial'><topology sockets='2' cores='4' threads='2'/>
</cpu>

注:CPU插槽为2,内核为4,超线程为2。

(6)使用coreduo CPU的虚拟机vCPU参数配置文件:

<vcpu placement='static'>4</vcpu><cpu mode='custom' match='exact' check='partial'><model fallback='allow'>coreduo</model><topology sockets='1' cores='2' threads='2'/>
</cpu>

  注:CPU插槽为2,内核为4,超线程为2。

5、进程的处理器亲和性和vCPU绑定

  进程的处理器亲和性(Processor Affinity),即CPU的绑定设置,是指将进程绑定到特定的一个或多个CPU上去执行,而不允许将进程调度到其他的CPU上。

  (1)开机进入grub时,隔离1,2号CPU:

    grub add

    isolcpus=1,2

(2)查处理器编号对应的进程总数:

    ps -eLo psr | grep 0 | wc -l

    ps -eLo psr | grep 1 | wc -l

    ps -eLo psr | grep 2 | wc -l

    ps -eLo psr | grep 3 | wc –l

  (3)查CPU编号对应的进程等信息:

    ps -eLo ruser,pid,ppid,lwp,psr,args | awk '{if($5==1) print $0}'

    ps -eLo ruser,pid,ppid,lwp,psr,args | awk '{if($5==2) print $0}'

参数:

      migration:用于进程在没CPU间迁移

      kworker:用于处理workqueues

      ksoftirqd:用于调度CPU软中断的进程

      -e:显示所有进程

      -L:显示LWP(light weight process)

      -o:自定义输出

      psr:处理器编号

      lwp:线程ID

      ruser:运行进程的用户

      pid:进程ID

      ppid:父进程ID

      args:运行的命令和参数

  (4)字符安装虚拟机并绑定:

    virt-install --name=c1 --disk path=/kvm/c1.img --memory=1024 --vcpus=2 --graphics spice --location=/kvm/CentOS.iso

    ps -eLo ruser,pid,ppid,lwp,psr,args | grep qemu | grep -v grep

     处理器和vCPU绑定:

      taskset --help

      taskset -pc 1 5339

   处理器和vCPU绑定:

      virsh vcpuinfo centos7.0

      virsh vcpupin centos7.0 0 20

      virsh vcpupin centos7.0 1 21

      virsh vcpupin centos7.0 2 22

      virsh vcpupin centos7.0 3 23

openstack-KVM-vCPU相关推荐

  1. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(3)--为虚拟机指定固定ip

    之前在测试环境(centos7.2)上部署了openstack云平台(完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建),openstack在neutron组网 ...

  2. Openstack KVM虚拟机启动参数

    大家从OpenStack页面上,轻松一点就创建了一个虚拟机,但是当你登陆到一台物理机上ps查看的时候,却发现参数复杂之极. qemu-system-x86_64 -enable-kvm -name i ...

  3. Openstack+KVM实践企业私有云中win7虚拟机只能看到2个CPU的解决方案

    现象 有时候会发现一个很奇怪的现象,无论配置几个CPU,但是在win7的系统里面,只能看到2个CPU: 配置了4CPU,在处理器里看也是4个,但是只能使用2个:   原因 1.Windows 7最多只 ...

  4. Openstack kvm win7镜像制作(转)

    Openstack不但能管理linux虚拟机还能管理windows虚拟机,之前做过基于kvm的debian6镜像,今天实战一下win镜像的制作,以win7为例. www.2cto.com 母系统环境: ...

  5. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(2)--云硬盘等后续配置

    1 虚拟机相关 1.1 虚拟机位置介绍 openstack上创建的虚拟机实例存放位置是/var/lib/nova/instances 如下,可以查看到虚拟机的ID [root@linux-node2 ...

  6. 《3》CentOS7.0+OpenStack+kvm云平台部署—配置Glance

    感谢朋友支持本博客,欢迎共同探讨交流.因为能力和时间有限,错误之处在所难免,欢迎指正. 假设转载.请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...

  7. 《5》CentOS7.0+OpenStack+kvm云平台的部署—组态Horizon

    感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免,欢迎指正! 假设转载.请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...

  8. openstack kvm 虚拟机磁盘差异衍生

    1, openstack虚拟实例备份之--多镜像格式多镜像文件合并为一个镜像文件 衍生-差异镜像文件    /var/lib/nova/instances/b0abc22f-1a73-4079-b1b ...

  9. 《5》CentOS7.0+OpenStack+kvm云平台部署—配置Horizon

    为什么80%的码农都做不了架构师?>>>    感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正! 如果转载,请保留作者信息. 博客地址:http ...

  10. OpenStack KVM环境搭建

    1.安装所需软件 yum -y install qemu-kvm qemu-system libvirt virt-manager bridge-utils vlan 2.确认虚拟机是否支持虚拟化 c ...

最新文章

  1. linux登录ssh怎么保存采集的脚本,ssh自动登录并且su的脚本
  2. 5个IO口扫描25个按键的解决方法(转帖)
  3. rest-framework-权限组件
  4. Spring IoC,Spring Bean示例教程
  5. 4月14日,微软发布例行月度安全更新
  6. JBoss - 调整JVM内存 -Xms512m -Xmx1024m
  7. (转)Maven仓库——私服介绍
  8. jQuery Callback 方法
  9. CHIL-SQL-LEFT JOIN 关键字
  10. opencl JAVA编程_《OpenCL异构并行编程实战》第十二至十四章
  11. javascript服务端编程
  12. firework.js
  13. 《TCP/IP详解 卷1:协议》PDF分享
  14. PFC离散元仿真核心技术与应用
  15. html5 边框效果图,图片边框border-image的用法
  16. 【文印技巧】明明选了黑白打印,却印出了棕红色,怎么解决?
  17. 心灵捕手:勒索软件是如何运用心理战术达到攻击目的?
  18. css浮动,清除浮动,溢出属性,定位,设置透明度
  19. 基于html篮球网页游戏,基于html5和jquery的篮球跳动游戏
  20. 出色项目经理技能 ——人际交往技能

热门文章

  1. STM32野火教程学习
  2. acm 程序设计大赛各种输入方式(python版)
  3. 证件阅读机所能识别的类型与应用
  4. Mugeda(木疙瘩)H5案例课—足球小游戏-岑远科-专题视频课程
  5. JAVA网站后台管理系统
  6. 无源滤波器讲解和典型DCDC稳压芯片外围电路的设计
  7. 插件 阴阳师 百鬼夜行
  8. 调整Poker 在Mac、win下通用键位,解决mac的复制粘贴问题
  9. 关于普中科技程序烧录软件PZ-ISP与驱动安装程序SETUP.exe之间血与泪的教训
  10. 酷派android sdk,酷派彩客易SDK配置说明