OpenStack Kilo新特性解读和分析(1)
来源:互联网 发布:淘宝信用卡套现骗局 编辑:程序博客网 时间:2024/05/22 15:54
- hyper-v支持增强
支持第二代虚拟机(通过提供新的固件),通过定义在OpenStack中的属性(hw_machine_type={hyper-gen1,hyper-gen2})来决定是创建一代虚拟机,还是二代虚拟机,默认为一代,另外,虚拟机的格式要求是VHDX,而且二代虚拟机不再允许挂在IDE设备,只能挂在SCSI设备。
目前只有以下操作系统支持创建二代虚拟机:
(1)Windows Server 2012/Windows 8 and above
(2)Newer Linux Kernel
二代虚拟机的主要优势: a) 支持安全引导 b) 减少启动时间 c) 支持跟分区的在线扩展(live resize) d) 使用UEFI代替BIOS
另外一个比较游泳的特性就是:下电hyper-v的主机的时候,先关闭运行在上面的虚拟机的功能- NFV相关功能的增强(目前全部在Nova实现)
OpenStack社区专门成立了TelcoWorkingGroup用来负责NFV相关功能的定义,需求提出,代码review和patch,开发进度跟踪等等职责。
2.1 NUMA感知的调度(NUMA based scheduling)
主要用来解决带有PCI 设备绑定的虚拟机尽量从同一个NUMA node分配CPU和内存资源,来提高虚拟机的性能。典型的应用场景就是NFV,比如pci网卡passthrough等
2.2 绑定guest vCPU到物理机的CPU(spinning vCPU to host pCPU)
这个功能通过flavor的补充属性来实现的,比如给flavor增加如下属性:
hw:cpu_policy=shared|dedicated (shared为默认策略 )
hw:cpu_threads_policy=avoid|seperated|isolate|prefer
默认情况下,所有的vCPU都被虚拟成1core and 1 thread的socket,但是如果有了cpu绑定,物理cpu的拓扑将会影响guest cpu的拓扑,比如一个2 vCPU的guest被绑定到一个2个thread的core上,那么这个guest cpu的拓扑就是1 socket,1 core和2 threads。
cpu_threads_policy将会影响的guest的调度,调度的时候会考虑到物理cpu的thread,比如:
(1)avoid: 调度器将不会将guest调度到带有超线程特性的物理机上
(2)separate: 如果物理机的core支持超线程,那么同一guest的vCPU将会被分到不同的core上
(3)isolate: 如果物理机的core支持超线程,那么同一guest的vCPU将会被分到不同的core上,并且其他guest的vCPU不再允许调度到当前的core上
(4)prefer: 如果物理机支持超线程,那么同一个guest的vCPU将尽可能的被调度到相同的core上。
这个功能会引入很多应用场景,管理员希望对host根据不同的特性进行分组,比如dedicated cpu的一组,shared cpu的host一组; 再比如dedicated ram的host一组,share ram的host一组,所以还需要借助host aggregate的功能。(Dedicated ram相关具体参见:http://www.linux-kvm.org/page/UsingLargePages)
- NFV相关功能的增强(目前全部在Nova实现)
- 大页内存支持(Large Page Support)
这个功能主要是为了提高Guest OS的性能,通过给Guest OS分配Large Page的内存来实现,原理是:内存页越大,那么TLB hit rate将会越高。
同时由于Large Page本身独占的特性,即Large Page不会被swap out,那么如果某个Large Page被分配给了某个进程,那么这个进程将独占这个Large Page映射的物理内存,即不会再给其他进程使用,也不会被OS使用。基于这些特性,所以Large Page Support的功能非常适合性能要求比较高的场景,在OpenStack环境里,就非NFV莫属了。
在x86体系结构下,page size默认为4k,large page size可以是2M或者1G,一般采用2M。
通过flavor的属性:hw:mem_page_size=large|small|any|2MB|1GB,来决定guest os是否使用large page,以及large page size。
这里需要注意,small默认的page size,就是4k,any对于libvirt来说,首先会使用large page,如果不支持,就使用small page.
————————————————————
email: ustc.dylan@gmail.com
微博:@Marshal-Liu
0 0
- OpenStack Kilo新特性解读和分析(1)
- OpenStack Kilo版本新功能分析
- Openstack kilo指南安装与实践(1)
- CommVault v11新特性和战略解读
- Openstack Grizzly 新特性
- 解读java9新特性
- Oracle VM + centos7.1+openstack kilo 多结点安装教程---neutron的安装(1)
- Oracle VM + centos7.1+openstack kilo 多结点安装教程---neutron的安装(2)
- Oracle VM + centos7.1+openstack kilo 多结点安装教程---neutron的安装(3)
- Centos7安装OpenStack-Kilo
- openstack kilo安装记录
- Openstack Kilo Install ERROR
- Ubuntu 14.04一步一步安装Openstack Kilo版本-1
- cenos7.1 安装openstack kilo 心得之五 安装Database
- OpenStack(kilo)界面dashboard的二次开发(四)-国际化
- Openstack kilo指南安装与实践(2)
- Openstack kilo指南安装与实践(3)
- Openstack kilo指南安装与实践(4)
- WebSphere Message Broker ESQL讲解
- 第五章
- 【MySQL之设计表(一)】**重要***MySQL数据库表设计中的注意事项
- 欢迎使用CSDN-markdown编辑器
- MFC - 文件发送接收
- OpenStack Kilo新特性解读和分析(1)
- read和readFully的区别
- RegionServer与OOM不得不说的一些事儿
- js显示某些日期会少一天
- HDU 2537 8球胜负
- Codeforces Beta Round #1 A. Theatre Square
- 2015-05-12-python核心编程(六)Python序列
- 第八周项目三(1)(2)分数类的运算符重载(加减乘除分数以及整数)附加输出流。
- Notification的基本使用