服务器不同于台式机和工作站,它与外界打交道的通道就是网络,无论处理器进行了哪些复杂的计算,其结果都要通过网卡返回给请求对象。从某种意义上讲,网卡就是服务器对外联络和通信的"咽喉"组件,它在某种程度上决定了服务器的整体性能。我们进行的服务器TPS性能测试,就是围绕网卡的吞吐能力进行的。
其实很多用户都有疑问-服务器的网卡真的那么重要么?我的笔记本电脑也配置千兆网卡啦!没错,目前主流服务器所配置的都是千兆以太网卡,从指标来看,这两种网卡在性能上没有什么区别,但是面对大数据流的时候,你就会发现服务器的网卡功力之深厚,远非桌面级网卡所能比拟的。
计算机世界实验室的服务器测试脚本中有两类应用与服务器网卡的性能直接相关,一类是静态Web页面,另一类是基于ASP的Web应用。这两类应用都有同一个特点,即单位时间内并发请求高,而通过专用测试设备可直接向服务器发出海量数据包,服务器吞吐能力的高低即刻就能呈现出来。
在常规的Windows Server 2008系统的测试中,我们发现在默认设置下,即便是表现最好的至强5500服务器平台,静态响应指标都很难超越28000TPS,而此时处理器性能还远未发挥出来。表面上服务器的吞吐性能似乎是被VCPU限制了,其实瓶颈在于网卡,因为网卡在默认状态下只能和一个VCPU打交道,而服务器网卡显然不应该只有这点实力。
从各家服务器网卡芯片的资料和驱动中,我们发现,在新一代服务器网卡配置中,都提供了TOE(TCP Offload Engine)功能。此功能可以将网络层面的一部分工作移至硬件完成,以节约CPU的资源,在高级选项中可以设置是否对Rx/Tx有效。在开启此选项后,可以明显看到VCPU资源得到了相当程度的释放,整机访问性能也上升到了41000TPS,即使面对这样强的数据流,至强5500平台整体CPU占有率依然未超过70%,而且表现还相当平稳。如此成绩令我们兴奋之余,也让我们意识到,处理器还有余力,看来网卡端还有潜力可挖。
没错,下面就开始介绍本次测试的重点-RSS(Receive-Side Scaling),拥有RSS功能的网卡不少,但是能在RSS基础上提供队列支持的就太少了,我们最终在英特尔i82576网卡上看到了最多支持8条队列的特性,而它同时支持1/2/4/8条队列的功能也让我们更深入地了解了不同队列数量对于新一代多核服务器吞吐性能的意义。
RSS队列的精华功能是将网卡的数据分流到运行在不同VCPU的并行协议栈上,因此在实际测试中,我们发现,在设置两条队列时,服务器的性能就获得了极大的提升,53000TPS的性能远远超出了最初的预想,而此时服务器整体CPU占有率也超过了90%。而随着4条队列的引入,即便是双路至强 5500平台的16颗VCPU,也都能调动起95%以上的计算能力,而此时性能几乎达到峰值-57600TPS,再引入8条队列,也基本如此了。因此我们初步判断,要提升服务器的Web接入、数据库访问、网络游戏前端等强调TPS指标的应用模型时,RSS队列是一个必须要关注的设置点。它配合TOE,可以充分发挥多核时代服务器的吞吐性能。