这几年一直在运营商工作,接触到更多的网络和系统应用知识,不再是单一的RouterOS应用,因此对于各网络产品和应用案例等有了一定的认知。我这篇文章基于Raspberry Pi 3B和BIND应用,通过在处理能、功耗和成本方面参考写的。对于一些大型网络来说搭建一台DNS服务器是必要的服务之一,大多DNS服务是基于Linux的BIND,通过对树莓派3B的BIND DNS性能测试,并结合当前x86部署的DNS服务器,对实际网络环境的进行测试。

首先基于树莓派3B搭建Bind的DNS,测试系统为raspbian,默认配置下处理能力,最大处理13000qps请求,功耗不超过5w,对此我进行了各种设备的DNS服务的测试,都配置实际应用环境,都添加了超过1千条的A记录和forward配置,对比如下(当然自己的测试并不一定准确,仅供参考):

注明使用BIND自带的queryperf做压力测试,测试发送平台是Dell R610 Xeon E5-2609×2 2.4GHz 8核心

平台 CPU 内存 功耗(W) 1千条规则(QPS) QPS/w
树莓派3 ARM A53 4核1.2G 1G 5 7370 1474
Dell R620 Xeon E5-2609×2 2.4GHz 单线程 32G 100 12701 127
Dell R620 Xeon E5-2609×2 2.4GHz 8线程 32G 100 38340 383.4
Dell R610 Xeon X5680×2 3.33GHz 单线程 24G 100 16476 164.8
Dell R610 Xeon X5680×2 3.33GHz 12线程 24G 120 54503 454.2
Dell R610(VM Esxi整机120w假设分担1/4) Xeon X5620×2 2.4GHz VM配4核心 24G,VM分配8G 30 36638 1221.3
Intel Celeron J1900 Celeron J1900 1.99GHz 2线程 2G 16 8691 543.2

测试设备除了树莓派3,还包括Xeon E5-2609和Xeon x5680,基于VM平台搭建的BIND,低功耗的Intel Celeron J1900。通过这些平台对比,在功耗和处理性能上找到各自的差别,通过QPS每瓦来体现。

上图很明显树莓派3在QPS每瓦的处理能力上胜出,但Xeon E5-2609和Xeon x5680的CPU性能没有完全利用上,基本是在60-70%,但树莓派3在测试时完全达到100%,因此树莓派3基于ARM A53平台的BIND处理能力在单位功耗上明显,其次是基于Dell R610的VM的平台。通过这样的压力测试,得到了一些实验数据。

下面我们通过将树莓派3放入实际的运营商环境测试,我分配了15000人的DNS请求到树莓派3上,基于15000在线用户的DNS处理测试,使用运营网络环境,用户实际的QPS请求数量在600左右,单台树莓派3的CPU耗用保持着40%左右,从以上测试结果,对于一个宽带运营网络的DNS实际需求做一个评估:

  1.  DNS请求数量分析下,一个15000人的网络每秒QPS大约600,对于一个x86服务器平台处理来说很轻松的事情,但算下单位功耗6QPS/w(服务器安装100w计算),而树莓派3则是120QPS/w,两个相差20倍。
  2.  也许600QPS对树莓派3消耗了40%的CPU,intel至强平台仅耗用2%,CPU使用上x86服务器给人一种安全感,但我们从务实的角度看,够用就行。
  3. 通过集群化可以解决高负载问题,40%的CPU消耗我们可以分配给2台或者4台树莓派3,做出集群,如果是4台树莓派,每台CPU可以降低到10%,功耗是16w,具备冗余的保护机制。如果你用x86服务器建立2台冗余保护,设备价格和耗电自己可以算算了。
  4. 树莓派3的价格不用说了,用一台x86服务器搭建DNS(即使是PC搭建服务)的成本明显高于树莓派3,虽然有Intel Celeron J1900低功耗平台,价格可能和树莓派3差不多,但内存需要自己购买,总体成本要比树莓派3高出1/3

通过上面的分析,可以看出单位计算的功耗差距如此之大, x86服务器,1w只能解决5个QPS,虽然还有空余计算能力,但没有利用起来(可能是我调试的不好),而ARM的计算能力则是x86的20倍。我们可以引入虚拟化平台去解决x86平台单位计算功耗问题,如上面一台VM的虚拟主机假设分担30w功耗,也是处理600QPS,是20QPS/w,但利用率还是比树莓派低6倍。当然有人会说树莓派3没有多余的计算能力抵御突发事件,这点可以承认,但我们可以通过组成集群或者安全手段来解决。

还有稳定性问题,树莓派3毕竟是按照服务器设计的产品,树莓派3是基于ARM A53的解决方案,因此我们可以验证ARM A53在处理类似应用的性能。

从BIND这样的应用服务来说,利用ARM平台解决类似的问题,具备较高效率,因此ARM平台在部分服务应用上,对比x86在单位功耗方面有明显优势。自己测试方式不太专业,这方面的测试仅作为大家参考