これらの記事の続き。
前編では「サーバーソフトウェアがうんぬんかんぬん!!!!!!」と嘆いた。
結果から言うと、まず大学に入っても家でゴロゴロしたいからっていう理由で結局家に滞在することになった。でも正直寮に入るよりこの判断で正解だったかなと…違う、それはどうでもいいんだ
spigotとpaperの違いってところから話そう。ハイパースレッディングテクノロジーについても嘆いて、恩栄は受けられているのか?という話。
その話は後編へと持ち越され・・・
こんな感じで、若干HTTオフの方が軽くなった気がした。というのも、サーバーログを見ると240tick程度のラグが発生してたがHTTオフだと200tick程度に収まることが多かった感じがする。
これは「誤差の範囲」である。ネットワークという物自体、不規則だからおそらくそれによる遅延も関係していたはずだ。そう考えると、HTTがオンでもオフでも変わりはない。
さらに前編ではこんなこと呟いていた。
ハードウェアにぶっ飛んでいくが、キャッシュミス(ヒット率の逆)の時キャッシュにないデータをレジスタに乗せるために発生するストール(レジスタに乗せる時間は処理が実行できない)を回避するためにもう片スレッドで処理を行うことで高速化する・・・という技術らしい。愚痴だから自分でわかるようにしかもう書かないが、そのもう片スレッドで処理を行うって言うスーパースカラ的な方法で効率を上げるってのがハイパースレッディングテクノロジーだよね。しかし!マイクラでは単スレッドでしか動作していない。これはハイパースレッディングテクノロジーの恩栄を受けているのか・・・?受けてない気がする・・・
はい。
確かに言っていることは間違っちゃあいない。この記事見てる人はこの意味がそもそも分からない説があるので、軽く説明するとハイパースレッディングテクノロジー(以下HTTと呼ぶ)とは、「ストールを回避するためにもう片スレッドで処理を行うことで高速化する」という技術なのだ。
前編の記事でCPU使用率の画像も載せたが、様々なスレッドに動作が移り変わっているのが見えるだろう。これがハイパースレッディングテクノロジーの恩栄という訳だ。要は、「HTT無6コア6スレッド」で動作させようとストールが発生し結局処理速度は低下する。
短スレッド動作であれ、別スレッドに動作を移りかえることは出来るわけだからHTTの恩栄は受けられていたわけだ。ここまで細かく調べ上げていたくせに根本から間違えて解釈していたという事だ。アホ。
という訳で、サーバーの方は消費電力を抑えるため動作を3コアの身に抑えたがHTTはオンで稼働させることにした。
HTTは一般的に「約三割の処理速度向上」が謳われている(※Intelによると)
オフにするのは短スレッド動作であれ恩栄が受けられる以上、よっぽど特殊な理由でもない限りやる意味はないだろう。
ってのが結論。
後編の最後らへんの画像に「HTT無6コア6スレッド」で動作している画像があるが、これ。別コアに処理が移り変わっちゃいるがCPU使用率が100%になってないよね。恐らくストールによる待機時間で完璧に処理出来ていないことを指しているんだろう。移り変わりの時のグラフも、HTTオンの時と比べてなんだか効率が悪そうだ。
そういう事だね。HTTの恩栄ってわけだ。
次にサーバーソフトウェアについて。
何故かpaperとcuberiteを例に挙げているがTuinityやpurpur等いろいろあるので、これはそのうち試そうかなと思う。
まあこの二つはpaper派生だから期待はしてないんだけどね。
え?「paperはマルチスレッド動作対応だろ?短スレッド動作のspigotよりうまく動くだろうよ?」だって?
これについても前編後編の記事を書いた後に新たに判明したことがあるため、それについても綴る。
まず、spigotは単スレッド動作。単スレッド動作だが、動作は比較的安定している。
paperは、マルチスレッド動作だが、これは「地形生成」に限られたものらしい。このメリットがある分のデメリットとして「コマンド系統の動作が貧弱」という事が判明した。というかこの目で見た。
私は、そこまで大規模な建築はせずコマンドばかり動作させているタイプなので、そもそもpaperが向いていなかったという事になる。これが結論だ。
とりあえず、Nekoyama Serverの開発は一時中断(spigotでも重すぎて動作しないのと、別途開発していたサーバーの方の開発に最近注力しているため)。
そんでBE版で開発していたAZI Serverの開発をいよいよ本格化させた。spigotで稼働させて、プラグインはGeyserとfloodgate。
こういった記事にもまとめたが割と本格化してきている。というか稼働させる気満々っすね('ω')
現在はPythonで書いたプログラムで統合版のコマンド一連をJava版で使えるように変換するプログラムを下記ながら開発してる。詳しくはカテゴリー「AZI_Server」にて随時更新中。
といったところだ。サーバー稼働の方は割と現実化してきて、この書き殴った悩み共も大体解消したといっても過言ではないだろう。
このシリーズは完結とするッ!!!!!!!
この記事へのコメント