发新话题
打印

超高性能网络编程, Asynchronous network I/O[转]

超高性能网络编程, Asynchronous network I/O[转]

作者:fm971
/ c5 I# j+ d5 Z, {( X

; ~& `' m$ k% x3 N' p0 g为什么是超高性能?* |' w0 e/ e) r8 A( \8 E
因为常见资料太过普通, 没有讨论到核心问题.
0 g+ F0 \) r1 j1 b0 u1 X8 ^- B) e  X- l7 Y! W% p& _* T

6 y* X" D. u( S) v0 |! t3 x本贴目的:8 U; _, n. p& X) [
讨论Linux下的高性能网络编程.; k3 e: W$ T+ _, S$ v' I) h& U/ c
热烈欢迎参加讨论, 或提供关键的技术参考资料. 最新的资料确实不好找.
3 V* r& a9 |9 E7 x- ]% i7 ]0 w( z: E- s0 f" n. {2 f) @6 a3 E
( k# L! b9 `$ Z: M% }: n1 I
项目背景:
) o1 T- @& C5 c1 h$ F流媒体交换服务器, 单台服务器配置4个1Gbps 网口. . b) @6 U/ l" a4 F; N4 a4 t
要求客户连接超过1024, (单客户约512kbps),  网络满负载运行, 实时性好.
3 Q. f/ r. w* t1 w$ m" y. W; s2 x# p$ I
参考产品:& d* b# y$ \& K7 A7 ?; t
华为与3COM合作的 杭洲H3C公司的 MS8000媒体交换服务器, 最高并发量只达到1024路.  使用双核CPU,4个 1Gbps网口.
* E6 x$ N) t4 G: ~! C* x
MS8000媒体交换服务器! u' Q# _& @1 S1 t* L& b

8 }: Z* h2 T1 B5 e0 L- P" CH3C还开发了面向电信高端的 媒体交换机.  基本框架应该是嵌入式, 在协议栈中实现流媒体交换. 在网络性能上应该是马马虎虎.
4 W  [; t' u" r$ W/ ]
H3C UMS9005 通用媒体交换机. u' Z) a9 e, O1 l" j! h- _# q$ v
9 g" n; w. i. M5 a+ G
网络并发能力理论上应该达到物理极限.3 ^( C4 \+ J1 [; E5 {& ?8 ?, O
所以发此贴, 还望国内的网络高手不吝赐教!    H3C MS8000的网络性能也不见得就最优化.
1 o& b9 B$ ]) C8 @/ S
# J5 _0 Q  k. U* u* r/ h0 e$ H! ]% V, U5 x! D* N' |
重要资料:. H1 Y9 z: q/ Z" g7 Y' L! V5 O+ O

3 |/ K. ~0 U; _% d: q[1]、 Dan Kegel - "The C10K problem"
5 Q& m1 L1 K  I6 P- r4 M        
http://www.kegel.com/c10k.html
% l' P$ Y! g% Z* f        主题:   Web servers 同时处理10000个客户端的技术问题,包括不同OS.
" S+ S- s5 Z0 o
6 G$ C& `8 l9 q2 \" g[2]、 Improving (network) I/O performance ...
) J5 T3 t# _% C5 X# R" p
http://www.xmailserver.org/linux-patches/nio-improve.html3 A, I  w/ e- b3 g
/ y& d( o; F# Q$ {7 \8 y  B  T
        epoll模型原理及性能测量结论.5 ]5 M) t3 h) ?5 x8 z! F
8 b' L2 ~: L. C
[3]、 Drepper's New Network Interface (proposal for Linux 2.6+)
+ Y- D2 T6 Z7 f* }: y0 N- C% a: [; CAt OLS 2006, Ulrich Drepper proposed a new high-speed asynchronous networking API. See:
8 t  p3 L  A0 V! w& phis paper,
"The Need for Asynchronous, Zero-Copy Network I/O" 9 i. C/ O/ a9 ]; S
his slides :
http://people.redhat.com/drepper/newni-slides.pdf
( W: @6 Y8 y9 lLWN article from July 22 : http://lwn.net/Articles/192410/' D6 [' Q  C/ p" k9 z
$ c$ ?2 W) K7 Q

1 c! D+ V7 @; H" L8 B" B7 x: G[4]、Benchmarking BSD and Linux4 b6 h3 [; V% a( Z7 I- O
http://bulk.fefe.de/scalability/- U4 ^# H! t1 L4 D( S8 e
. s% Y, ~% W- R: n: v3 y: H5 w0 a
在BSD 和Linux系统下,一系列网络性能的测量对比。% r! g. L% u+ T  n

/ n4 d( T( x5 m" q; m2 e  ]6 \, Q" y8 T5 e6 f  [3 T
注释:
( o  G% _* O% L. t
  V1 G! M% [; n* Z% zAIO:  Asynchronous I/O;
+ k1 m( k# T, R. N6 J- a! ^, m$ z( n
以上的资料只到2006年底, 没找到最新的.2 S: L8 N0 l3 I; H5 l. _4 s

5 m+ {8 h5 q9 G4 e& I0 H% Hepoll 只是事件通知模型.  没有异步IO. 使用epoll 仍然需要用户处理缓存.
/ O! o  y+ I$ K3 VLinux 下目前的AIO实现不支持socket, 可以支持文件AIO.' ]  f, j& J6 D  V/ Y& d' s

$ e' Y5 J3 q/ P$ w5 b; K& Q% d3 j; @, R. m
关于windows IOCP:   对用户来讲是异步模型. 但是, 其实现并不是真正的异步.5 V2 _9 Y: e& ^; E$ P' W
真正的AIO是由kernel完成, 不需要线程切换, 应当能实现Zero-Copy.
7 i3 |) w: p; H& x6 ]" G8 t& S
* z- Z: D4 u. M! I% j% Z
以下是在跟贴中提供的资料,整理一下方便使用:) V* d) U4 L3 O+ C* A" d' H* _

' Q) f! w, X1 Q2 w
# b( H; \% ~. @# B0 b0 D[1]、High-Performance Server Architecture0 I4 |. k# ~+ e$ B( z  N. `5 i
http://pl.atyp.us/content/tech/servers.html

! {! d3 K' T  s5 A  N  \3 x' f. [8 e. ^

4 S" }+ z* r1 j/ A[2]、 高性能网络编程,第 1 部分: 最大程度地利用您的网络资源2 ?1 Z6 @1 ?* H1 z
http://www.ibm.com/developerwork ... perform1/index.html
5 ^( C9 c0 `, ^$ |) \# U( c6 y1 _. }: W, O. l* v5 H
高性能网络编程,第 2 部分: 加快客户机和服务器的处理速度; G% H0 g$ Q5 d9 X  t- v/ r
http://www.ibm.com/developerwork ... perform2/index.html      
this message will self-destruct in 5 seconds......
我们的目标--------消灭蛀.....................零回复

TOP

发新话题