1.10 싱글스레드 게임 서버
게임서버를 싱글스레드로 구동하는 경우
- 많은 상용 게임 서버는 CPU가 여러 코어로 구성되어 있어서 코어 하나만 사용하게 되는 비효율성 문제 발생
싱글 스레드 서버를 구동하는 경우
- 일반적으로 CPU 개수만큼 프로세스를 띄운다
싱글 스레드 서버의 단점
- 멀티 스레드 프로래밍은 어렵다 // 싱글 스레드 서버를 CPU 개수만큼 띄우는 방법으로 멀티 스레드 서버 대체
- 디바이스 타임을 처리하는 과정에서 큰 시리얼 병목이 일어난다. // 비동기 함수나, 코루틴 사용
- 방 개수만큼 스레드나 프로세스가 있으면 컨텍스트 스위치 횟수가 증가
- 같은 동시접속자를 처리하는 서버라고 하더라도 실제 처리할 수 있는 동시접속자 수를 크게 떨어뜨린다.
*디바이스 타임 : 디스크에서 플레이어 정보를 로딩할 때 발생하는 것
1.11 멀티스레드 게임 서버
멀티스레드로 서버를 개발하는 경우
1. 서버 프로세스를 많이 띄우기 곤란할 때 // 프로세스당 로딩해야 하는 게임 정보의 용량이 매우 클 때(MMO게임서버)
2. 서버 한 대의 프로세스가 여러 CPU의 연산량을 동원해야 할 만큼 많은 연산을 할 때
3. 코루틴이나 비동기 함수를 쓸 수 없고 디바이스 타임이 발생 할 때
4. 서버 인스턴스를 서버 기기당 하나만 두어야 할 때
5. 서로 다른 방이 같은 메모리 공간을 액세스해야 할 때
멀티스레드 게임 서버를 만들 때 주의할 점
- 시리얼 병목과 교착 상태
- 특히 파일을 액세스할 때 자주 잠그는 뮤텍스를 잠근 채로 액세스하는 경우 성능 저하가 자주 발생
'서버 공부 > 게임서버프로그래밍 교과서' 카테고리의 다른 글
2장 컴퓨터 네트워크 (0) | 2022.03.14 |
---|---|
1.멀티 스레딩 (스레드 풀링) (0) | 2022.03.14 |
1장 멀티 스레딩(교착상태, 잠금순서의 규칙, 병렬성과 시리얼 병목) (0) | 2022.03.14 |
1장 멀티 스레딩( 컨테스트 스위칭, 뮤텍스) (0) | 2022.03.11 |
1장 멀티스레딩(프로그램과 프로세스, 스레드, 멀티 스레드프로그래밍) (0) | 2022.03.11 |