微众银行作为国内第一家互联网民营银行,也是去IOE最彻底银行,在拥抱开源技术的同时也将自己优秀的产品开源。在硬件国产化的趋势下,国产芯片在我们数据中心得到广泛应用。


Arm服务器在数据中心的实践_java

存储

依托我行分布式架构,采用低功耗的arm芯片+开源ceph构建分布式存储集群。分布式存储集群不需要强大的x86处理器,相对于其它应用对磁盘及网络要求更高,存储构建在arm服务器上在兼顾性能同时带来采购成本下降及数据中心功耗降低。基于arm的分布式存储集群目前已在我行规模化部署,为我行生产系统提供文件存储及块存储服务。

Arm服务器在数据中心的实践_java_02



计算


arm服务器作为计算节点,在云计算的背景下避不开的一个话题就是虚拟化,目前主流的x86硬件虚拟技术包括intel 的 vt-x,amd的 amd-v,那么在arm架构是否支持虚拟化呢,答案当然是肯定的。以开源的kvm虚拟技术做arm与x86虚拟化做类比,配置的主要区别为虚拟化cpu模拟的选择上。

KVM(Kernel-based Virtual Machine的英文缩写)是Linux下硬件平台上的全功能虚拟化解决方案。


KVM主要支持三种 CPU 模式:

#

host-passthrough

libvirt把宿主机的CPU指令集全部透传给虚拟机。在虚拟机上看到的就是物理cpu的型号,一般是在做虚拟化嵌套nested技术的时候使用,不足的是使用这种模式不同型号的 cpu之间无法做热迁移。

#

host-model

libvirt根据当前宿主机CPU指令集从配置文件/usr/share/libvirt/cpu_map.xml选择一种最靠近的cpu型号。在这种模式下,虚拟机的指令集比宿主机少,性能相对host-passthrough要差一点,热迁移时,允许目标主机CPU与源主机的存在一定的差异。

#

custom

这种模式下虚拟机看到的CPU指令集数最少,故性能相对最差,但是它在热迁移时跨不同型号CPU的能力最强。


X86架构上三种模式都支持,arm架构上经过我们测试,只能是host-passthrough模式,其它两种模式会抛出异常,版本选择上建议使用社区比较新版本。性能上,我们实验室实际测试的数据,磁盘,网络及内存两者相差不大,主要是在计算能力差异,使用stress-ng工具,通过不同的算法测试cpu,同是8核16G内存的配置,x86虚拟机计算能力大概是arm虚拟机的3倍左右,这个数据应用从x86迁移到arm上的参考。


Arm服务器在数据中心的实践_java_03


_

x86 (8cpu*16GMEM)


arm (8cpu*16GMEM)


1

308481

111130

2

308391

112355

3

308502

111343


Arm服务器在数据中心的实践_java_03



将分布式的的应用部署在arm服务器及在arm服务器上做虚拟化,实践验证都是可行的,引进国产芯片,让cpu多样性,有助让数据中心变得更加健壮,我们也将朝着更多的组件国产化方向继续探索。