一、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系统的分层架构

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'></vcpu>
<cpu mode='host-passthrough' check='partial'>
<topology sockets='' cores='' threads=''/>
</cpu>

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

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

<vcpu placement='static'></vcpu>
<cpu mode='custom' match='exact' check='partial'>
<model fallback='allow'>coreduo</model>
<topology sockets='' cores='' threads=''/>
</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. openStack kvm 虚拟机CPU颗粒化控制

    前一篇理解cpu topology对CPU Topology进行了学习总结,这里想总结下OpenStack下vCPU与pCPU常用的的绑定方式. 在尝试这些绑定之前,尤其是处理NUMA架构时还是建议看 ...

  2. OpenStack+kvm虚拟机xml格式解析

    配置说明 首先介绍一下配置结构: xml配置遵循<keyword> xxxxxx </keyword>的格式,即一个配置段以<keyword>开头,以</ke ...

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

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

  4. Migration workstation vms to openstack kvm

    Migration workstation vms to openstack kvm 分别分成(磁盘是否拆分,vms 是否 有多个磁盘驱动器) 1, linux迁移 vmware workstatio ...

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

    继上一篇博客介绍了完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建,本篇继续讲述后续部分的内容 1 虚拟机相关1.1 虚拟机位置介绍 openstack上创建的 ...

  6. OpenStack, kvm, qemu-kvm以及libvirt之关系

    OpenStack, kvm, qemu-kvm以及libvirt之关系: KVM是最底层的hypervisor,它是用来模拟CPU的运行,它缺少了对network和周边I/O的支持,所以我们是没法直 ...

  7. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建

    公司在IDC机房有两台很高配置的服务器,计划在上面部署openstack云平台虚拟化环境,用于承载后期开发测试和其他的一些对内业务.以下对openstack的部署过程及其使用做一详细介绍,仅仅依据本人 ...

  8. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(4)--用OZ工具制作openstack镜像

    在部署openstack云平台环境的时候,需要上传镜像到glance. 首先下载iso镜像,这里下载了centos6.5镜像,放到/usr/local/src目录下然后用OZ工具制作openstack ...

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

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

  10. KVM VCPU线程调度问题的讨论

    2017-11-15 今天闲着没有突然想了想VCPU线程调度的问题,具体描述如下: 当代表VCPU的线程获得控制权后,首先会通过KVM接口进入到内核,从内核进入到非根模式,那么此时站在全局调度器的点上 ...

随机推荐

  1. Windows平台搭建-----C语言

    上期我们已经进行Linux的平台搭建,今期我们就来搭建下我们最常用的.最适合初学者的一种方式,那就是搭建Windows平台开发环境,只需要两种工具即可,一个就是编辑器(编辑代码的工具),另一个就是编译 ...

  2. Call to localhost/127.0.0.1:9000 failed on connection exception:java.net.ConnectException的解决方案

    Call to localhost/127.0.0.1:9000 failed on connection exception:java.net.ConnectException的解决方案 作者:凯鲁 ...

  3. Word中的通配符随意组合进行批量替换或删除某些内容

    长文档需要批量修改或删除某些内容的时候,我们可以利用Word中的通配符来搞定这一切,当然,前提是你必须会使用它.通配符的功能非常强大,能够随意组合替换或删除我们定义的规则内容,下面易老师就分享一些关于 ...

  4. SpringCloud之初识Zuul(网关)---动态路由,权限验证

    通过前面的学习,使用Spring Cloud实现微服务的架构基本成型,大致是这样的: 我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现:而服务间通过 ...

  5. 官网下载Git方法

    最近去官网下载Git,奇慢,下到一半直接挂掉,挂VPN也是一样 https://git-scm.com/  今天学到一个方法,下载速度可以达到2m/s,那就是复制下载地址,用迅雷下载,可能是迅雷有P2 ...

  6. dicom学习文章

    https://blog.csdn.net/column/details/dicom.html https://blog.csdn.net/zssureqh/article/details/49231 ...

  7. 如何学习Linux性能优化?

    如何学习Linux性能优化? 你是否也曾跟我一样,看了很多书.学了很多 Linux 性能工具,但在面对 Linux 性能问题时,还是束手无策?实际上,性能分析和优化始终是大多数软件工程师的一个痛点.但 ...

  8. idea在maven打包时运行Test测试, 导致打包失败, 乱七八糟的错误

    在maven打包时运行Test测试, 导致打包失败, 乱七八糟的错误 在maven projects中图标toggle'skip Tests' Mode //宏杰帮助 网上案例:https://blo ...

  9. 【转】bios与CMOS有什么区别

    正确的解释应该是: BIOS是软件.是程序! CMOS是芯片.是硬件! 实际上我们是通过BIOS这个程序,去设置CMOS里的参数的. CMOS是一块芯片,集成在主板上,里面保存着重要的开机参数,而保存 ...

  10. Spring Boot设置上传文件大小

    可以使用配置文件配置,也可以使用Bean在启动类中配置 配置文件为application.properties格式: spring.http.multipart.maxFileSize=10Mb sp ...