openstack+kvm部署HPC和RDS-业务网络性能优化

原文地址:http://www.51gocloud.com/?p=1912

前言

  • 业务上云并非简单地将应用部署在VM里就完事了,还需要针对业务特性定制优化方案,特别需要仔细考虑网络性能的优化。本文通过HPC(高性能计算)和RDS(关系数据库服务)两种应用场景上云,来具体说明IaaS层部署必须的考虑和性能优化手段。

场景分析

HPC

  • HPC早于类似Hadoop那样的针对大数据的批量分析之前就已经出现。典型的 HPC 应用包括:大气建模、基因研究、汽车碰撞模拟、流体动态分析等,虽然数据量也很大,但是这些应用更强调高强度的计算。在HPC集群中,各种计算节点是通过集群内的超高速交换网络连接到一起的,集群的性能和可扩展性主要和消息在节点之间的传递速度有关,需要的是低延迟的消息传递。而infiniband技术正是在此处擅长。

HPC应用上云的方案实施起来实际上是两个阶段:
* 1. HPC数据准备阶段:云提供商给客户拉一条直通专线,在云上启动若干VM接收数据,然后存放在云上的高速存储设备上(可以是本地盘),走的是TCP/IP网络协议栈,服务器网络硬件采用的是高带宽的以太网卡。
* 2. HPC运行阶段:HPC应用部署在一组高规格的虚拟机上,infiniband卡直通,HPC应用真正运行起来时,进程间通信是通过infiniband卡,与TCP/IP无关。HPC的最常用的并行文件系统就是lustre,可以使用以太网硬件走TCP/IP,也可以直接使用Infiniband。

  • HPC真正运行起来走的进程间通信使用infiniband,拼的是硬件,所以不用特别关注。本文重点关注第一个过程和lustre文件系统基于以太网卡时的网络性能优化。这一过程基本上类似大数据应用处理前ETL的过程,拼的是VM的TCP大包多流的带宽,网络性能测试工具是netperf TCP_STREAM模式。

RDS

  • 数据库是IT标准的业务应用,OLTP的场景下读写数据大多都是100~200个字节的小包,通常客户端会维护一个连接池,几百个连接同时到dbserver上访问,这就要求RDS实例的网络拼的是单台VM的TCP小包多流下完成请求响应的数量,网络性能测试工具是netperf TCP_RR模式。

VM网络性能优化的手段

虚拟网卡多队列

网络性能优化最常用的支持技术就是网卡多队列,用CPU换性能这一招已经是无数物理网卡的套路了,虚拟网卡也不例外。
参考openstack计算模块nova的设计[1],用户需要额外完成的动作实际就两步:

  1. 给镜像增加一个属性:

    hw_vif_multiqueue_enabled=true|false (default false)

  2. 在guest VM内部,打开多队列:

    ethtool -L eth0 combined 8

  3. 在guest VM内部,对virtio-input/output中断绑核

    其实在openstack官方或是libvirt社区的多队列指南中并没有提到要绑核的问题,
    但是经过对centos7.x的性能测试发现,在host侧经常只会看到一个vhost线程跑到100%的情况,
    而不是多个vhost都跑起来的理想状态。

    原因:在VM内部处理接收TCP ACK响应包的中断跑到同一个vCPU上

    解决方法,必须对中断进行绑核处理,怎么绑核这种小事就不再多说了。

建议部署LACP负荷分担网卡绑定模式加大VM带宽

lacp也就是linux mode 4,相比于主备模式,虚拟机TCP多流带宽翻倍。

参考

  • [1] https://specs.openstack.org/openstack/nova-specs/specs/liberty/implemented/libvirt-virtiomq.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值