1>CPU的优化

Inter的cpu运行级别,按权限级别高低Ring3->Ring2->Ring1->Ring0(Ring2和Ring1暂时不使用)Ring3为用户态;Ring0为内核态,Ring3的用户态是没有权限管理硬件的,需要切换到内核态Ring0,这样的切换(系统调用)称为上下文切换。物理机到虚拟机多次的上下文切换,势必会导致性能出现问题。
对于全虚拟化,inter实现了技术VT-x,在CPU硬件上实现了加速转换。
CentOS7默认是不需要开启的。

2>CPU缓存绑定
KVM性能优化

L1是静态缓存,造价高。
L2,L3是动态缓存,通过脉冲的方式写入0和1,造价较低。
cache解决了cpu处理快,内存处理慢的问题,类似于memcaced和数据库。
如果cpu调度器把进程随便调度到其他cpu上,而不是当前L1,L2,L3的缓存cpu上,缓存就不生效了,就会产生miss,为了减少cache miss,需要把KVM进程绑定到固定的cpu上。
可以使用taskset把某一个进程绑定(cpu亲和力绑定,可以提高20%的性能)在某一个cpu上,例如:taskset -cp 125718(1指的是cpu1,也可以绑定到多个cpu上,25718是指的pid).
cpu绑定的优点:提高性能,20%以上
cpu绑定的缺点:不方便迁移,灵活性差

3>内存优化

虚拟机的虚拟内存=====EPT=====宿主机的物理内存
VMM通过采用影子列表解决内存转换的问题,影子页表是一种比较成熟的纯软件的内存虚拟化方式,但影子页表固有的局限性,影响了VMM的性能,例如,客户机中有多个CPU,多个虚拟CPU之间同步页面数据将导致影子页表更新次数幅度增加,测试页表将带来异常严重的性能损失。
在此之际,Inter在最新的Core I7系列处理器上集成了EPT技术(对应AMD的为RVI技术),以硬件辅助的方式完成客户物理内存到机器物理内存的转换,完成内存虚拟化,并以有效的方式弥补了影子页表的缺陷,该技术默认是开启的。

KSM内存合并
宿主机上默认会开启ksmd进程,该进程作为内核中的守护进程存在,它定期执行页面扫描,识别副本页面并合并副本,释放这些页面以供它用。CentOS7默认是开启状态

KVM性能优化

大页内存
Linux默认的内存页面大小都是4K,HugePage进程会将默认的每个内存页面可以调整为2M,CentOS7默认开启的

KVM性能优化

4>磁盘IO优化

1--Noop Scheduler:简单的FIFO队列,最简单的调度算法,由于会产生读IO的阻塞,一般使用在SSD硬盘,此时不需要调度,IO效果非常好
2--Anticipatory IO Scheduler(as scheduler)适合大数据顺序顺序存储的文件服务器,如ftp server和web server,不适合数据库环境,DB服务器不要使用这种算法。
3--Deadline Schedler:按照截止时间的调度算法,为了防止出现读取被饿死的现象,按照截止时间进行调整,默认的是读期限短于写期限,就不会产生饿死的状况,一般应用在数据库
4--Complete Fair Queueing Schedule:完全公平的排队的IO调度算法,保证每个进程相对特别公平的使用IO

查看本机Centos7默认所支持的调度算法
KVM性能优化

临时更改某个磁盘的IO调度算法,将deadling模式改为cfq模式
KVM性能优化
KVM性能优化

使IO调度算法永久生效,需要修改内核参数
[root@node1 ~]# vim /boot/grub/menu.lst 
kernel /boot/vmlinuz-3.10.0-693.el7.x86_64 ro root=LABEL=/ elevator=deadline rhgb quiet