前編にて、読む価値なしとタイトルに書きかつマジで愚痴っただけの記事なのにおそらく現時点で一番伸びているという謎の挙動を起こしているので、続報という形で記述してみる。
最近はマイクラのサーバー開発にあまり積極的ではなかったが、それでもその中で色々試してみて至った結論という物がある。まあ、結論は結局「逃げ」なんですけどね。
前半で記述した通り、マイクラのサーバーをマルチスレッドで動作させるって言うのは正直現時点では無謀だ。諦めるしかない。
ちなみにハイパースレッディングテクノロジーをオフにすると改善するのでは?という発言をしていたが、HTTは一コアを2スレッドにして性能を約30%向上させるというシステムだが、当然単純な計算処理性能は変わらない。じゃあ何故性能が向上するのかというと、1コア1スレッドの状態で
メインメモリにアクセスすると、データがレジスタに乗るまでに数百クロックの間待たなければならない(ストール)。ハイパースレッディングは一方のスレッドがストールしている間に別のスレッドを走らせることでCPUコアの利用効率を上げ、またこれによりメモリアクセスレイテンシを隠蔽する。 -wikipedia
まあ、これも前編で書いたのと同じことだ。処理をしている間に発生する待機時間を分散させてレイテンシ(通信の遅延時間)をなるべく無かったかのように処理し続ける、というのだ。もちろん、1スレッドでは本来の1コアの性能の半分しか引き出せない。しかし片方がストールしている時間ももう片方が50%とは言え処理し続けたほうが性能がいいんだと。俺もイマイチピンと来ないが、
要はHTTがオンの状態だと、ストールに入ったときに別のスレッドに処理を移行していたから前回の記事のこんな使用率グラフになったんだろうと推測しておく。じゃあ、HTTがオフの状態であれば、1コアが断続的に処理し続けるため、ストールによる処理低下が大きく発生していたのだろう。多分シングルスレッドでタスクを動作させていた状態であってもハイパースレッディングテクノロジーの恩栄は受けていたと考えるのが、まあここまでの考察。
しかし結局は、HTTオンオフで改善はできなかった。サーバーを快適に動かすほかの環境を探さなければ。
そんでたどり着いたのが「統合版で開発していたサーバーであれば結構まともに動くんじゃね?」だ。
もともと統合版でサーバーをメインで開発していた身なので、実は開発段階のミニゲーム鯖のデータがちゃんと存在しているのだ。
Java版で開発したサーバーは正直負荷が重すぎる。統合版のも結構重くて前のパソコンじゃまともに動作しなかった記憶があるんだけど、今はちゃんとまともに動く・・・はず・・・と踏んでいるので、これをSpigot(Java版鯖)に対応できるようにコンバートしてGeyserとfloodgateをぶち込んで統合版プレイヤーも遊べる環境を構築する、という結論が出た。
しかし、問題点はある。ちなみにこの結論からちゃんとSpigotでサーバーを運用しようと考え今開発中なのだが見事に躓いている。
それが「Spigot(Java版鯖)に対応できるようにコンバートして」という部分だ。
この記事に綴っているようなbashを記述していたわけだが、こっから1か月経過してもなおなかなかうまく行ってない。
システムをうまく変換するために試行錯誤しまくって、
これはサーバーソフトウェアとは関係ないからまたいずれ機会があれば話そうかな。
以上。
この記事へのコメント