'Server'에 해당되는 글 14건

  1. 2019.09.04 게임 서버에서의 Log의 분류
  2. 2019.08.26 IOCP 동작원리에 대하여[작성중]
  3. 2019.08.26 IOCP에 대하여
  4. 2019.07.14 메세지 큐[Message Queue]
반응형

출처 : https://gameqa.tistory.com/86

 

게임 로그(Game Log)의 구성과 분류 - 분석 업무 기초 (Fun QA 등)

게임을 분석하기 위한 한 방법으로 게임 로그를 사용할 수 있습니다. 최근의 게임QA 입사지원 동향을 살펴보면, Fun QA 쪽에 대한 관심이 증가하고 있는것 같습니다. Fun QA 에서는 게임 내용을 직접 분석하기도..

gameqa.tistory.com

 

 

log의 용도별 분류는 크게 3가지로 구분할 수 있다

1. 기록용 로그

2. 발생 시각, 기록용 로그

3. 특정 행동 별 상세 로그

 

 

기록용 로그는 게임 서비스 중 DB에 계속 쌓이기 때문에 DB장비의 스펙에 제약을 받는다.

MMORPG의 경우에는 수많은 액션들이 동시다발적으로 발생하기 때문에 

여러 테이블 참조할 시 지연이 발생할 수 있다.

따라서 게임 로그는 서버에서 얻을 수 있는 가장 단순한 정보를 남기고[원본 로그]

이를 재가공하여 사람이 읽기 쉽게 변경, 부가정보의 추가를 하게된다[표준화 로그]

 

 

발생 시각, 기록용 로그의 경우 크게 액션로그와 히스토리 로그로 구분할 수 있다.

 

액션로그의 경우 관련 액션이 발생 시 즉시 남기는 로그를 칭하며 액션 주체 + 액션 정보 + 부가정보 로 구성된다.

예를 들어 16:00에 playerId가 xx인 유저가 상점에서 product yy를 구매했다고 할 때 

16:00 / xx / buy / productId:yy 이런식으로 남기는 것이 액션 로그이다.

 

반면, 히스토리 로그의 경우 게임의 동향을 파악할 용도로 일정 주기마다 특정 상태를 남기는 로그를 의미한다.

예를 들어 매 10분마다 현재 동접자 수를 확인하려고 할 때 [14:10 / 100][14:20 / 80] 이렇게 남기거나

일정 시간 별 유저들의 전체 결제 건수 등 통계에 사용할 용도의 로그들도 히스토리 로그라고 볼 수 있다.

 

 

마지막으로 액션 별 상세 분류가 있다.

액션 주체에 따라서 시스템로그, 케릭터로그, NPC로그로 분류할 수 있다.

시스템 로그의 경우 서버가 가동 시 서버시작을 알리는 로그 혹은 서버에서 ping이나 RPC호출 발생 시 남기는 로그를 예로 들 수 있다 

케릭터 로그의 경우는 유저 접속 시 로그, 레벨업 혹은 아이템 획득과 관련된 로그를 예로 들 수 있다.

마지막으로 NPC로그의 경우 보스레이드와 관련된 로그 혹은  아이템이 발생한 경우 남기는 로그 등이 있다.

 

반응형

'Server' 카테고리의 다른 글

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

참고자료 : https://developstudy.tistory.com/45

 

C++ IOCP 서버 3. IOCP 구현 (초기화)

* 아직 배우고 있는 학생이라 틀린 내용이 있을 수도 있습니다. 틀린 내용이 있다면 알려주시면 감사하겠습니다. IOCP 이론 : https://developstudy.tistory.com/43?category=836040 C++ IOCP 서버 2. IOCP 이론 *..

developstudy.tistory.com

IOCP는 I/O 처리를 하기 위해서 우선 등록을 한다.

 

우선 CreateIoCompletionPort 함수를 통해서 디바이스와 CompletionPort를 바인딩 할 필요가 있다.

 

이 때 IOCP는 Overlapped를 사용하여 통보를 받아서 처리를 한다.

 

 

Overlapped IO[중첩 입출력 모델]란?

1. NonBlocking, Async 적으로 IO를 처리하는 방법이다.

