2019. 8. 26. 17:04 Server

IOCP에 대하여

반응형

참고 출처들

 - 1. https://developstudy.tistory.com/42?category=836040

 

C++ IOCP 서버 1. 동기 비동기

* 아직 배우고 있는 학생이라 틀린 내용이 있을 수도 있습니다. 틀린 내용이 있다면 알려주시면 감사하겠습니다. 소켓 프로그래밍에서 사용하는 함수는 기본적으로 블로킹(Blocking) 함수이다. Send(), Recv(), Co..

developstudy.tistory.com

- 2. https://dev-ahn.tistory.com/114

 

서버 모델 - 윈도우 IOCP

IOCP : Input/Ouptput Completion Port : Proactor 방식의 고성능 I/O Notification Model로 asynchronous I/O 지원 : Windows OS가 직접 효율적인 스레드 풀링 제공으로 context switching을 줄임 : Overlapped I..

dev-ahn.tistory.com

IOCP에 대하여

- IOCP란 무엇인가

IOCP의 장단점

IOCP를 주로 사용하는 분야

 

 

IOCP란 무엇인가?

 IOCP란 Input Output Completion Port의 약자로써 입출력 완료 포트라는 것이다.

 IOCP는 window 환경에서 작동하는 논블로킹 프로세스로서 최소한의 스레드를 사용해서 Port와 관련된 입출력을 처리하는 기법이다.

 - Port 는 기존 소켓port와는 약간 다른 의미이다(출처1에선 그렇다던데 진짜?)

 

IOCP의 장점

1. 위에서 서술한 것처럼 적은 수의 스레드만을 사용하여 구현할 수 있다.

2. 적은 수의 스레드 사용으로 CPU점유율도 낮으며, Context switching 비용도 적다.

 -> 윈도우 OS가 직접 스레드 풀링을 관리하기 때문에

3. winsock2 API중 가장 확장성과 성능이 뛰어나다.

4. Overrapped I/O를 확장 시킨 개념이기때문에 커널영역과 유저영역의 버퍼를 공유한다.

 

 

IOCP의 단점

1. 프로그램 구현이 복잡해진다.

2. window 기반 플랫폼에서만 사용이 가능하다.

3. 하나의 I/O operation 마다 버퍼영역에 대한 page-lock/unlock이 필요하다.

 -> 특정 메모리에 대한 pin/unpin은 많은 CPU cycle을 요구한다.

 -> recv 를 posting 할 때, page-locking을 피해서 zero-byte recv를 사용한다. 

 -> page-locking 찾아볼 것.

4. 하나의 I/O operation 마다 시스템 콜을 호출한다.

 -> 이로 인해 유저모드-커널모드 전환이 발생한다.

* zero-byte , zero-byte recv 찾아볼것.

 

 

IOCP를 주로 사용하는 분야

- 통신이 많고 비동기 처리가 필요한 윈도우 기반 게임 서버

 

반응형

'Server' 카테고리의 다른 글

서버 Socket 설정하는 방법들  (0) 2019.09.06
게임 서버에서의 Log 구성  (0) 2019.09.04
게임 서버에서의 Log의 분류  (0) 2019.09.04
IOCP 동작원리에 대하여[작성중]  (0) 2019.08.26
메세지 큐[Message Queue]  (0) 2019.07.14
Posted by Sweetmeats_boy

블로그 이미지
Sweetmeats_boy

태그목록

Yesterday
Today
Total

달력

 « |  » 2024.11
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함