DOI QR코드

DOI QR Code

Fixed Size Memory Pool Management Method for Mobile Game Servers

모바일 게임 서버를 위한 고정크기 메모리 풀 관리 방법

  • Received : 2015.08.03
  • Accepted : 2015.09.01
  • Published : 2015.09.30

Abstract

Mobile game servers usually execute frequent dynamic memory allocation for generating the buffers that deal with clients requests. It causes to deteriorate the performance of game servers since it increases system workload and memory fragmentation. In this paper, we propose fixed-sized memory pool management method. Memory pool for the proposed method has a sequential memory structure based on circular linked list data structure. It solves memory fragmentation problem and saves time for searching the memory blocks which are required for memory allocation and deallocation. We showed the efficiency of the proposed method by evaluating the performance of dynamic memory allocation, through the proposed method and the memory pool management method based on boost open source library.

모바일 환경에서의 게임 서버는 클라이언트의 요청을 처리하는 버퍼를 생성하기 위해 일반적으로 동적 메모리 할당을 빈번하게 수행한다. 이는 시스템에 부하를 가중시키고 메모리 단편화를 발생시키게 되어 게임 서버의 성능을 저하시킨다. 본 논문에서는 이러한 문제를 해결하기 위해 고정크기 메모리 풀 관리 방법을 제안한다. 제안하는 방법에서의 메모리 풀은 원형 연결 리스트 형태의 순차적 메모리 구조를 가지며, 이를 통해 게임 서버에서의 메모리 단편화 문제를 해결하고, 메모리 할당과 해제를 위해 필요한 메모리 블록의 탐색 시간 비용을 줄일 수 있다. 실험에서는 제안하는 방법과 잘 알려진 오픈소스 메모리 풀 라이브러리(boost) 기반의 메모리 풀 관리방법을 이용하여, 동적 할당을 수행할 때의 성능평가를 통해 해당 기법의 효율성을 보이도록 한다.

Keywords

References

  1. J. Lim, I. Park, J. Chung, and K. Shim, "Technical Trend of Distributed Game Server", Electronics and Telecommunications Trends, Vol.20, No.4, pp.93-102, 2005.
  2. Thor Alexander, "Massively Multiplayer Game Development," Charles River Media, pp.210-230, 2003.
  3. D. Hahn, "Programming Benchmark of Online Game Server," Information Publishing Group, 2008.
  4. C dynamic memory allocation, [Internet] https://en.wikipedia.org/wiki/C_dynamic_memory_allocation.
  5. Abraham Silberschatz, et al., "Operating System Concepts," 7th Edition, Hongrung Publishing Co, 2008.
  6. Memory Pool [Internet], https://en.wikipedia.org/wiki/Memory_pool.
  7. Andre Alexandrescu, "MODERN C++ Design: Generic Programming and Design Patterns Applied," Addison-Wesley, 2001.
  8. C++ Boost Library [Internet], http://www.boost.org/doc/libs/1_58_0/libs/pool/doc/html/boost_pool/pool/pooling.html.
  9. PJLIB [Internet], http://www.pjsip.org/pjlib/docs/html/index.htm.
  10. Jonatan Palsson, Richard Pannek, Niklas Landin, and Mattias Petterson, "A Generic Game Server," University of Gothenburg, Department of Computer Science and Engineering, 2011.
  11. Vlad Mihai Alecu, "Developing a Client-Server Architecture and Minimizing Data Transfer for a Massively Multiplayer Online Game," Utrecht University, Game and Media Technology, 2012.
  12. Microsoft IOCP [Internet], https://msdn.microsoft.com/kokr/library/windows/desktop/aa365198(v=vs.85).aspx.
  13. C++ Memory Pool and Angra [Internet], http://celdee.tistory.com/638.
  14. D. I. Jo and S. Y. Ryu, "Design and Implementation of Event Based Message Exchange Architecture between Servers for Server Push," Korean Society For Internet Information, Vol.12, No.4, Aug., 2011.
  15. S. B. Kim and J. D. Lee, "Design and Implementation of Borderless Casual Game Server using Virtualization," Korea Society Of Industrial Information Systems, Vol.17, No.4, Aug., 2012.
  16. J. Deng, "Why to use memory pool and how to implement it," [Internet], http://www.codeproject.com/Articles/27487/Why-to-use-memory-pool-and-how-to-implement-it, Jun., 2008.
  17. QueryPerformanceCounter [Internet], http://maytrees.tistory.com/81.