openstack-KVM-vCPU
一、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的更多相关文章
- openStack kvm 虚拟机CPU颗粒化控制
前一篇理解cpu topology对CPU Topology进行了学习总结,这里想总结下OpenStack下vCPU与pCPU常用的的绑定方式. 在尝试这些绑定之前,尤其是处理NUMA架构时还是建议看 ...
- OpenStack+kvm虚拟机xml格式解析
配置说明 首先介绍一下配置结构: xml配置遵循<keyword> xxxxxx </keyword>的格式,即一个配置段以<keyword>开头,以</ke ...
- 完整部署CentOS7.2+OpenStack+kvm 云平台环境(3)--为虚拟机指定固定ip
之前在测试环境(centos7.2)上部署了openstack云平台(完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建),openstack在neutron组网 ...
- Migration workstation vms to openstack kvm
Migration workstation vms to openstack kvm 分别分成(磁盘是否拆分,vms 是否 有多个磁盘驱动器) 1, linux迁移 vmware workstatio ...
- 完整部署CentOS7.2+OpenStack+kvm 云平台环境(2)--云硬盘等后续配置
继上一篇博客介绍了完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建,本篇继续讲述后续部分的内容 1 虚拟机相关1.1 虚拟机位置介绍 openstack上创建的 ...
- OpenStack, kvm, qemu-kvm以及libvirt之关系
OpenStack, kvm, qemu-kvm以及libvirt之关系: KVM是最底层的hypervisor,它是用来模拟CPU的运行,它缺少了对network和周边I/O的支持,所以我们是没法直 ...
- 完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建
公司在IDC机房有两台很高配置的服务器,计划在上面部署openstack云平台虚拟化环境,用于承载后期开发测试和其他的一些对内业务.以下对openstack的部署过程及其使用做一详细介绍,仅仅依据本人 ...
- 完整部署CentOS7.2+OpenStack+kvm 云平台环境(4)--用OZ工具制作openstack镜像
在部署openstack云平台环境的时候,需要上传镜像到glance. 首先下载iso镜像,这里下载了centos6.5镜像,放到/usr/local/src目录下然后用OZ工具制作openstack ...
- 《4》CentOS7.0+OpenStack+kvm云平台部署—配置Nova
感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免,欢迎指正! 假设转载.请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...
- KVM VCPU线程调度问题的讨论
2017-11-15 今天闲着没有突然想了想VCPU线程调度的问题,具体描述如下: 当代表VCPU的线程获得控制权后,首先会通过KVM接口进入到内核,从内核进入到非根模式,那么此时站在全局调度器的点上 ...
随机推荐
- org.hibernate.NonUniqueObjectException
错误如下: 2017-3-29 15:17:52~ERROR~org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV ...
- MySQL 数据库 简单操作命令 (部分总结)
1.查看进程方式查看数据库 ps - ajx|grep mysql 2.登录 MySQL mysql -u用户名 -p密码 3.开启服务 sudo service mysql start 4.停止服务 ...
- shell read变量的读入
shell变量的输入: shell变量除了可以直接赋值或脚本传参外,还可以使用read命令从标准输入获取,read为bash内置命令,可以通过help read查看帮助. 语法格式: read [参数 ...
- .net的mvc的fw版本为4.5发布到阿里云【云虚拟主机】上.
注意:云虚拟主机和云服务器(ECS)不是同一个产品,请注意分别. 云服务器ECS: 云虚拟主机: 我用的是云虚拟主机也是第二个,版本是window server 声明:默认,已经把域名[已备案]绑定 ...
- 如何修改discuz论坛的图像地址
今天帮别人修改discuz论坛,遇到一个问题,就是图像显示不出来,按F12键后,发现是自己的图像路径设置有问题,于是就要去修改这个设置路径了.有两种方法: 一,直接修改配置文件,打开config/co ...
- LeetCode算法题-Climbing Stairs(Java实现)
这是悦乐书的第159次更新,第161篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第18题(顺位题号是70).你正在爬楼梯,它需要n步才能达到顶峰.每次你可以爬1或2步, ...
- Python Numpy-基础教程
目录 1. 为什么要学习numpy? 2. Numpy基本用法 2.1. 创建np.ndarry 2.2. Indexing and Slicing Boolean Index 2.3. Univer ...
- python 基本运算符
一.格式化输出 简易名片的制作 name="小龙女" phone=15464623646 firm="神雕侠侣" pro="神仙姐姐" pr ...
- E - Intervals 贪心
Chiaki has n intervals and the i-th of them is [li, ri]. She wants to delete some intervals so that ...
- centos7下安装docker(13.4容器volume总结)
最近我们学习了docker 存储,首先docker存储有两种:storage driver和data volume. storage driver是由镜像层和容器层组成的,可以通过docker ins ...