DOI QR코드

DOI QR Code

io_uring I/O 모델을 통한 MMO 게임 서버의 성능개선

Improving performance of MMO game server using io_uring I/O Model

  • 성소윤 (한국산업기술대학교 디지털엔터테인먼트학과) ;
  • 정내훈 (한국산업기술대학교 게임공학부)
  • Seong, SoYun (Dept. of Digital Entertainment, Korea Polytechnic Univ.) ;
  • Jung, NaiHoon (Dept. of Game & Multimedia Engineering, Korea Polytechnic Univ.)
  • 투고 : 2020.09.20
  • 심사 : 2020.12.07
  • 발행 : 2020.12.20

초록

MMO 게임 서버는 수천 명 이상의 대량 동시접속 시 성능저하를 막기 위해 운영체제에서 제공하는 고성능 I/O 모델을 사용해 구현해야한다. 하지만 운영체제에서 제공하는 I/O 모델들이 계속 발전하고 있음에도 불구하고 기존 어플리케이션들에 대한 적용은 즉각적으로 이루어지지 않고 있다. 이에 본 연구에서는 Linux의 새로운 I/O 모델인 io_uring을 MMO 게임 서버에 적용하였고, 이를 위해 기존의 서버 구조를 io_uring에 맞추어 최적화하였다. 이를 통해 개선된 성능을 대용량 접속 벤치마크 프로그램을 통해 확인하였다.

To accept more than thousands of concurrent players, MMO Game servers should use high performance I/O APIs provided by the OS. Despite the continuous improvement of the I/O models, these new I/O APIs are not applied on the applications immediately. In this study, we proposed a new MMO game server architecture using io_uring, Linux's new I/O model. We implemented the proposed architecture and achieved performance improvements of the server on a stress test benchmark with high concurrent connections.

키워드

참고문헌

  1. Dong-Eun Lee, "A Study on the Free-to-Play Model for Digital Games", Korea Game Society, Vol. 15, No. 6, pp107-119, 2015.
  2. Weiglhofer, Martin, and Franz Wotawa. "Asynchronous input-output conformance testing." 2009 33rd Annual IEEE International Computer Software and Applications Conference. Vol. 1. IEEE, p. 154-159. 2009.
  3. Bhattacharya, Suparna, et al. "Asynchronous I/O support in Linux 2.5." Proceedings of the Linux Symposium. p. 371-386. 2003.
  4. https://kernel.dk/io_uring.pdf
  5. https://www.thedailyprogrammer.com/2016/09/network-programming-io-multiplexing.html
  6. https://man7.org/linux/man-pages/man7/epoll.7.html
  7. https://docs.microsoft.com/ko-kr/windows/win32/fileio/i-o-completion-ports?redirectedfrom=MSDN
  8. https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/hh997032(v=ws.11)
  9. https://docs.oracle.com/cd/E26180_01/Platform.94/ATGInstallGuide/html/s0604threadcontextswitchingproblems01.html
  10. https://man7.org/linux/man-pages/man2/select.2.html
  11. https://man7.org/linux/man-pages/man2/poll.2.html
  12. Gammo, L., Brecht, T., Shukla, A., Pariag, D., "Comparing and evaluating epoll, select, and poll event mechanisms", Proceedings of the Ottawa Linux Symposium, 2004.
  13. https://nginx.org/en/
  14. http://netty.io/
  15. Zhang, Shungeng, et al. "The Impact of Event Processing Flow on Asynchronous Server Efficiency." IEEE Transactions on Parallel and Distributed Systems 31.3. 565-579. 2019. https://doi.org/10.1109/tpds.2019.2938500
  16. git://git.kernel.dk/liburing
  17. https://docs.microsoft.com/en-us/windows/win32/api/winsock/nf-winsock-wsaasyncselect
  18. https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsaeventselect
  19. https://support.microsoft.com/en-gb/help/181611/socket-overlapped-i-o-versus-blocking-nonblocking-mode
  20. https://www.slideshare.net/devcatpublications/ndc2013-19986939
  21. Lee, Jong. "Method for processing the data distributed at online game server and a system thereof." U.S. Patent Application No. 11/496,931.
  22. Michael, Maged M., and Michael L. Scott. "Simple, fast, and practical non-blocking and blocking concurrent queue algorithms." Proceedings of the fifteenth annual ACM symposium on Principles of distributed computing. p. 267-275. 1996.
  23. Michael, Maged M. "High performance dynamic lock-free hash tables and list-based sets." Proceedings of the fourteenth annual ACM symposium on Parallel algorithms and architectures. p. 73-82. 2002.
  24. Tim L. Harris. A pragmatic implementation of non-blocking linked-lists. In Proceedings of the International Conference on Distributed Computing (DISC'01). 300-314. 2001.
  25. Valois, John D. "Implementing lock-free queues." Proceedings of the seventh international conference on Parallel and Distributed Computing Systems. p. 64-69. 1994.
  26. http://www.brendangregg.com/perf.html
  27. https://man7.org/linux/man-pages/man1/top.1.html
  28. https://linux.die.net/man/8/iftop
  29. MOSBERGER, David JIN, Tai. httperf-a tool for measuring web server performance. ACM SIGMETRICS Performance Evaluation Review, 26.3, p. 31-37, 1998. https://doi.org/10.1145/306225.306235