kvm 性能调优
CPU Tuning
Cache share tuning
对于物理 CPU,同一个 core 的 threads 共享 L2 Cache,同一个 socket 的 cores 共享 L3 cache,所以虚拟机的 vcpu 应当尽可能在同一个 core 和 同一个 socket 中,增加 cache 的命中率,从而提高性能。IBM 测试过,合理绑定 vcpu 能给 JVM 来的 16% 的性能提升[2]。
实现策略:虚拟机 vcpu 尽可能限定在一个 core 或者一个 socket 中。例如:当 vcpu 为 2 时,2 个 vcpu 应限定在同一个 core 中,当 vcpu 大于 2 小于 12 时,应限定在同一个 socket 中。
<vcpu 'static' cpuset= '0-5' >4< /vcpu > # |
NUMA tuning
网易运维团队测试得出:2 个 vcpu 分别绑定到不同 numa
节点的非超线程核上和分配到一对相邻的超线程核上的性能相差有 30%~40%(通过 SPEC CPU2006 工具测试)。可见,同一个虚拟机的
vcpu 需限定在同一个 NUMA 节点,并且分配该 NUMA 节点下的内存给虚拟机,保证虚拟机尽可能访问 local memory 而非
remote memory。
关于 memory allocation mode: If memory is overcommitted in strict mode and
the guest does not have sufficient swap space, the kernel will kill
some guest processes to retrieve additonal memory. Red Hat recommends
using preferred allocation and specifying a single
nodeset (for example, nodeset='0') to prevent this situation[1].
<numatune> <memory "preferred" nodeset= "0" /> < /numatune > |
IRQ tuning
CPU0 常用于处理中断请求,本身负荷较重[3]。事实上,线上环境 CPU0 完全处理 eth0 的 IRQ,eth1 的 IRQ
完全由另一个 CPU 处理,同时 CPU0 处理着大量的 CAL 类型中断。预留 2 个或者 4 个物理 CPU,这些 CPU
和对应网卡中断做绑定,使得其它 CPU 更好更完整的为云主机所用。
VCPU topology tuning
Selecting any desired number of sockets, but with only a single core and
a single thread usually gives the best performance results[1]. 即 VCPU 的
topology 设置为 sockets = vcpu_number, cores = 1, threads = 1.
Disk IO Tuning
Disk IO cache Tuning
kvm 支持多种虚拟机多种 IO Cache 方式:writeback, none, writethrough
等。性能上:writeback > none > writethrough,安全上 writeback < none <
writethrough。For the best storage performance on guest operating
systems that use raw disk volumes or partitions, completely avoid the
page
cache on the host[2].
<disk type = 'file' device= 'disk' > <driver 'qemu' type = 'qcow2' cache= 'none' /> # ... < /disk > |
Disk IO scheduler
cfq 参数调优。
Memory Tuning
1. 关于 zone_reclaim_mode,设置为 disable 。
2. 关于 swappiness 参数,若 CPU macro-architecture 非 Intel Nehalem 架构,无需要修改优化。
3. 关闭 KVM 内存共享:When KSM merges across nodes on a NUMA host with multiple
guest virtual machines, guests and CPUs from more distant nodes can
suffer a significant increase of access latency to the merged KSM
page[1].
Disable KSM 方式有两种:
1) 禁止某个 Guest 与其它 Guest 共享内存,XML 文件可配置为
<memoryBacking> <nosharepages/> < /memoryBacking > |
2) 禁止所有 Guest 直接共享内存,Host 配置为
echo 0 /sys/kernel/mm/ksm/pages_shared echo 0 /sys/kernel/mm/ksm/pages_sharing |
4. 打开透明大页:KVM guests can be deployed with huge page memory support in
order to improve performance by increasing CPU cache hits against the
Transaction Lookaside Buffer (TLB)[1].
打开透明大页方式有两种:
1) 允许某个 Guest 开启透明大页
Guest <memoryBacking> <hugepages/> < /memoryBacking > echo 25000 /pro c /sys/vm/nr_hugepages mount -t /dev/hugepages service |
2) 允许 Host 中所有 Guest 开启透明大页
echo always /sys/kernel/mm/transparent_hugepage/enabled echo never /sys/kernel/mm/transparent_hugepage/defrag echo 0 /sys/kernel/mm/transparent_hugepage/khugepaged/defrag |
Network IO Tuning
开启 vhost_net 模式[3]。
参考资料
- Red Hat Enterprise Linux 6 Virtualization Tuning Optimization Guide
- Tuning KVM for performance IBM
- 网易 openstack 部署运维实战
kvm 性能调优的更多相关文章
- 恒天云技术分享系列3 – KVM性能调优
恒天云技术分享:http://www.hengtianyun.com/download-show-id-11.html KVM是什么 KVM 是 kernel-based Virtual Machin ...
- web前端性能调优
最近2个月一直在做手机端和电视端开发,开发的过程遇到过各种坑.弄到快元旦了,终于把上线了.2个月干下来满满的的辛苦,没有那么忙了自己准备把前端的性能调优总结以下,以方便以后自己再次使用到的时候得于得心 ...
- [网站性能2]Asp.net平台下网站性能调优的实战方案
文章来源:http://www.cnblogs.com/dingjie08/archive/2009/11/10/1599929.html 前言 最近帮朋友运营的平台进行了性能调优,效果还不错, ...
- Asp.net平台下网站性能调优的实战方案(转)
转载地址:http://www.cnblogs.com/chenkai/archive/2009/11/07/1597795.html 前言 最近帮朋友运营的平台进行了性能调优,效果还不错,所以写出来 ...
- 第0/24周 SQL Server 性能调优培训引言
大家好,这是我在博客园写的第一篇博文,之所以要开这个博客,是我对MS SQL技术学习的一个兴趣记录. 作为计算机专业毕业的人,自己对技术的掌握总是觉得很肤浅,博而不专,到现在我才发现自己的兴趣所在,于 ...
- sqlserver性能调优第一步
相信不少的朋友,无论是做开发.架构的,还是DBA等,都经常听说“调优”这个词.说起“调优”,可能会让很多技术人员心头激情澎湃,也可能会让很多人感觉苦恼,不知道如何入手.当然,也有很多人对此不屑一顾,因 ...
- JavaScript:内存泄露、性能调优
1.在进行JS内存泄露检查之前,先要了解JS的内存管理: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Manageme ...
- hadoop 性能调优与运维
hadoop 性能调优与运维 . 硬件选择 . 操作系统调优与jvm调优 . hadoop运维 硬件选择 1) hadoop运行环境 2) 原则一: 主节点可靠性要好于从节点 原则二:多路多核,高频 ...
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jstack.jmap.jhat.jstat.hprof等小巧的工具,本博客希望 ...
随机推荐
- jQuery插件综合应用(四)头像设置
一.操作流程 会员点击头像设置,弹出一个层,在层中,有上传图片的按钮,用户点击按钮上传图片,图片在服务器端按大小压缩保存(方便剪切).保存后,在前端显示,然后用户可修剪图片.选择图片区域,点击提交,保 ...
- 新浪微博登录接口(PHP版)
CI框架下 新浪微博登录接口完整版说明:本贴只适合CI框架.功能实现:登录接口跳转链接成功,获取用户信息(包括最重要的u_id)成功,将用户与本地平台连接起来,用户登录成功后信息的存储,本地数据库第三 ...
- Swift(三.函数)
一.swift中的函数分为以下几类吧 1>无参无返 2>无参有返 3>有参无返 4>有参有返 5>有参多返 二.看下面几个例子吧 1>无参无返 func a ...
- DSP:CCS V6 TMS320F2812 使用printf函数
使用Code Composer Studio Version: 6.1.1.00022,建立TMS320F2812工程. /* * main.c */ #include <stdio.h> ...
- SDUT 1305 查找基因序列问题 dp
题目: http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1305 这个题就是一个类似公共子串的dp ...
- Windows命令行语法说明
摘自:http://lavasoft.blog.51cto.com/62575/1113234 Windows命令行语法说明 说来惭愧,用windows这么多年了,对其命令行语法看得似懂非懂, ...
- 写一个TT模板自动生成spring.net下面的配置文件。
这个是目标. 然后想着就怎么开始 1.
- ListToDataTable
public static DataTable ToDataTable<T>(IEnumerable<T> collection) { var ...
- Linq学习之旅——LINQ查询表达式
1. 概述 2. from子句 3. where子句 4. select子句 5. group子句 6. into子句 7. 排序子句 8. let子句 9. join子句 10. 小结 1. 概述 ...
- android recovery模式及ROM制作
转自android recovery模式及ROM制作 1.总述 为了方便客户日后的固件升级,本周研究了一下android的recovery模式.网上有不少这类的资料,但都比较繁杂,没有一个系统的介绍与 ...