fastsocket是一个fastos的一个网络方面的优化,由新浪开源。fastsocket主要优化内核中的accept因为锁而导致的串行,对于短连接会极大的提高其性能,cpu核越多性能提升越明显。基于内核模块和一个动态链接库,对于某些应用程序不需修改就可使用。但是并非所有应用都能通过fastsocket获得性能提升。 fastsocket比较适用于一下场景:
Ø 系统至少不少于8个cpu
Ø 系统的很大一部分开销用于处理网络软中断以及socket相关系统调用
Ø tcp短连接很多
Ø 应用使用了epool处理网络io
Ø 应用使用了多进程接收连接
计划增加特性:(改善长连接的性能)
Ø direct-tcp:接收数据跳过路由处理
Ø 每一个核维护一个skb pool
Ø 投递packet到应用运行的核上,类似于rfs,(声称更加精确)
Ø 位rps增加用户定义接口
这里特别说明的是,应用必须是多进程accept连接进行处理,并且每个进程采用epoll的方式才能通过fastsocket获得性能提升。
fastsocket主要由一个内核模块和一个用户态动态链接库,通过LD_PRELOAD拦截系统调用,经过libfsocket.so处理后,采用ioctl的形式和fastsocket内核模块进行通信,内核模块进行实际的优化工作。