반응형

분류 전체보기 220

Low Fragementation Heap(LFH)

Low Fragementation Heap이란 Heap Memory에 대하여 new와 delete등의 메모리 할당 및 소멸 작업시 멀티쓰레드에서의 Lock에 의한 overhead를 줄여주는 Heap을 말합니다. XP에서 처음 도입되었으며 Vista에서 본격적으로 홍보된 Windows Heap의 일종입니다. 1개의 CPU가 아닌 N개의 CPU에서 멀티쓰레드에서 16KB이하의 메모리를 할당을 위하여 사용할 때 괄목할 만한 성능 향상이 있으며 상황에 따라 기본 Heap에 비하여 성능이 떨어지기도 합니다. 주로 서버용 프로그램에 사용되어질 듯 합니다. 자세한 내용을 담은 페이지는 아래와 같습니다. 윈도우 비스타 힙 관리자 Vista에서의 LFH를 소개한 블로그 글입니다. 댓글에 자세한 테스트를 한 분의 글이 있..

Win32 ThreadPool

MSDN: Thread Pool API Thread Pool API에 대한 간략한 설명이 들어 있는 페이지 입니다. 이 페이지는 기본적으로 전 버전에서 지원하는 API들과 Window Vista에서 지원하는 새로운 Thread Pool API를 비교하며 설명하고 있습니다. 쓰레드 풀은 OS의 쓰레드 풀을 사용하는 것이고 Win2K부터 지원을 합니다. Thread Pool API라는 것은 OS Thread Pool에서 동작하는 API를 나열해 놓은 페이지 입니다. 그러니 API별 용도는 다릅니다. 이 글에서는 Original API를 바탕으로 하나씩 살펴볼까 합니다. 쓰레드 풀 쓰레드는 I/O 쓰레드와 non-I/O쓰레드 2가지 종류가 있습니다. I/O worker thread는 APC(Asynchrono..

TCPWrapper

Unix 서버용 Firewall의 일종으로 inetd를 이용하는 서버프로그램에서 쓸 수 있습니다. 실제적인 용도는 Admin과 같은 경우에는 특정 IP에서만 사용할 수 있도록 하는 방법이 있을 수 있습니다. 뭐, 응용하면 특정 국가의 IP에서는 아예 접속을 받지 않는 방법도 있을 수 있습니다. 보안과 관련 부분으로 아래와 같은 링크에서 좀 더 많은 정보를 얻을 수 있습니다. http://www.superuser.co.kr/security/certcc/secu_certcc_03.htm 한글로 개념이라든지 사용법이 잘 나와 있습니다. http://en.wikipedia.org/wiki/TCP_Wrapper 영문 위키미디어로 개발배경이라던지 하는 정보가 잘 요약되어 있습니다.

NAT(Network Address Translation)의 역활

NAT(Network Address Translation)란? 우리가 일반적으로 인터넷 공유기라고 부르는 기계에서 하는 일로 사설IP를 사용하는 내부의 네트워크 기기(PC등등)들이 하나의 공유IP(Public IP)를 공유하도록 하여 N개의 Public IP로 N개 이상의 사설IP를 가진 기기들이 인터넷을 사용할 수 있도록 한다. 3 가지 모드 static Public IP와 Private IP를 매핑시킴 pooled 사용가능한 Public IP들을 풀(pool)로 가지고 있어 이들 중 하나를 필요에 따라 Private IP와 매핑 시킴 PAT (Port Address Translation) IP주소를 매핑하듯 Port를 매핑하여 Public IP에서의 Port활용성을 높임. PAT를 안할 경우 내부 I..

OLE DB의 클래스 역활

CDataSource DBMS에 대한 연결 문자열, 즉 해당 DBMS에 대한 드라이브에 대한 연결을 제공하는 듯 보임 CSession 일종의 DB Connection임 CCommand Connection에 대하여 Query를 수행 한다. ..DBAccessor 자동으로 만들어지는 클래스로 컬럼에 대한 정보를 가지고 있다. CCommand객체로 Query시 이용한다. ..Accessor 자동으로 만들어지는 클래스로 컬럼에 대한 정보를 가지고 있다. .. : public CCommand 자동으로 만들어지는 클래스로 테이블형태의 억세스를 가능하게 해주는 클래스인 듯 보인다. CDBPropSet CCommand로 Query를 수행할 경우의 커서의 속성을 설정한다.

TCP Protocol MindMap

FreeMind 0.8.1로 만든 TCP 마인드맵입니다. 처음에는 공부한거 나중에 문서 일일이 찾기 싫어서 나중에 부분적으로 찾아보기 위하여 작성한 것인데, 만들다 보니 3363x3180 size의 이미지 크기로 커져버렸군요. 솔직히 이거 만드는데 거의 한달 걸렸습니다. 처음 의도는 기존의 알고있는 지식의 복습과 몇가지 헷갈리는 부분에 대해서 찾아보는 거였는데 RFC 문서와 Wikipedia 영문판 TCP관련 내용들 찾다보니 공부시간이 무한정 늘어나 버렸네요. 그래도 그동안 추상적으로 부분 부분 이해하던 TCP 메카니즘이 완전히 머리속에 들어온게 보람이라면 보람이겠네요. TCP의 메카니즘을 뿐아니라 MSDN에서 API같이 찾다보니 Window의 TCP구현에 대한 특징도 보이고 소켓관련 FAQ의 내용도 읽..

대역폭 지연 곱 (Bandwidth-delay product)

이글은 Wikipedia의 Bandwidth-delay product을 요약한 것입니다. 대역폭 지연 곱이란? 쉽게 말하여 선로의 최대 처리량을 말하는 것으로 주어진 시간에 최대로 선로에 있는 데이터량을 말합니다. 좀 더 쉽게 설명하자면 데이터를 보냈는데 상대편에서는 아직 안받은 상태인, 선로에서 이동 중 일 수 데이터의 최대양을 말합니다. 계산단위는 초당 비트 혹은 바이트입니다. 어디에 쓰는 물건인고? TCP와 같이 신뢰성 있는 프로토콜에서 중요한데, 이유는 데이터를 보냈는데 ACK를 받지 않아 메모리에 있을 수 있는 데이터 최대 양과 비교될 수 있기 때문입니다. (에러시 TCP와 같은 경우는 Retransmission등을 처리해야 하기 때문에 메모리 버퍼에 가지고 있어야 합니다.) 덧붙이면, 윈도우 ..

TCP ECN(Explicit Congestion Notification)

ECN(Explicit Congestion Notification) TCP Header의 Flag 알아보다가 찾게된 명시적 혼잡 통보 기술인 ECN, Window서버쪽에서는 차세대 기술로 구현은 되어있지만 기본적으로 사용되지는 않습니다. 혹, 관련 기술을 찾는 분들을 위하여 편하게 찾으시라고 글 남겨놓습니다. 참고로 ECN의 개념은 TCP Congestion Control 대신에 Network에서 TCP에 혼잡 상황을 알려주어 Congestion Control의 효율을 높이려는 방법으로 혼잡상황을 알려주는 주체가 종단기기들이 아닌 IP네트워크를 구성하는 Router들이 됩니다. TCP의 ECN 기능을 이용한 Differentiated Services의 Assured Service에서의 Fairness 향..

IP(Internet Protocol) Note #1

인터넷 계층은 아래와 같은 역활을 함 - 어드레싱(addressing) - 패키징(packaging) - 라우팅(routing) 인터넷 계층은 아래와 같은 핵심 프로토콜을 가지고 있음 - IP(Internet Protocol): IP 어드레싱과 패킷의 분해, 재조합을 책임지는 프로토콜 - ARP(Address Resolution Protocol): IP주소 MAC주소 변환 - ICMP(Internet Control Message Protocol): IP 패킷의 전달에 따른 오류나 상태를 리포트하고 진단하는 기능을 제공 - IGMP(Internet Group Management Protocol): IP 멀티캐스트(multicast) 그룹의 관리를 책임 IP는 신뢰성 없는 프로토콜인 관계로 아래와 같은 현상..

Overlapped I/O Note #2 서버개발전략

From NETWORK PROGRAMMING FOR MICRSOFT WINDOWS 대용량 데이터 처리(High Throughput) 대량의 데이터를 송수신하는 것을 목적으로 하며 해당 서버의 예로 FTP서버가 있다. 대용량 데이터 처리로 인하여 동시에 연결할 수 있는 연결 수가 제한될 수 있는 문제점이 있으며 아래와 같은 방법이 해결책이 될 수 있다. 제한된 수의 연결을 처리하는 동안 제한된 수의 연결을 처리하지 않고 큐에 넣어 대기시키게하며 제한된 수의 연결을 처리한 후에 대기하고 있던 연결을 꺼내어 처리한다. (뭐, 일종의 처리 연결수를 제한하는 전략인듯.. 책의 내용은 Accept를 위한 queue에서 대기시키라는 건지 별도의 User Level queue를 만들라는 건지 애매 모호함) overla..

Overlapped I/O Note #1

accept 1) backlog를 충분히 잡는다. 2) Win32 - AcceptEx a. What a) accept(..)가 Pending되며 1byte이상이 수신되었을 때 완료된다. b) 성능상의 이유로 AcceptEx에 할당된 커널모드 구조체는 소켓이 연결되었거나 listening socket이 닫히고 난후에 제거할 수 있다. b. How To Use a) 미리 생성된 socket을 accpet(..)에 걸어놓는다. b) 최대치의 개수를 정해놓고 일정수의 AcceptEx를 항상 걸어놓는다. c) 연결만을 걸어놓는 악의적인 접속이나 유효하지 않은 접속을 대비하기 위하여 getsockopt(SO_CONNECT_TIME)을 이용하여 주기적으로 소켓을 검사한다. d) AcceptEx호출이 값비싼 호출이기 ..

Fiber [beta]

파이버는 아래와 같은 단점을 가지고 있습니다.... 우선 처리가 적절하게 끝나야 합니다. 적절하게 끝나지 못하고 중간에서 Fiber Context Switching이 된 상태에서 끝나게 된 경우, 해당 Fiber Context에서 돌아가던 변수들이 클리어 되지 않습니다. 이것 때문에 애 먹었습니다. Compuware Error Detection으로 체크하는데 갑자기 Memory Leak과 Resource Leak이 나와 체크하였는데 결과적으로 실행하다가 프로그램 종료와 함께 종료된 Fiber Context에서 선언되고 사용되어진 Class들의 d'tor가 호출되지 않았습니다. 쩝... Thread관련 클래스에는 이상없이 클리어 되던 얘들인데... (상세한 조사는 하지 않고 버그만을 수정하였습니다.) --..

반응형