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服务就是 ...
随机推荐
- Object-C中对“引用(reference)”的理解
http://blog.csdn.net/csz0102/article/details/25984275 注:以下讨论都是在ARC模式下 我们在iOS开发中最经常碰到的“引用(reference)” ...
- Odoo权限控制
转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9278734.html 一:Odoo中的权限设置主要有以下5种 1)菜单.报表的访问权限 Odoo可以设置菜单项 ...
- ethereumjs/ethereumjs-vm-3-StateManager
https://github.com/ethereumjs/ethereumjs-vm/blob/master/docs/stateManager.md StateManager 要与本博客的ethe ...
- 转载:monkeyrunner之eclipse中运行monkeyrunner脚本之环境搭建(四)
转载自:lynnLi 的monkeyrunner之eclipse中运行monkeyrunner脚本之环境搭建(四) monkeyrunner脚本使用Python语法编写,但它实际上是通过Jython来 ...
- mean函数一个神代码
cs231n上的一个代码,能求出准确率: print 'accuracy: %f' % ( np.mean(Yte_predict == Yte) ) >>> a = np.arra ...
- 我的QT5学习之路(四)——信号槽
一.前言 前面说了Qt最基本的实例创建.控件以及工具集的介绍,相当于对于Qt有了一个初次的认识,这次我们开始认识Qt信号通信的重点之一——信号槽. 二.信号槽 信号槽是 Qt 框架引以为豪的机制之一. ...
- e2fsprogs
开源文件系统ext2/ext3/ext4管理工具e2progs包含的工具组件: 1.debugfs: ext2/ext3/ext4文件系统调试工具.debugfs是一个交互式的文件系统调试工具,可以用 ...
- AutoMapper 帮助类
AutoMapper帮助类 /// <summary> /// AutoMapper帮助类 /// </summary> public static class AutoMap ...
- 表格中的td内的div的文字内容禁止换行一行显示的css
td { white-space: nowrap } td div { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; ...
- zookeeper报错 JAVA_HOME is not set
很多开发者安装zookeeper的时候,应该会发现到这么一个问题: JAVA_HOME is not set 好的!那么这个是什么意思呢? 就是说你的 JAVA_HOME 变量没有设定 为什么会提示 ...