https://www.yuque.com/dhcn/tn/xlk00g
这篇文章承接上篇Linux低延迟服务器系统调优,主要谈谈Linux网络IO的低延迟方案。由于本人经验所限,只使用过solarflare的软硬件方案,没用过其他的kernel bypass框架(如DPDK)或网卡,所以本文只局限于solarflare相关的使用经验。
首先声明下,本人和solarflare公司没有利益关系,本文尽可能客观的分享个人的使用感受。另外我也不是solarflare产品的专家,如有不准确之处还望指正。
solarflare的拳头产品是它的高性能网卡。我对solareflare网卡的第一感觉是“贵”,和一块高端服务器CPU的价格差不多了。因此如果只把它当成一块支持10G/25G网络的普通网卡来用是暴殄天物了,这里说的当成普通网卡指的是不使用它的软件方案,而是使用Linux内核实现网络编程,这样的话它并不会比普通网卡快多少。如上篇文章所言“一个对延迟要求很高(比如个位数微秒级延迟)的实时任务是不能触碰内核的”,solarflare网卡提供了配套的kernel bypass软件解决方案,还不止一个:Onload, ef_vi和Tcpdirect(关于这三个stack的用法这里就不细说了,官方文档说的很详细)。首先我们关心的是它们的性能怎么样?下图是官方文档中的一个测试结果:
Latency test results
测试使用了两台直接连接的软硬件配置相同的服务器进行pingpong测试,这样RTT的一半可以认为是一台机器从收到发的网卡到网卡的延迟。
从测试结果看来这个数字还挺吸引人的