게임서버관련3 하드웨어 최적화 멀티 쓰레드 환경에서 명령한 순서대로 실행되지 않고 멋대로 순서를 뒤바꿔어서 실행하는 경우가 생김. 메모리 베리어 2가지 용도로 사용 코드 재배치 억제 가시성 1. 코드 재배치 억제 1) Full Memory Barrier (ASM MFENCE, C# Thread.MemoryBarrier) : Store/Load 둘 다 막는다 (store:변수에 넣는 것/load: 변수에서 끄집어 내는 것) 2) Store Memory Barrier (ASM SFENCE) : Store만 막는다. 3) Load Memory Barrier (ASM LFENCE) : Load만 막는다. 2. 가시성 쓰레드 마다 Thread.MemoryBarrier(); 해서 동기화 작업. 간접적으로 넣기도 함. ex) store가 연속적으.. 2023. 10. 13. 멀티쓰레드 OS 상에 여러가지 응용 프로그램을 동시에 실행 시킬 수 있는 것도 멀티쓰레드 덕분임. 코어가 하나, 쓰레드가 하나 뿐이라면 MMO 서버가 있다면 다른 응용 프로그램보다 우선순위를 둠. 그러면 다른 응용 프로그램은 잘 실행되지 않는 현상이 일어나게 됨 이게 기아현상 그러나 코어가 여러 개, 멀티 쓰레드라면, 동시에 여러 응용프로그램을 동시에 실행할 수 있음 그런데 쓰레드를 무작정 많이 늘리게 되면, 부하가 많이 걸림 CPU 코어가 하나만 실행하다가 다른 쓰레드로 옮겨타는 과정은 무거운 작업임. 따라서, 코어 수 만큼의 쓰레드를 실행시키면 이상적인 상황이 됨. 모든 쓰레드들은 Heap 영역(new), 데이터 영역(static 변수)은 그대로 사용하던 걸 공유해서 사용하게 됨. 그러나 스택 영역은 다 구분 .. 2022. 9. 2. 게임 서버 종류 Web Server (HTTP Server) 질의 응답 형태 드물게 정보를 요청/갱신 실시간 Interaction이 필요하지 않다.(실시간으로 서버-클라 사이 교류 필요없음) Stateless SNG 게임의 경우 실제로 게임이 진행된 다음, 그 결과물만 던져주고 저장하는 방식(ex) 랭킹시스템) 게임 서버를 위해 만들어진게 아니라 웹 서비스를 만들는데 사용됨 Game Server (TCP Server, Binary Server, Stateful Server...) 실시간 Interaction이 있음 요청/갱신 횟수가 많음 Stateful ex) WOW에서 내 캐릭터가 공격하고 이동하면 상대방의 화면에서도 내가 공격하고 이동하는게 실시간으로 적용되어 보여져야함 게임/장르에 따라 요구사항이 다 다르다. (최.. 2022. 8. 31. 이전 1 다음 728x90 반응형