配置优化在网易私有云的稳定性得到了保障之后,我们开始了性能方面的调优工作。这一方面,我们参考了 IBM 公司的一些 优秀实践,在 CPU、内存、I/O 等方面做了一些配置方面的优化。整体而言,网易私有云在注重稳定性的基础上,也会积极借鉴业界优秀实践来优化私有云平台的整体性能。 CPU 配置优化为了保障云主机的计算能力,网易私有云开发了 CPU QoS 技术,具体来说就是采用 cfs 的时间片均匀调度,外加 process pinning 的绑定技术。 参考 IBM 的分析,我们了解到了 process pinning 技术的优缺点,并且经过测试也验证了不同绑定方式的云主机间的性能存在较大的差异。比如,2 个 VCPU 分别绑定到不同 numa 节点的非超线程核上和分配到一对相邻的超线程核上的性能相差有 30%~40%(通过 SPEC CPU2006 工具测试)。另一方面,CPU0 由于处理中断请求,本身负荷就较重,不宜再用于云主机。因此,综合上面的因素考虑以及多轮的测试验证,我们最终决定将 0-3 号 CPU 预留出来,然后让云主机在剩余的 CPU 资源中由宿主机内核去调度。最终的 CPU 配置如下所示(libvirt xml 配置): <vcpu placement='static' cpuset='4-23'>1</vcpu><cputune> <shares>1024</shares> <period>100000</period> <quota>57499</quota></cputune>内存配置优化 内存配置方面,网易私有云的实践是关闭 KVM 内存共享,打开透明大页: echo 0 > /sys/kernel/mm/ksm/pages_shared echo 0 > /sys/kernel/mm/ksm/pages_sharing 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 经过 SPEC CPU2006 测试,这些配置对云主机 CPU 性能大概有 7%左右的提升。 I/O 配置优化1)磁盘 I/O 的配置优化主要包含如下方面: KVM 的 disk cache 方式:借鉴 IBM 的分析,网易私有云采用 none 这种 cache 方式。 disk io scheduler:目前网易私有云的宿主机磁盘调度策略选用的是 cfq。在实际使用过程中,我们发现 cfq 的调度策略,对那些地低配置磁盘很容易出现 I/O 调度队列过长,utils 100% 的问题。后续网易私有云也会借鉴 IBM 的实践,对 cfq 进行参数调优,以及测试 deadline 调度策略。 磁盘 I/O QoS:面对日渐突出的磁盘 I/O 资源紧缺问题,网易私有云开发了磁盘 I/O QoS,主要是基于 blkio cgroup 来设置其 throttle 参数来实现。由于 libvirt-0.9.12 版本是在 QEMU 中限制磁盘 I/O,并且存在波动问题,所以我们的实现是通过 Nova 执行命令方式写入到 cgroup 中。同时我们也开发并向 libvirt 社区提交了 blkiotune 的 throttle 接口设置 patch(已在 libvirt-1.2.2 版本中合入)来彻底解决这个问题。 2)网络 I/O 的配置优化 我们主要是开启了 vhost_net 模式,来减少网络延时和增加吞吐量。 运维经验使用经验
运维准则OpenStack 也是一个后端系统服务,所有系统运维相关的基本准则都适用,这里简单的提几点实际运维过程中根据遇到的问题总结的一些经验:
|