[제1강] 마인크래프트 서버를 최적화해보자 (소개~하드웨어 선택)
최근 마인크래프트 서버와 관련하여 수도 없이 많은 얘기를 들었다.
아는 지인들로부터 서버 최적화를 도와달라는 요청을 받은 적도 있고, 각종 의뢰도 여럿 받은 적이 있다.
그래서 오늘부터 마인크래프트 서버 최적화와 관련된 여러 가지 강의를 투고할 예정이다.
버전에 따른 최적화 정도 비교
우선 본격적으로 이야기하기 전에 말하고 싶은 것이 있다. 1.13 이후 버전이 꼭 필요한 상황이 아니라면, 가급적 1.12.2에서 머무는 것을 추천하고 싶다. 이 버전을 기점으로 최적화 정도가 크게 갈리기 때문이다.
1.12 전까지는 "마인크래프트 서버는 멀티코어를 제대로 활용하지 못한다." 등의 말이 있어도 비교적 성능은 준수하게 나와 (물론 마인크래프트 API를 C++로 직접 구현한 Cuberite 등을 사용해보면 이 또한 말이 달라지긴 한다.) 서버 성능 및 최적화 정도는 "서버 개발자의 능력에 좌우된다"라는 말이 중론이었다. 이때 당시만 해도 대규모 서버가 아닌 이상, 잘못 쓰인 플러그인이나 Skript, 모드 등이 대부분의 문제를 일으켰고, 마인크래프트 자체의 한계점에 도달한 서버는 국내에 거의 없었기 때문이다. 이마저도 BungeeCord 등을 통하여 서버 인원을 분산하고 있었기에, 1.13 전까지는 이러한 문제를 토로하는 사람이 드물었다.
하지만 1.13 이후부터는 말이 달라진다. 마이크로소프트(MS)가 소스 코드를 보고 한계를 느꼈는지 모장을 인수한 이후 소스 코드를 본격적으로 갈아엎기 시작했다. 이때 이후로 엔티티 (1.13), 청크로딩 및 밝기 (1.14) 알고리즘 등이 수정되었는데, 문제는 갈아엎기 이전보다 성능 저하가 심해진 것이다. 이때부터 마인크래프트 서버 개발자들이 플러그인이나 Skript, 모드 등을 최적화해도 마인크래프트 자체의 한계에 부딪치기 시작했고, 여러 포럼에도 이와 관련하여 불만을 표하는 사람들이 생겨나기 시작했다. 특히 1.14의 경우 이 문제가 더 심해져 마이크로소프트(MS)에서도 "1.15와 1.16은 최적화를 위주로 하는 업데이트가 될 것"이라고 말한 바 있다.
이에 따라, 필자는 현재 상황에서 1.12.2 혹은 1.16.5를 추천하고 싶다. 만약 1.13 이상 버전의 기능이 필요한 것이 아니라면, 1.12.2에서 머무르는 것도 좋은 선택이다.
하드웨어 선택하기
위에서도 말했듯이, 마인크래프트 서버는 아직도 멀티코어를 제대로 활용하지 못한다. 물론 Paper 등의 서버 소프트웨어에서 채팅 등 일부 부분이 비동기로 동작하도록 구현되어 있지만, 아직도 대부분 싱글쓰레드만을 사용하는 것은 사실이다. 따라서, 마인크래프트 서버를 운용하기 좋은 하드웨어는 싱글쓰레드 성능이 높은, 데스크탑 라인업 (또는 Xeon E3, Xeon E 등의 엔트리 서버 라인업)의 제품군이다.
만약 싱글쓰레드 성능을 비교하기가 어려운 상황이라면, 필자는 Passmark의 싱글 코어 점수를 확인하는 것을 추천한다. 예를 들어, 엔트리 데스크탑 CPU인 Intel사의 Pentium Gold G6400과 AMD사의 Ryzen 3 3200G를 비교해보도록 하겠다. Passmark에 공개된 각 CPU의 정보는 다음과 같다.
또한 현재 마인크래프트 서버 호스팅에서 많이 쓰이는 Intel사의 Xeon X5670도 살펴보겠다.
위와 같은 3개의 CPU를 비교해보면, 오히려 가장 저렴한 Intel사의 Pentium Gold G6400이 마인크래프트 서버 운용에 가장 적합한 것을 알 수 있다. 실제로도 관련 벤치마크 결과를 찾아보면, 싱글쓰레드 점수가 높은 CPU일수록 마인크래프트 서버 성능이 더 뛰어나다는 것을 알 수 있다.
물론 서버 호스팅 (또는 클라우드 호스팅)을 사용한다면 이러한 선택의 폭이 넓지 않을 것이다. 기본적으로 데스크탑 CPU의 경우 호스팅사에서 쉽게 제공하기가 어렵기 때문에 서버용 CPU를 선택해야 할 수도 있다. 물론 그렇다고 서버용 CPU를 쓰지 못하는 것은 아니니, 여러 가지 호스팅 상품을 비교해보고 자신에게 맞는 상품을 선택하는 것이 합리적일 것이다.
여담이지만 저렴한 마인크래프트 호스팅사들에서 주로 사용하는 Intel Xeon X5670과 같은 모델은 2021년을 기준으로 출시된 지 11년이나 지난 CPU다. 물론 출시 당시 좋은 성능을 가져다주었고, 현재도 그럭저럭 쓸만하지만, 아직도 몇몇 호스팅사에서 소비자들이 "Xeon"이 붙은 CPU를 좋다고 생각하는 인식을 이용해 고성능이라고 속이고 파는 실정이다. 물론 E5-2640과 같은 X5670보다 늦게 출시한 CPU보다도 싱글쓰레드 성능이 뛰어난 것은 사실이지만, 이 점을 감안하더라도 현재 기준으로는 절대로 고성능 CPU가 아니다. 실제로 이러한 "고성능 마케팅"이 X5650, X5670, X5690과 같은 모델들이 마인크래프트 서버에서 아직도 사용되고 있는 이유 중 하나이다.
정리
이상을 정리하자면 다음과 같다.
- 1.13 이후 버전부터 마인크래프트 서버의 최적화 상태가 좋지 못하다. 1.13 이상 버전이 꼭 필요한 것이 아니라면, 가급적 1.12.2를 추천하고, 꼭 필요하다면 그나마 괜찮은 1.16.5를 사용하는 것을 추천한다.
- 마인크래프트 서버는 멀티코어를 제대로 활용하지 못한다. 따라서 싱글쓰레드 성능을 보는 것이 중요한데, Passmark라는 웹사이트에서 CPU간 싱글쓰레드 성능을 쉽게 비교할 수 있다.
- 또한, 싱글쓰레드 성능은 데스크탑 CPU가 서버용 CPU보다 높은 경우가 대부분이고, 서버용 CPU 중에 선택해야 한다면 비교적 엔트리 라인업인 E3 제품군이나 Xeon E 제품군을 선택하는 것이 바람직하다. 이것조차 불가능하다면 싱글쓰레드 성능이 높은 CPU를 선택하자.
오늘 준비한 강의는 여기서 끝이 난다. 다음 강의에서는 Spigot, Paper 등의 서버 소프트웨어 선택, 맵 프리로드의 중요성 등을 다룰 예정이다.
1강: 버전에 따른 최적화 정도 비교, 하드웨어 선택하기
2강: 서버 소프트웨어 선택, 맵 프리로드의 중요성
3강: GC 작업 최적화, 각종 Config 최적화
4강: 지연(렉) 분석, 서버 취약점의 개념과 방지 방법