게임/마인크래프트

[마인크래프트] 포지 서버 최적화하기 (Optimizing Forge Server)

Lou Park 2024. 8. 11. 12:39

Forge는 가장 유명한 모드 로더로, 여러 유명한 모드들이 Forge를 이용해 개발되었다. (재미있어서 쓰려고 보면 Forge가 대부분ㅋㅋㅋ) 그런 모드들은 게임에 많은 변화를 주고 하드웨어에 더 좋은 성능을 요구하지만 Forge에는 최적화를 위한 서버 옵션이 다른 모드 로더들에 비해 빈약한 편이다.

 

CPU 선택법

마인크래프트는 하나의 스레드만을 사용하는 단일 스레드(Single Thread) 게임으로, CPU 코어 수는 크게 상관없고, 단일 스레드 성능이 뛰어난 CPU를 찾는 것이 좋다.

 

CPU가 초당 몇번의 디지털 신호를 보내는지를 일컫는 단위인 클럭(Clock)이라고 들어보았을 것이다. 따라서, 클럭이 높을 수록 같은 시간내에 더 많은 연산을 수행할 수 있게된다. 클럭이 같더라도 또 하나의 중요하게 봐야할 것이 있는데 바로 IPC(Instructions Per Cycle)다. 이는 한 클럭당 처리할 수 있는 명령어의 수다. IPC가 높으면, 단일 스레드 성능이 좋다는 것이다.

 

하지만 IPC는 클럭처럼 CPU를 선택할때 수치로 보여주는 정보가 아닌데, 이는 일반적으로 CPU의 세대를 기준으로 판단하면 된다. 혹은 벤치마크 사이트들에서 참고해서 비교하자.

 

 

메모리 할당량을 최소화

마인크래프트 Java Edition은 Java라는 프로그래밍 언어로 만들어졌다. Java는 C언어처럼 프로그래머가 직접 메모리를 할당/해제하지 않아도 되는데, 이는 이를 자동으로 처리해주는 GC(Garbage Collector) 덕분이다.

 

하지만 Java GC의 성능은 악명이 높다. 마인크래프트 서버에 필요 이상으로 많은 RAM을 할당하게 되면 GC가 한 번 도는데 더 많은 시간을 쓰게되고, 가비지 컬렉트 사이클이 돌아가면 사용하지 않는 메모리 정리를 위해 Stop The World라고하는 JVM(Java Virtual Machine)이 애플리케이션의 실행을 멈추는 작업이 실행되는데, 이는 서버 렉을 유발한다.

 

RAM Player Slots World Size Plugin / Mods
2GB Up to 10 Up to 8GB Up to 10
3GB Up to 15 Up to 10GB Up to 25
4GB Up to 25 Up to 15GB Up to 40
5GB Up to 30 Up to 20GB Up to 45
6GB Up to 40 Up to 30GB Up to 50
8GB Up to 90 Up to 60GB 50+
10GB 150+ Up to 100GB 50+
16GB 150+ 150+ GB 50+

 

 

최적화 관련 모드 설치

  • Canary: AI / 청크 로딩 / 물리 (Lithium과 비슷)
  • FerriteCore: 메모리 사용량
  • ModernFix: 버그 픽스 / 메모리 사용량
  • Saturn: 메모리 사용량
  • Starlight: Lighting
  • ServerCore: 엔티티 / 몹 스폰 / 청크 틱
  • DynamicView: View Distance
  • Phosphor: Lighting / 청크로딩
  • AI Improvements: AI CPU 사용량 최적화
  • Performant: AI / 엔티티 / 청크 틱

 

server.properties 설정

  • view-distance: 7
    • 시야 거리
  • simulation-distance: 4-6
    • 틱이 흐르는 거리
    • 농작물이 자라고, 화로안의 내용물이 구워지는 등 활성화와 관련됨

 

사전 청크 로딩

 

여러 플레이어가 빠르게 돌아다니면서 동시에 청크로딩을 하게되면 TPS가 떨어질 수 있는데, 이를 어느정도 예방하기 위해 Chunky라는 모드로 서버 오픈 전 미리 청크로딩을 해둘 수 있다.