OpenStack入门篇(五)之KVM性能优化及IO缓存介绍
1.KVM的性能优化,介绍CPU,内存,IO性能优化
KVM CPU-->qemu进行模拟
ring 3-->用户应用 (用户态,用户空间)
ring 0-->操作系统 (内核态,内核空间)
虚拟化难题?
(1)CPU优化:
上下文切换:
宿主机
ring 0
ring 3
虚拟机
ring 0
ring 3
处理器设置-->Inter VT-x/EPT或AMD-V/RVI(V)
缓存:
L1-->静态内存
L2、L3-->动态内存
虚拟机在宿主机上是一个进程,受进程调度器的管理。容易导致Cache miss,为了减少缓存miss,可以通过taskset进行设定,把某个进程绑定到CPU的某个核上,进行提高性能。openstack上是无法进行绑定。
taskset -cp 1 25718
(2)内存优化:
空间优化
寻址
物理在使用内存的时候:虚拟内存-->映射-->物理内存,使用KVM的时候会有如下内存使用过程
虚拟机:虚拟内存
↓映射
虚拟机:物理内存
↓映射
宿主机:虚拟内存
↓映射
宿主机:物理内存
影子页表技术
加速寻址技术:
Inter的EPT技术,内存优化技术,可以加速虚拟机到物理内存的映射
cat /proc/meminfo/
默认内存是4k,内存是分页的。大页内存
[root@linux-node1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
ksmd内存合并,扫描内存地址,把相同的内容进行合并释放,减少内存的占用
[root@linux-node1 ~]# ps axu |grep ksm
root 0.0 0.0 ? SN : : [ksmd]
(3)I/O优化:
①通过virtio技术,加速io访问,linux默认就有这个功能,windows需要装载驱动

②IO调度算法
内核2.6有4种调度算法:Noop CFQ AS Deadline 默认CFQ
内核3.10有3中调度算法:Noop CFQ Deadline 默认Deadline
查看默认的IO调度算法
[root@linux-node1 ~]# dmesg |grep -i scheduler
[ 0.300671] io scheduler noop registered
[ 0.300674] io scheduler deadline registered (default)
[ 0.300691] io scheduler cfq registered
Noop算法:
按顺序来,最简单的的I/O调度算法。该算法仅适当合并用户请求,并不排序请求:新的请求通常被插在调度队列的开头或末尾,下一个要处理的请求总是队列中的第一个请求。SSD必须设置Noop,性能最优。
2.KVM的IO缓存介绍

服务器的硬盘缓存是关闭的,因为会使用RAID卡缓存,RAID带电池,不会在断电的时候丢失数据。
虚拟机的应用程序写数据的方式选择:
KVM默认的方式是WriteThrough,最安全的,但是性能也最差。
OpenStack入门篇(五)之KVM性能优化及IO缓存介绍的更多相关文章
- 【SSRS】入门篇(五) -- 设置报表格式
原文:[SSRS]入门篇(五) -- 设置报表格式 在上一节 [SSRS]入门篇(四) -- 向报表添加数据 我们设置好了报表,并可以预览到数据,如下图: 当报表完成后,有个重要的工作就是美化报表格式 ...
- KVM性能优化
一.KVM为什么要调优 性能的损耗是关键.KVM采用全虚拟化技术,全虚拟化要由一个软件来模拟硬件,故有一定的损耗,特别是I/O,因此需要优化.KVM性能优化主要在CPU.内存.I/O这几方面.当然对于 ...
- Hibernate性能优化之EHCache缓存
像Hibernate这种ORM框架,相较于JDBC操作,需要有更复杂的机制来实现映射.对象状态管理等,因此在性能和效率上有一定的损耗. 在保证避免映射产生低效的SQL操作外,缓存是提升Hibernat ...
- [MySQL性能优化系列]提高缓存命中率
1. 背景 通常情况下,能用一条sql语句完成的查询,我们尽量不用多次查询完成.因为,查询次数越多,通信开销越大.但是,分多次查询,有可能提高缓存命中率.到底使用一个复合查询还是多个独立查询,需要根据 ...
- Linux 性能优化之 IO 子系统 系列 图
http://blog.sina.com.cn/s/articlelist_1029388674_11_1.html Linux 性能优化之 IO 子系统(一) 本文介绍了对 Linux IO 子系统 ...
- KVM性能优化学习笔记
本学习笔记系列都是采用CentOS6.x操作系统,KVM虚拟机的管理也是采用virsh方式,网上的很多的文章都基于ubuntu高版本内核下,KVM的一些新的特性支持更好,本文只是记录了CentOS6. ...
- KVM总结-KVM性能优化之网络性能优化
前面已经介绍了KVM CPU优化(http://blog.csdn.net/dylloveyou/article/details/71169463).内存优化(http://blog.csdn.net ...
- 《android开发艺术探索》读书笔记(十五)--Android性能优化
接上篇<android开发艺术探索>读书笔记(十四)--JNI和NDK编程 No1: 如果<include>制定了这个id属性,同时被包含的布局文件的根元素也制定了id属性,那 ...
- OpenStack入门篇(八)之镜像服务Glance
一.Glance的概述 Glance是为虚拟机的创建提供镜像的服务,我们基于Openstack是构建基本的IaaS平台对外提供虚拟机,而虚拟机在创建时必须为选择需要安装的操作系统,Glance服务就是 ...
随机推荐
- BZOJ 1015 星球大战starwar 逆向并查集
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1015 题目大意: 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个 ...
- python Queue在两个地方
其一: Source code: Lib/queue.py The queue module implements multi-producer, multi-consumer queues. It ...
- swift中的"类型擦除"
代理模式.或者协议模式 因为swift泛型还不支持逆变和协变也就不会有真的类型擦除,而这里说的"类型擦除"是指:利用一个具体实现的通用泛型类(参看系统库的AnySequence), ...
- [Python 多线程] Semaphore、BounedeSemaphore (十二)
Semaphore 信号量,信号量对象内部维护一个倒计数器,每一次acquire都会减1,当acquire方法发现计数为0就阻塞请求的线程,直到其它线程对信号量release后,计数大于0,恢复阻塞的 ...
- Dubbo实践(四)设计模式
Dubbo框架在初始化和通信过程中使用了多种设计模式,可灵活控制类加载.权限控制等功能. 工厂模式 Provider在export服务时,会调用ServiceConfig的export方法.Servi ...
- Eclipse查看.properties文件中文乱码
在中文操作系统中,Eclipse中的Java类型文件的编码的默认设置是GBK,但是对Properties资源文件的编码的默认设置是ISO-8859-1.所以编辑Java文件中的中文不会出现问题,但编辑 ...
- PAT——1042. 字符统计
请编写程序,找出一段给定文字中出现最频繁的那个英文字母. 输入格式: 输入在一行中给出一个长度不超过1000的字符串.字符串由ASCII码表中任意可见字符及空格组成,至少包含1个英文字母,以回车结束( ...
- 【hdu 3177 Crixalis's Equipment】 题解
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3177 \(describe\): 有一个山洞,山洞的容积最大为\(v\).现在你有\(n\)个物品,这 ...
- HttpClient使用小结
使用HttpClient发送请求.接收响应很简单,只要如下几步即可. 1. 创建HttpClient对象. 2. 如果需要发送GET请求,创建HttpGet对象:如果需要发送POST请求,创建Http ...
- 404 Note Found 队-课堂实战-项目UML设计
目录 团队信息 分工选择 课上分工 课下分工 ToDolist alpha版本要做的事情 燃尽图 UML 用例图 状态图 活动图 类图 部署图 实例图 对象图 时序图 包图 通信图 贡献分评定 课上贡 ...