SlideShare a Scribd company logo
Multi Thread Game Server
Contents
●
    Summary & Simple Test
●
    게임 서버 구조 사례
●
    문제점 및 개선 방안
Summary

[Concurrent Programming with Threads]
Rajkumar Buyya
Summary
Simple Test
User.h
The Goal
Single Thread




      Core A         Core B




50%
2 Threads




       Core A       Core B



100%
4 Threads




       Core A            Core B



100%




                Core A            Core B
8 Threads




Core A       Core B
Result

6000




5000




4000




3000




2000




1000




  0
       1 thread   2 threads        4 threads   10 threads
Thread Programming Models




 [ A Thread Pipe Line ]
Thread Programming Models




  [ The Peer Model ]
Thread Programming Models




[ The Boss and Worker ]
Worker Threads
Worker Threads

    Worker A




Worker B




    Worker C


                 [User]
경쟁 상태


 Wor
     ker A




Worker B               Enemy Thread



         C             Time Wo
    rker                       r   ker
 Wo           [User]
10000000 Updating
경쟁 상태의 문제점
●
    Crash (ntdll?)
●
    드랍 아템 다수가 획득
●
    인벤 꼬임
●
    경험치 이상
●
    ...
Synchronization

   Worker A




Worker B




    Worker C
Synchronization
Dead Lock




Worker           Enemy Thread
Dead Lock




Worker A           Worker B
보너스

●
    Self Deadlock (← single thread에서도)


●
    Half Deadlock
Chaos
Wo
   rke                                ad
      rA                      my Thre
                        Ene




          B           T im
    r ker                    eW
 Wo                            or k
                                   er
Synchronization

  Worker A


  Worker B


  Worker C


Enemy Thread


Time Worker
Synchronization


                  50
                  %




                  70
                  %




                  70
                  %
Synchronization

10000


9000


8000


7000


6000

                                                                               with lock
5000                                                                           no lock

4000


3000


2000


1000


   0
  1 thread   2 threads     4 threads   10 threads   20 threads   100 threads
Synchronization


                      50
                      %




                  ?
                      70
                      %




                  ?

                      70
                      %
Avoiding Deadlock
●
    Mutual Exclusion
●
    Hold and Lock
●
    No Preemption
●
    Circular Wait
Deadlock Detector




●
    http://www.softwareverify.com/cpp-thread.php
Chaos
Wo
   rke                                ad
      rA                      my Thre
                        Ene




          B           T im
    r ker                    eW
 Wo                            or k
                                   er
Logic Thread


Logic Thread A




Logic Thread B
Impenetrable Fortress
   [ɪm|penɪtrəbl]
http://ohyecloudy.com (오종빈)
Multi thread game server
Impenetable Fortress
   [ɪm|penɪtrəbl]
Multi thread game server
Multi thread game server
경쟁 상태
                          er
                     Work

                                Thread
              User

Wo
   rker




                       Ti
                          m
                           er
                r
            r ke
          Wo
무관심 상태
Tim
   er     W        Th
           or         rea
             ke
               r          d




                   Us
                     er
Impenetrable Fortress
   [ɪm|penɪtrəbl]
Multi thread game server
Multi thread game server
http://ohyecloudy.com (오종빈)
Updatable                          Runnable
               +update()                           +run()




Player   update()                            update()
                           update()
                    Zone              Room
Player              Zone              Room         Room run()
                                                                Core
                    Zone              Room
                                                   Thread
Player
                    Zone              Room

Player                                                  x N
개념

Room



Zone


Player


User
Thread Safe



                       NPC
Room   Zone


                      Enemy


                     Projectile

User   Player
                      Script
Thread Safe
t1
                                          Core A
t2

t3
                                          Core B

t4


                                           time

     0   33   66   99   132   165   198
t1
                                          Core A
t2

t3
                                          Core B

t4


                                           time

     0   33   66   99   132   165   198
t1
                                          Core A
t2

t3
                                          Core B

t4


                                           time

     0   33   66   99   132   165   198
Multi thread game server
Multi thread game server
Action->Ani
Action->Trigger
RoomThread
Core A
t1
                                          Core B


                                          Core A
t2

                                          Core B


                                           time

     0   33   66   99   132   165   198
t1                                        Core A


t2                                        Core B

t3                                        Core A

t4                                        Core B


                                           time

     0   33   66   99   132   165   198
ㅇㅇ?

6000




5000




4000




3000




