[게임 서버] 1.10 싱글스레드 게임 서버

업데이트:     Updated:

카테고리:

태그:

이 글은 아래의 책을 자세히 정리한 후, 정리한 글을 GPT에게 요약을 요청하여 작성되었습니다.
게임 서버 프로그래밍 교과서, 배현직 저자

📦 1. 멀티스레딩

👉🏻 항목 10: 싱글스레드 게임 서버

🔧 구조 설명

  • 서버 구조

    일반적으로 싱글 스레드 게임 서버는 아래와 같이 구동된다.

    • CPU 코어의 개수 = 게임 서버의 개수
    • 하나의 서버 프로세스[게임 서버]가
    • 하나의 스레드에서
    • 여러 개의 방(Room) 을 순차적으로 처리하는 구조 → 모든 방의 로직은 단일 스레드에서 처리됨
      CPU1       CPU2       CPU3       CPU4
       │          │          │          │
       ▼          ▼          ▼          ▼
      [게임서버] [게임서버] [게임서버] [게임서버]
         └ 방     └ 방        └ 방        └ 방
         └ 방     └ 방        └ 방        └ 방
         └ ...    └ ...       └ ...       └ ...
         └ 방     └ 방        └ 방        └ 방
           
    

✅ 장점

  • 개발이 단순함: 멀티스레딩 동기화 문제 없이 구현 가능
  • 동기적 로직 처리: 모든 처리가 순차적으로 일어나므로 상태 관리가 명확함

⚠️ 단점

  1. 멀티코어 활용이 제한적
    • 서버는 CPU의 단일 코어만 사용하므로, 전체 시스템 자원을 비효율적으로 사용함
    • 코어 개수에 맞춰 여러 프로세스를 띄우긴 하지만, 코어 하나당 서버 하나만 배정 가능
  2. 디바이스 타임 처리 시 병목
    • 예를 들어, 유저별 위치 갱신, 상태 변화 처리 등에서 순차적 처리로 인해 병목이 발생할 수 있음
    • 이를 보완하기 위해 비동기 함수코루틴을 도입하는 경우도 있음
  3. 스레드/프로세스 간 컨텍스트 스위치 부담
    • 방마다 스레드 혹은 프로세스를 따로 두면 컨텍스트 스위치가 급증
    • CPU는 스레드 전환에 많은 오버헤드를 소모하게 되어, 결과적으로 동시접속자 처리 효율이 저하

GameServer 카테고리 내 다른 글 보러가기

댓글남기기