纷纷扰扰话“多核”:解密应用交付的软件架构

网络 网络优化 网络运维
邓小平曾经说过一句很经典的话:“两手抓,两手都要硬”。作为一类比较特殊的网络设备,应用交付产品同样存在着两个重要的要求:一是网关位置的应用场景要求具有超大的网络吞吐性能;另一方面,应用层加速的特性功能又要求具备超强的CPU计算能力。

CPU篇

邓小平曾经说过一句很经典的话:“两手抓,两手都要硬”。作为一类比较特殊的网络设备,应用交付产品同样存在着两个重要的要求:一是网关位置的应用场景要求具有超大的网络吞吐性能;另一方面,应用层加速的特性功能又要求具备超强的CPU计算能力。从这种意义上来讲,它是既要求纯四层防火墙场景下的高吞吐,又要求防攻击防病毒特性下的高计算能力。

那么,怎么样才能在应用交付上实现这两大重要功能?Intel x86平台款款而来。

近年来,为了在网络产品上开疆拓土,Intel在嵌入式平台领域上持续发力,并且其Sandybridge / Ivybridge系列平台在IO方面做了大幅优化,这就使得它在网络吞吐方面不再存在短板。

基础硬件平台搭建起来后,让各家厂家继续抓耳挠腮的事情就只剩一样了:优化。怎样才能在同质化的硬件平台上优化各自的软件架构,并创造最大的性能效益,成为了让各应用交付厂商两眼冒绿光的重要课题。

在x86平台上,优化目标很明确:就是在单CPU处理能力够强劲的基础上增加多核的并行计算水平。目前在中低端嵌入式平台上普遍应用的Sandybridge/Ivybridge酷睿CPU,最多4核心,如果算上超线程计数可达8核心;而应用于中高端嵌入式的双路至强平台,则最多可以做到2路10核心也就是总共20核心,再算上超线程即可达到40核心之多。如此多的CPU核心,如果能够做到完全并行的话,创造出的性能效益那是杠杠地强啊!

通用操作系统的困扰

因为Linux自身就具备支持并行化处理的功能,因此,目前国内大部分厂商都采用直接利用Linux的SMP模式。

纷纷扰扰话“多核”:解密应用交付的软件架构

为什么会导致这种问题出现?

第一,流水线作业导致堵车事故时有发生。Linux的SMP在工作时,CPU几个核必须流水线一样依次处理各个任务,前面的任务完不成,后面的任务就不能继续。

第二,SMP模式存在大量的互锁操作。何为互锁操作?我们来打个比方,我们把CPU比作人。如果一群人打算吃一筐苹果,当第一个人从筐里拿苹果的时候,为了避免与其他人的操作产生冲突,需要临时“锁”住这筐苹果,这样其他人就必须等第一个人把苹果吃完才能接着“吃”。如此一来,必然人数越多,冲突就越厉害。

第三,内存共享与IPC机制。Linux多核内存共享,一个CPU操作内存的部分数据块时,其他CPU就得在旁边干等着。

第四,是IPC通讯,CPU核与核之间完成交互、调度机制,需要通过IPC消息,而这个在大流量应用层处理时,往往占据了大量的系统开销。

由于SMP机制的这些问题,因此直接导致了在多核平台下,软件的使用效率很低。

T-Force应用交付如何做到高性能?

同样是多核平台,T-Force的ADC为什么能做到这么高的性能呢?

核心在于,T-Force单独设计了软件架构,在业务系统前端增加了分流器的概念。也就是说,进入ADC设备的数据流首先经过分流器的梳理,将数据流分成若干份(一般是按照TCP/UDP五元组的hash值进行分流),再分配到每个核心的业务系统上。这样每个核心的业务系统处理自己单独的一份数据流,不需要和其他核心共享任何表项资源,最大程度上避免共享资源的互斥访问,增加业务处理的并行性。

 纷纷扰扰话“多核”:解密应用交付的软件架构

从上图不难看出,处理业务流量的APP受传统的操作系统的SMP管理,每个APP随机处理数据包。因此所有的APP会在系统内存中共享全局的连接表等资源,业务处理过程就存在比较明显的互斥访问。在核心数越多的情况下,互斥碰撞的概率越高,并行化水平也就衰减得越快。

纷纷扰扰话“多核”:解密应用交付的软件架构

分流器的实质是将流量分组化,每个核心处理一组独立的流。分组之后连接表等数据结构都分布化了,核心之间自然也不存在共享互斥了。

软件分流与硬件分流的差别

软件分流是使用多核CPU内部的某些核心去处理分流的工作。

硬件分流是在CPU之外扩展硬件组件完成分流的工作。

纷纷扰扰话“多核”:解密应用交付的软件架构

软件分流器架构以其实现方便,灵活性好的优点,在盒式ADC设备中普遍应用,为其带来了很大的成本、性能优势。

责任编辑:蓝雨泪 来源: 51CTO.com
相关推荐

2010-01-28 10:17:16

IT争议人物

2011-12-13 15:11:21

移动互联网云计算欧朋浏览器

2011-04-25 10:03:20

苹果三星HTC

2009-04-10 09:17:27

深圳律师百度

2011-05-27 09:55:39

SOC安全管理平台

2013-09-29 10:16:42

2012-08-27 09:24:38

云计算云制造云商务

2011-12-16 09:33:56

小型机回顾

2013-12-21 20:03:34

SDN应用应用交付SDN

2013-12-25 16:56:41

信息化

2014-10-09 15:52:42

ADC

2013-01-21 11:24:47

惠普

2015-04-14 10:57:23

应用程序交付软件定义数据中心

2011-11-25 14:57:01

Radware应用交付

2012-05-21 08:27:18

2011-08-01 14:14:36

加密技术

2011-12-29 13:31:51

虚拟化

2015-08-24 18:08:05

应用交付负载均衡太一星晨

2009-03-24 13:34:46

NehalemIntel多核

2009-09-05 22:09:52

多核计算
点赞
收藏

51CTO技术栈公众号