2. IO를 요청 한 후 별도의 대기시간 없이 리턴 후 다음 작업을 수행한다.

3. 해당 작업의 완료여부를 IOCP를 통해 알 수 있다.

4. 단순 Network만이 아닌 File IO에도 사용이 가능하다.

 

Overlapped IO의 장점

1. IO Blocking이 일어나지 않는다.

2. 버퍼링 오버헤드가 줄어든다.

 - Overlapped IO는 IO 작업 시 OS에서 제공한 버퍼를 사용하지 않고 사용자가 지정한 버퍼를 사용한다.

 -> 단, Overlapped IO 호출을 미리하지 않으면 TCP 수신버퍼로 들어오는 Data가 사용자 버퍼보다 커서 

   TCP 수신 버퍼가 금방 고갈되어 상대에게 Data를 전송하지 못하는 경우가 생길 수 있다.

 -> 단, 해당 이점을 얻기위해서는 별도의 설정값을 지정해줘야 한다.

3. FIFO으로 IO을 처리하는 것이 아닌 SCAN 방식으로 IO을 처리한다.

 * SCAN 방식 찾아볼 것.

 

Overlapped IO 사용 시 주의할 점.

1. Data 전송 시 Data 송신 작업이 완료될 때까지 Data가 있는 사용자 버퍼를 삭제하면 안된다.

 

 

반응형

'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

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
반응형

출처 : https://12bme.tistory.com/176?category=734721

 

[오픈소스] 메시지큐(Message Queue) 알아보기

메시지 큐 개념을 다시 잡아보고자 학습용도로 작성한 포스팅입니다. 출처는 http://zzong.net/post/3 입니다. 메시지 지향 미들웨어(Meesage Oriented Middleware: MOM)은 비동기 메시지를 사용하는 다른 응용 프..

12bme.tistory.com

메세지 지향 미들 웨어[Message Oriented Middleware : MOM]이란?

-  비동기 메세지를 사용하는 다른 응용프로그램 사이의 데이터 송수신을 의미.

 

이러한 MOM을 구현한 시스템을 Message Queue, 즉 MQ라고 칭한다.

 

MQ는 프로그램간, 프로세스간 데이터를 서로 교환할 때 사용하는 방법이다.

데이터를 교환할 때 시스템이 관리하는 메세지큐를 하용하는데 이때 사용하는 프로토콜을 

AMQP[Advanced Message Queing Protocol]이라고 한다.

 

 

메세지 큐의 장점은 크게 6가지가 있다.

1. 비동기 : Queue에 넣기 때문에 나중에 처리 할 수 있다.

2. 비동조 : Application과 분리 할 수 있다.

3. 탄력성 : 일부가 실패하더라도 Apllication 전체에 영향이 가지 않는다.

4. 과잉 : 실패할 경우 재실행이 가능하다.

5. 보증 : 작업의 처리상황을 알 수 있다.

6. 확장성 : 다수의 프로세스들이 큐에 메세지를 보낼 수 있다.

 

MQ는 주로 대용량 데이터를 처리하거나 채팅 혹은 비동기 데이터를 처리할 때 사용한다.

프로세스 단위로 처리하는 우베 요청이나 일반 프로그램 사용 시 사용자 혹은 데이터의 급증 시 

응답 대기 시간이 지연되어 서비스의 장애르 초래할 수 있기 때문에 우선 MQ 로 메세지, 데이터를 집중한 후 

필요한 프로그램에 작업을 분산시키는 것이 주 목적이다.

 

 

MQ 프로그램들은 다음 포스팅에서...

반응형

'Server' 카테고리의 다른 글

서버 Socket 설정하는 방법들  (0) 2019.09.06
게임 서버에서의 Log 구성  (0) 2019.09.04
게임 서버에서의 Log의 분류  (0) 2019.09.04
IOCP 동작원리에 대하여[작성중]  (0) 2019.08.26
IOCP에 대하여  (0) 2019.08.26
Posted by Sweetmeats_boy
이전버튼 1 2 이전버튼

블로그 이미지
Sweetmeats_boy

태그목록

Yesterday
Today
Total

달력

 « |  » 2025.4
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

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함