服务器 频道

一剂良方克顽疾 英特尔I/O加速技术综述

  【IT168评测中心】越来越多的业务的成功依赖于快速的数据传输和处理。网络应用类型的不断创新,也在快速提升对于网络效能的需求。比如,IDC调查报告显示面世时间不长的iSCSI存储系统近几年推动了600%以上的以太网数据包的增长。

  为了更快的向应用程序传输数据或者得到数据,IT经理们不断的在新型网络和存储架构上进行着投资,以期获得更高的效能。然而网络瓶颈却越来越成为阻碍这些投资发挥完全作用的最大障碍。

  多种良方只为克顽疾一种

  自从上个世纪80年代起,尽管IT技术有了巨大的进步,但是TCP/IP(网络堆栈)的处理方式却几乎没有变化。也就是说,即便用户使用非常先进的CPU依然要处理那些未经优化的TCP/IP协议,由此产生巨大的系统开销并不奇怪。比如,TCP/IP协议的传输过程中需要封装、解包,这些动作对于处理器而言并不是一个复杂的过程,但是却是会占用处理器周期,而且网络带宽越高,这个问题越严重。

频繁的内存访问会影响CPU效能

  系统开销的增大不仅仅表现在占用较多的处理器周期,还会导致处理网络相关数据导致时的内存访问效率降低的问题。这又会进一步的降低CPU效能和网络效率。

  客户端请求/服务器响应的模式已经应用了多年,通过TCP/IP协议交换数据也已经是处理网络数据必需方法,因此了解基于传统模式的数据传输流程将有助于我们发现目前网络I/O中的“顽疾”所在。

数据进出服务器应用程序的流程

  1. 客户端通过网卡将请求以TCP/IP数据包的形式发送给服务器。数据包包括TCP报头信息和实际要传送的数据。

  2. 服务器处理TCP/IP包,然后将其中的信息分配给相应的应用程序。

  3. 运行在服务器上的应用程序获悉客户端请求,然后去存储器中查找所需的数据来响应请求

  4. 应用程序访问存储器来获得数据以满足客户端的请求

  5. 存储将应用程序所请求的数据反给应用程序

  6. 应用程序按照客户端的请求将从存储器调用数据进行处理

  7. 服务器将处理器结果封装成TCP/IP包然后传回客户端

  这个过程中的各个环节均有各自的开销和延迟,这些开销和延迟包括处理客户端发送来的TCP/IP包、将包中有效数据发送给应用程序、获取存储信息和在将处理结果封装成TCP/IP包。在过去,网络流量较低,处理网络相关数据所产生的开销,远远低于用于执行正常任务的开销,所以并不被人所关注。现在,虽然网络流量的大幅度提升,处理网络相关数据所产生的系统开销则越来越不能忽视,甚至已经影响到了正常应用。

  这些问题已经引起了业界的普遍关注,并且已经有了几种解决方案:

  • TOE(TCP Offload Engine,TCP卸载引擎)通过网卡上的专用处理器处理部分或者全部的封包,借此来降低对于系统处理器资源的占用,不过这种解决方案也只是对于具有某些特征的数据包有效;

  • RDMA(Remote Direct Memory Access,远程直接内存访问)是发送端系统直接将有效数据送至目的系统的指定的内存中,无需移动数据包的时间消耗,因此大大提升了网络传输的效率。但是这种技术需要专用的网卡,应用程序也需要进行修改,甚至还增加了一个RDMA层的封装过程,而且这种操作风险较高,因此目前看来还并非一个吸引人的解决方案;

  • Onloading技术将系统处理器作为处理网络流量的第一引擎,尽可能的提升CPU处理器网络数据包的效率,这种思想已经被英特尔借鉴。

  这些方案中TOE是被应用非常广泛的,几乎每次关于I/OAT的技术讲座中,都会有听众询问两者之间的异同。从结果上看,两者非常的类似,都是尽量的提升网络处理效能,降低处理器负载。两种技术的实现方式却是南辕北辙,TOE仅仅着眼于NIC本身,通过增加协处理器来提升数据包的处理效率。I/OAT的精髓却是不局限于I/O问题的本身,从整个平台的层面入手解决问题。

0
相关文章