目前能找到的第一手资料只有Van在Linux.conf.au 2006上对此所做的Presentation。Van在Linux上实现了他的Channel,测试表明性能取得了惊人的提升。下表是从该Presentation中摘出的测试结果。

Van的测试环境是两台采用双至强2.4GCPU的Dell服务器,通过两块e1000网卡直接连接,操作系统是Linux,内核为2.6.15,e1000驱动版本为6.3.9。测试软件用的是netperf。
“1CPU”表示启用了CPU Affinity,“2CPU”表示未启用CPU Affinity,“drvr”表示采用了修改后的网卡驱动,即“Channelized Driver”,“sock”表示采用了“channelized socket”,“App”表示采用了“Channelized app”。“Busy”是CPU占用率,“Intr”和“Softint”是中断和软中断发生次数,
“Socket”、“Locks”、"Sched"和“App”代表相应的CPU占用率。
从此表可以看出,2CPU的性能要远小于2 x 1CPU,由于cache对系统性能的影响越来越大,增加CPU所带来的Cache开销会大大抵消新加CPU所提供的计算能力。通过采用 channelized driver可以很大程度的消除这种影响。随着对Socket和App的进一步优化,性能进一步提升,对比1CPU,2CPU和APP的数据,其结果是惊 人的。
可惜Van的Presentation里没有更多介绍改进的细节,我将在另外一篇blog里与大家讨论这个问题。
没有评论:
发表评论