博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kvm虚拟化学习笔记(二十一)之KVM性能优化学习笔记
阅读量:5947 次
发布时间:2019-06-19

本文共 3124 字,大约阅读时间需要 10 分钟。

本学习笔记系列都是采用CentOS6.x操作系统,KVM虚拟机的管理也是采用virsh方式,网上的很多的文章都基于ubuntu高版本内核下,KVM的一些新的特性支持更好,本文只是记录了CentOS6.x系列操作系统下KVM优化的点,有很多都是默认支持开启了的,除了采用virtio方式的磁盘IO,与网络IO接口优化之外,其它真是无需太多优化。

1. CPU性能优化

(1) 服务器或宿主机主板BIOS中开启Intel Virtualization Technology(简称VT), 如果主板支持Intel VT-d,建议开启,一些高级的设备的直接分配功能,需要用到该功能。

[root@node01 ~]# egrep '(vmx|svm)' --color=always /proc/cpuinfo   

(2) 将qemu进程绑定到特定的CPU node(CPU)或core(核)上——避免L2/L3 Cache miss

 待进一步学习。

2. 内存的优化(CentOS6.5 默认开启)

1)EPT巡址优化(默认开启),虚拟地址到物理地址的转换。

[root@node01 ~]# egrep '(ept|vpid)' --color=always /proc/cpuinfo   

fpu_exception   : yes    
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt aes xsave avx f16c rdrand hypervisor lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase smep    
fpu_exception   : yes    
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt aes xsave avx f16c rdrand hypervisor lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase smep

 

2)开启透明巨页支持

kernel进程khugepaged周期性扫描内存, 自动将地址连续可合并的普通4KB page合并为2MB Hugepage,减少page table.该功能针对KVM虚拟化可能有效果,对于一些特殊服务器,例如数据库等可能会起到相反的结果。

CentOS6.5 默认支持透明巨页,参数查看如下:

# cat /sys/kernel/mm/transparent_hugepage/enabled    

[always] madvise never

# cat /sys/kernel/mm/transparent_hugepage/defrag    

[always] madvise never

# 参数说明:    

never   : 关闭    
alway   : 尽量使用透明内存,扫描内存,有512个4k页面可以整合,就整合成一个2M的页面, 需要使用swap的时候,内存被分割为4k大小.    
madvise : 避免改变内存占用

# 建议宿主机、KVM虚拟机均开启THP、EPT ,性能有很大的提升。

其它: 临时关闭THP方式

echo never > /sys/kernel/mm/transparent_hugepage/enabled   

echo never > /sys/kernel/mm/transparent_hugepage/defrag

 

3) KSM (Kernel same-page merging) 如果虚拟机内存不会超配,可以禁用KSM。

CentOS系统中KSM默认是关闭的   

# cat /sys/kernel/mm/ksm/run    
0

开启KSM

# echo 1 > /sys/kernel/mm/ksm/run

关闭KSM    

# echo 0 > /sys/kernel/mm/ksm/run

 

3. 磁盘IO优化

virtio半虚拟化I/O设备框架,标准化guest与host之间数据交换接口,简化流程,减少内存拷贝,提升虚拟机I/O效率

 

1) virtio-blk  (PCI方式挂盘) virtio默认模式 /dev/vda

2) virtio-SCSI (SCSI方式挂盘)磁盘模式/dev/sda,与真实服务器环境一致,需要高版本内核才支持。等进一步测试。

3) 磁盘缓存模式

writeback    :性能好 (小IO不适用)   

none         :中    
writethrough :下(KVM默认)

4) Native aio: kernel AIO (2%-3%) threaded aio: user space AIO emulated by posix thread workers

5) 块设备IO调度器

CentOS6.5 系统中默认采用的是cfq

# cat /sys/block/sda/queue/scheduler   

noop anticipatory deadline [cfq]

参数说明,其它几种参数可以尝试。   

cfq          :perprocess IO queue  较好公平性,较低aggregate throughput    
deadline     :per-device IO queue  较好实时性,较好aggregate throughput, 不够公平,容易出现VM starvation

可以直接采用如下方式修改:   

# echo "noop" > /sys/block/sda/queue/scheduler    
# cat /sys/block/sda/queue/scheduler          
[noop] anticipatory deadline cfq

 

4. Network IO

参考学习:

参考学习:

1)virtio 本系列KVM虚拟机均是采用该模块,windows操作系统需要单独安装驱动

2) vhost-net 基于virtio框架的虚拟以太网设备。高版本内核才支持。

说明:上面只是列出优化点,有些还需要进一步的实验进行验证。

本文转自 koumm 51CTO博客,原文链接:http://blog.51cto.com/koumm/1606422,如需转载请自行联系原作者

你可能感兴趣的文章
对PostgreSQL中 index only scan 的初步理解
查看>>
poj 2337 Catenyms
查看>>
第46周星期二
查看>>
hdu1231-最大连续子序列
查看>>
TMG阵列部署选择
查看>>
Repeater 控件 当数据源没有数据的时候显示 暂无数据 的两种方式
查看>>
大型网站的架构设计图分享-转
查看>>
9.15游戏化体验的原则初探
查看>>
(function(){...}())与(function(){...})()
查看>>
css实现气泡框效果
查看>>
【原创】已知四个坐标点求其两条直线交点坐标
查看>>
request 路径随笔
查看>>
.NET基础之自定义泛型
查看>>
HTML5 Canvas 实现的9个 Loading 效果
查看>>
java.lang.NoClassDefFoundError: org/apache/avro/ipc/Responder
查看>>
利用JasperReport+iReport进行Web报表开发
查看>>
JSON and Microsoft Technologies(翻译)
查看>>
ylbtech-LanguageSamples-ConditionalMethods(条件方法)
查看>>
js 判断各种数据类型
查看>>
【leetcode】Find Peak Element ☆
查看>>