2000




1000




  0
       1 thread   2 threads     4 threads   10 threads
GameLogic

         Zone    Player
Room
                          Core A
Thread
         Room     User


                          Core B
Worker
            Network
Thread
Multi thread game server
L og
       ic

            recvBuf
                      Wo
                        rke
                            r
r
     ke
  or
 W




                    t
                 kce
               Pa
           1
    g   ic
 Lo
         2
   g   ic
Lo
         3
   g   ic
Lo
User::State
`




http://javawork.egloos.com 01/21/2011
http://javawork.egloos.com 01/21/2011
Queue   Logic




Woker
Multi thread game server
Multi thread game server
끝




    http://javawork.egloos.com 01/21/2011

More Related Content

What's hot (20)

PDF
MMOG Server-Side 충돌 및 이동처리 설계와 구현
YEONG-CHEON YOU
 
PPTX
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
devCAT Studio, NEXON
 
PPT
GCGC- CGCII 서버 엔진에 적용된 기술 (1)
상현 조
 
PPTX
언리얼을 활용한 오브젝트 풀링
TonyCms
 
PPT
GCGC- CGCII 서버 엔진에 적용된 기술 (5) - Executor with Exception
상현 조
 
PDF
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
Heungsub Lee
 
PDF
Windows IOCP vs Linux EPOLL Performance Comparison
Seungmo Koo
 
PDF
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
Heungsub Lee
 
PDF
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
devCAT Studio, NEXON
 
PDF
Multiplayer Game Sync Techniques through CAP theorem
Seungmo Koo
 
PDF
임태현, MMO 서버 개발 포스트 모템, NDC2012
devCAT Studio, NEXON
 
PPTX
[0903 구경원] recast 네비메쉬
KyeongWon Koo
 
PDF
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
Seungmo Koo
 
PDF
게임서버프로그래밍 #1 - IOCP
Seungmo Koo
 
PDF
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
Heungsub Lee
 
PPTX
게임 분산 서버 구조
Hyunjik Bae
 
PPTX
리플렉션과 가비지 컬렉션
QooJuice
 
PDF
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
devCAT Studio, NEXON
 
PDF
중앙 서버 없는 게임 로직
Hoyoung Choi
 
PDF
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
Amazon Web Services Korea
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
YEONG-CHEON YOU
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
devCAT Studio, NEXON
 
GCGC- CGCII 서버 엔진에 적용된 기술 (1)
상현 조
 
언리얼을 활용한 오브젝트 풀링
TonyCms
 
GCGC- CGCII 서버 엔진에 적용된 기술 (5) - Executor with Exception
상현 조
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
Heungsub Lee
 
Windows IOCP vs Linux EPOLL Performance Comparison
Seungmo Koo
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
Heungsub Lee
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
devCAT Studio, NEXON
 
Multiplayer Game Sync Techniques through CAP theorem
Seungmo Koo
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
devCAT Studio, NEXON
 
[0903 구경원] recast 네비메쉬
KyeongWon Koo
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
Seungmo Koo
 
게임서버프로그래밍 #1 - IOCP
Seungmo Koo
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
Heungsub Lee
 
게임 분산 서버 구조
Hyunjik Bae
 
리플렉션과 가비지 컬렉션
QooJuice
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
devCAT Studio, NEXON
 
중앙 서버 없는 게임 로직
Hoyoung Choi
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
Amazon Web Services Korea
 

Viewers also liked (20)

PDF
SDC 3rd 안중원님 - InGame CashShop 개발 하기
OnGameServer
 
PDF
MinWin에 대해서
OnGameServer
 
PDF
Windows os 상에서 효율적인 덤프
OnGameServer
 
PDF
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
OnGameServer
 
PDF
C++ 프로젝트에 단위 테스트 도입하기
OnGameServer
 
PDF
SDC 3rd 최흥배님 - Boost.multi_index 사용하기
OnGameServer
 
PDF
안준석님 - 안드로이드 프로세스들의 통신 메커니즘 : 바인더 이야기
OnGameServer
 
PDF
Microsoft SharePoint를 활용한 개발환경 구축
OnGameServer
 
PDF
해외 취업 이야기
OnGameServer
 
PDF
IPv6 이론과 소켓 프로그래밍
OnGameServer
 
PDF
초보자를 위한 분산 캐시 이야기
OnGameServer
 
PDF
이욱진님 - 메모리 관리자로부터 배우기
OnGameServer
 
PDF
Mongo db 시작하기
OnGameServer
 
PDF
임영기님 - 코드 리뷰 시스템 도입하기
OnGameServer
 
PDF
Boost 라이브리와 C++11
OnGameServer
 
PPTX
페이스북 광고할 때 꼭! 알아야할 용어 모음
경석 권
 
PPT
Astral game server
astralgame
 
PPT
Social Game
ematrix
 
DOC
China game-server-vpn-to-reduce-delay-abroad
J enny
 
PPT
构建ActionScript游戏服务器,支持超过15000并发连接
Renaun Erickson
 
SDC 3rd 안중원님 - InGame CashShop 개발 하기
OnGameServer
 
MinWin에 대해서
OnGameServer
 
Windows os 상에서 효율적인 덤프
OnGameServer
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
OnGameServer
 
C++ 프로젝트에 단위 테스트 도입하기
OnGameServer
 
SDC 3rd 최흥배님 - Boost.multi_index 사용하기
OnGameServer
 
안준석님 - 안드로이드 프로세스들의 통신 메커니즘 : 바인더 이야기
OnGameServer
 
Microsoft SharePoint를 활용한 개발환경 구축
OnGameServer
 
해외 취업 이야기
OnGameServer
 
IPv6 이론과 소켓 프로그래밍
OnGameServer
 
초보자를 위한 분산 캐시 이야기
OnGameServer
 
이욱진님 - 메모리 관리자로부터 배우기
OnGameServer
 
Mongo db 시작하기
OnGameServer
 
임영기님 - 코드 리뷰 시스템 도입하기
OnGameServer
 
Boost 라이브리와 C++11
OnGameServer
 
페이스북 광고할 때 꼭! 알아야할 용어 모음
경석 권
 
Astral game server
astralgame
 
Social Game
ematrix
 
China game-server-vpn-to-reduce-delay-abroad
J enny
 
构建ActionScript游戏服务器,支持超过15000并发连接
Renaun Erickson
 
Ad

Similar to Multi thread game server (18)

PDF
09_Practical Multicore programming
noerror
 
PDF
Locker: distributed consistent locking
Knut Nesheim
 
ODP
Concept of thread
Munmun Das Bhowmik
 
PDF
Concurrency
ehuard
 
PDF
Twisted Introduction
cyli
 
PPTX
Usenix lisa 2011
Leif Hedstrom
 
PPTX
Apache con 2011 gd
Leif Hedstrom
 
KEY
スケジューラからみたOSの話
Takeshi Fujiwara
 
PDF
Lect18
Vin Voro
 
ODP
2. operating systems
Marian Marinov
 
PDF
LMAX Architecture
Stephan Schmidt
 
PDF
Ping to Pong
Matt Provost
 
PDF
Multi-core Parallelization in Clojure - a Case Study
elliando dias
 
PPTX
分散式系統
acksinkwung
 
PDF
IAP09 CUDA@MIT 6.963 - Guest Lecture: CUDA Tricks and High-Performance Comput...
npinto
 
PPT
Multi core-architecture
Piyush Mittal
 
PDF
Apache Helix presentation at Vmware
Kishore Gopalakrishna
 
KEY
Threaded Awesome
Aman Gupta
 
09_Practical Multicore programming
noerror
 
Locker: distributed consistent locking
Knut Nesheim
 
Concept of thread
Munmun Das Bhowmik
 
Concurrency
ehuard
 
Twisted Introduction
cyli
 
Usenix lisa 2011
Leif Hedstrom
 
Apache con 2011 gd
Leif Hedstrom
 
スケジューラからみたOSの話
Takeshi Fujiwara
 
Lect18
Vin Voro
 
2. operating systems
Marian Marinov
 
LMAX Architecture
Stephan Schmidt
 
Ping to Pong
Matt Provost
 
Multi-core Parallelization in Clojure - a Case Study
elliando dias
 
分散式系統
acksinkwung
 
IAP09 CUDA@MIT 6.963 - Guest Lecture: CUDA Tricks and High-Performance Comput...
npinto
 
Multi core-architecture
Piyush Mittal
 
Apache Helix presentation at Vmware
Kishore Gopalakrishna
 
Threaded Awesome
Aman Gupta
 
Ad

Recently uploaded (20)

PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
Python basic programing language for automation
DanialHabibi2
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
Python basic programing language for automation
DanialHabibi2
 

Multi thread game server