[讨论] http服跑分,怎么理论上应该如何设计才能做到理论最快呢?

100 views
Skip to first unread message

est

unread,
May 6, 2013, 5:55:15 AM5/6/13
to dev4s...@googlegroups.com
最近看到很多http跑分的帖子,比如这个


无聊假设下,linux下,用户态,返回 hello world 的http服务器,理论上最快的方式是什么呢?

我跟同事开玩笑说,如果内核 sk_buffer 里边的data 可以共享,那么只需要把 "HTTP1/1 200 OK\r\nContent-Length:12\r\nConnection: Close\r\n\r\nhello, world\r\n\r\n" 复制一次到内核,以后每遇到一个请求,只需要一次 write() 调用就可以直接返回了。。

不知道linux下socket有没有zerocopy 数据的机制?

sendfile是file fd -> socket fd,但是我们这里只有字符串,没有文件fd

splice() 也是需要两个fd 的。我觉得fd都多余了可以不要了。

不知道我YY得对不对?大家一起来YY一下 http的hello world,应该怎么才能称霸跑分榜呢?

qiaojie

unread,
May 6, 2013, 6:35:20 AM5/6/13
to dev4s...@googlegroups.com
这个需要直接在驱动层上做,理论上限是线速包吞吐量,1000M网卡上的上限是1.48Mpps,也就是每秒能处理148w个请求。


--
--
高性能服务器研发与运营
http://groups.google.com/group/dev4server
---
您收到此邮件是因为您订阅了 Google 网上论坛的“高性能服务器研发与运营邮件列表”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 dev4server+...@googlegroups.com
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
 
 

est

unread,
May 6, 2013, 7:11:49 AM5/6/13
to dev4s...@googlegroups.com
额,那么有没有用户层的手段去达到类似sk_buffer那个例子的效果呢?




2013/5/6 qiaojie <qia...@gmail.com>

qiaojie

unread,
May 6, 2013, 7:43:57 AM5/6/13
to dev4s...@googlegroups.com

内存拷贝不是瓶颈,内存带宽是网络带宽的几百倍,可以忽略不计。主要瓶颈是中断处理和context切换的开销,在用户空间做无法避免。

qiaojie

unread,
May 13, 2013, 9:00:25 PM5/13/13
to dev4s...@googlegroups.com
这篇文章提到了如果做到C10M,关键就是在驱动层处理网络事件,实现200个cycle处理一个数据包。

qiaojie

unread,
May 13, 2013, 9:00:59 PM5/13/13
to dev4s...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages