네트워크 탐색시간
작성자: 나모
작성날짜: 2008/01/17 10:04:25
소켓 생성(SNMP)을 스레드에서 한다.
프로세스는 여러개의 멀티스레드를 수행할 수 있다.
배제사항) 프로세스가 다른 프로세스를 생성은 고려하지 않는다.(단일 프로세스라고 가정)
let1) 노드하나의 최악의 연결 시간: T
let2) 검색해야 할 네트워크 노드의 수 : N
let3) 스레드의 수: TH (assume. 하나의 TH는 하나의 소켓 연결을 만든다.)
∴ 수행시간의 범위 : N × T
(현실세계에서 N의 개수는 16,777,216개(A클래스), 65,536개(B클래스), 255개(C클래스)
T는 약 3초 라고 가정하면
=> 16777216 × T (50331648초 : 582일 13시간 48초) ~ 65536T (196608초: 18시간 12분 16초) ~ 255T (765초: 12분 45초) )
[주의. 클래스의 기준은 서브넷 마스크로 나눈다]
if ) TH개의 스레드로 수행한다고 하면(컨텍스트 스위칭 시간은 무시한다)
수행시간 : (N / TH) × T
lim {(N / TH) × T} = T
TH→N
현실제한사항1: TH를 N만큼 생성할 수 없다.
현실제한사항2: 한 컴퓨터에서 TH의 개수만큼 소켓을 생성(S)할 수 없다.
(비고. n{S} <= n{TH} << N)
대안. TH를 n{S}의 최대 개수만큼(또는, n(TH)의 최대개수) 생성해서 나누어서 실행한다.
수행시간(현실) = T × (N/n - N%n) (단, 1<n<1998 임)
∴ 결론. MAX_THREADS의 변수를 성능에 맞게 수정해야 한다. (테스트 혹은 기술자료에 의해)
스레드 관련 URLs
최대 생성 가능한 스레드 개수 http://www.devnote.net/42
스레드는 기본으로 1MB의 스택 메모리를 예약
32비트 윈도우즈에서는 하나의 프로세스는 기본적으로 2GB의 사용자 메모리 주소(가상메모리 주소 공간)
=> 최대 2000개 스레드가 결국 한계
대안) 프로세스를 n개 생성 -> 2000n의 스레드 생성 가능
소켓 관련 URLs
윈도우 XP Home edition 에서 최대 소켓 생성 개수 http://blog.naver.com/websearch/70021658722
테스트 프로그램에서는 소켓을 생성할 수 있을 때까지 계속 생성해 보았는데 3949개까지 생성되고 그 다음부터는 생성되지 않았다
'Network' 카테고리의 다른 글
푸시통지(Push Notification) (2) | 2012.09.21 |
---|---|
ARP(Address Resolution Protocol) (0) | 2012.09.21 |
TIME_WAIT (0) | 2012.09.21 |
SNTP(Simple Network Time Protocol) (0) | 2012.09.21 |
MRTG(Multi Router Traffic Grapher) (0) | 2012.09.21 |