[게임 서버] 1.10 싱글스레드 게임 서버
카테고리: GameServer
태그: GameServer
이 글은 아래의 책을 자세히 정리한 후, 정리한 글을 GPT에게 요약을 요청하여 작성되었습니다.
게임 서버 프로그래밍 교과서, 배현직 저자
📦 1. 멀티스레딩
👉🏻 항목 10: 싱글스레드 게임 서버
🔧 구조 설명
-
서버 구조
일반적으로 싱글 스레드 게임 서버는 아래와 같이 구동된다.
- CPU 코어의 개수 = 게임 서버의 개수
- 하나의 서버 프로세스[게임 서버]가
- 하나의 스레드에서
- 여러 개의 방(Room) 을 순차적으로 처리하는 구조 → 모든 방의 로직은 단일 스레드에서 처리됨
CPU1 CPU2 CPU3 CPU4 │ │ │ │ ▼ ▼ ▼ ▼ [게임서버] [게임서버] [게임서버] [게임서버] └ 방 └ 방 └ 방 └ 방 └ 방 └ 방 └ 방 └ 방 └ ... └ ... └ ... └ ... └ 방 └ 방 └ 방 └ 방
✅ 장점
- 개발이 단순함: 멀티스레딩 동기화 문제 없이 구현 가능
- 동기적 로직 처리: 모든 처리가 순차적으로 일어나므로 상태 관리가 명확함
⚠️ 단점
- 멀티코어 활용이 제한적
- 서버는 CPU의 단일 코어만 사용하므로, 전체 시스템 자원을 비효율적으로 사용함
- 코어 개수에 맞춰 여러 프로세스를 띄우긴 하지만, 코어 하나당 서버 하나만 배정 가능
- 디바이스 타임 처리 시 병목
- 예를 들어, 유저별 위치 갱신, 상태 변화 처리 등에서 순차적 처리로 인해 병목이 발생할 수 있음
- 이를 보완하기 위해 비동기 함수나 코루틴을 도입하는 경우도 있음
- 스레드/프로세스 간 컨텍스트 스위치 부담
- 방마다 스레드 혹은 프로세스를 따로 두면 컨텍스트 스위치가 급증함
- CPU는 스레드 전환에 많은 오버헤드를 소모하게 되어, 결과적으로 동시접속자 처리 효율이 저하
댓글남기기