マイクラサーバー チャンク提供によるラグ

私が運営しているサーバーでは、高スペックユーザーにも満足していただけるようより遠くまでチャンクを送信している。

もちろん、実質的な処理をするsimulation-distance(1.17以前ではview-distance)は最低レベルの4チャンクとし、見えるだけの距離view-distance(1.17以前のpaperではno-tick-view-distance)は16チャンク~32チャンクとしていた。

見えるだけの距離なら本来は処理をしないのでラグは発生しないはずである。その目的で開発された機能である。

その通りで、確かにエンティティの処理などによる負荷は以前よりかなり少なくなった。

しかし今度は、つい遠い設定にしてしまってチャンク送信による負荷が増えた。ここが盲点である。

以前よりもチャンク送信距離を増やせることは確かだが、上げすぎるとダメになる。当然のように聞こえるが、view-distanceがパフォーマンスに与える影響は少ないという認識であるので、意外と議論の対象になっている。

「paper no-tick-view-distance performance impact」などで調べてみると良いだろう。

ということで、いくらチャンク内の処理を減らしたところで、読み込み送信するチャンク自体が多すぎると負荷が増えてしまうのだ。ちなみにプロファイラーのspark上ではchunk provider tickという処理の名称である。

これは送信する方法が違っても一緒だ。通常はサーバーソフトがチャンクを送信しているのに対し、FartherViewDistanceという、地形データを独自で読み込みプレイヤーに送信するプラグインがあるが、こちらの方法でも同じだった(むしろ負荷は大きくなった)。

当サーバーには屈強なSSDを搭載しているが、このようになってしまうということはやはりCPUの処理速度が限界のようだ。普段の使用率は意外と低いが、人が増えてくると極端に負荷が大きくなる。

現在のCPUの何が力不足かというとコア数である。搭載しているi7 4770Kは4コア8スレッドと、現在の水準で見るとかなり少なくなっている。「え?マイクラはシングルスレッドだろ」って?最近のマイクラサーバーは一部処理に限ってマルチスレッドに対応していて、チャンク送信もその1つだ。

また、最大メモリが32GBなのも欠点である。現在はSSDの10GB分をスワップに当てているが、これが使われて速度が落ちている可能性もある。

月末に鯖の某住民からシングルスレッドの性能が同等であるPCを譲ってもらうことになったので、64GBのメモリを積んでコア数も増加させた後のラグの変化に期待したい。

ブログのトップへ