1.10 싱글스레드 게임 서버

게임서버를 싱글스레드로 구동하는 경우

- 많은 상용 게임 서버는 CPU가 여러 코어로 구성되어 있어서 코어 하나만 사용하게 되는 비효율성 문제 발생

 

싱글 스레드 서버를 구동하는 경우

- 일반적으로 CPU 개수만큼 프로세스를 띄운다

 

싱글 스레드 서버의 단점

- 멀티 스레드 프로래밍은 어렵다 // 싱글 스레드 서버를 CPU 개수만큼 띄우는 방법으로 멀티 스레드 서버 대체

- 디바이스 타임을 처리하는 과정에서 큰 시리얼 병목이 일어난다. // 비동기 함수나, 코루틴 사용

- 방 개수만큼 스레드나 프로세스가 있으면 컨텍스트 스위치 횟수가 증가

- 같은 동시접속자를 처리하는 서버라고 하더라도 실제 처리할 수 있는 동시접속자 수를 크게 떨어뜨린다. 

*디바이스 타임 : 디스크에서 플레이어 정보를 로딩할 때 발생하는 것

1.11 멀티스레드 게임 서버

멀티스레드로 서버를 개발하는 경우

1. 서버 프로세스를 많이 띄우기 곤란할 때 // 프로세스당 로딩해야 하는 게임 정보의 용량이 매우 클 때(MMO게임서버)

2. 서버 한 대의 프로세스가 여러 CPU의 연산량을 동원해야 할 만큼 많은 연산을 할 때

3. 코루틴이나 비동기 함수를 쓸 수 없고 디바이스 타임이 발생 할 때

4. 서버 인스턴스를 서버 기기당 하나만 두어야 할 때

5. 서로 다른 방이 같은 메모리 공간을 액세스해야 할 때

 

멀티스레드 게임 서버를 만들 때 주의할 점

- 시리얼 병목과 교착 상태

- 특히 파일을 액세스할 때 자주 잠그는 뮤텍스를 잠근 채로 액세스하는 경우 성능 저하가 자주 발생

+ Recent posts