보관함

WinSocket

I/O 모델 연결시도/
연결성공
메모리 사용량 (KB) Non-Paged Pool CPU 사용량 (%) 쓰레드 개수 처리량 (Send/Receive Byte Per Second)
Blocking
7,000/1,008
12,000/1,008
25,632
25,408
36,121
36,352
10-60
5-40
2,016
2,016
2,198,148/2,198,148
404,227/402,227
Non-blocking
7,000/4,011
12,000/5,779
4,208
5,224
135,123
156,260
95-100
95-100
1
1
0/0
0/0
WSAAsync-Select
7,000/1,956
12,000/4,077
3640
4884
38,246
42,992
75-85
90-100
3
3
1,610,204/1,637,819
652,902/652,902
WSAEvent-Select
7,000/6,999
12,000/11,080
46,000/45,933
10,502
19,214
37,392
36,402
39,040
121,624
64-85
50-60
80-90
113
192
791
4,921,350/5,186,297
3,217,493/3,217,297
3,851,059/3,851,059
Overlapped (events)
7,000/5,558
12,000/12,000
49,000/48,997
21,844
60,576
241,208
34,944
48,060
155,480
64-85
35-45
85-95
66
195
792
5,024,723/4,095,644
1,803,878/1,803,878
3,865,152/3,834,511
Overlapped (completion port)
7,000/7,000
12,000/12,000
50,000/49,997
36,160
59,256
242,272
31,128
38,862
148,192
40-50
40-50
55-65
2
2
2
6,282,473/3,893,507
5,027,914/5,027,095
4,326,946/4,326,496

테스트 서버 : 768 MB 메모리 Pentium 4 1.7GHz Xeon

테스트 클라이언트 : 128 MB 메모리 Pentium 2 233 MHz
128 MB 메모리 Pentium 2 350 MHz
1 GB 메모리 Itanium 733 MHz

테스트 환경 : Windows XP

추천 클라이언트 모델 : 하나 이상의 소켓을 처리하는 클라이언트를 개발하고자 한다면 overlapped I/O 모델이나 WSAEventSelect 모델을 사용하는 것이 성능상으로 유리할 것이다. 만일 윈도우 기반의 응용프로그램을 개발한다면 윈도우 메시지를 이용하는 WSAAsyncSelect 모델을 권해주고 싶다. 왜냐하면 응용프로그램에서 이미 메시지 처리에 관련된 사항들이 준비되어 있을 것이기 때문이다.
추천 서버 모델 : 동시에 몇 개의 소켓을 처리해야 하는 서버를 개발해야 한다면 overlapped I/O 모델을 선택하는 것이 성능상으로 유리할 것이다. 만일 동시에 대량의 I/O를 처리해야 하는 서버를 개발한다면 I/O completion port 모델을 선택하는 것이 성능상으로 더 좋을 것이다.

출처 : Microsoft 공식 지정 학습서 NETWORK PROGRAMMING FOR MICROSOFT WINDOWS Second Edition 204, 205, 233 page

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.