Steamのdedicated serverを立てる#1 インフラ編

steam logo

ハード

自宅に余っているPCでもVPSでも構いません。最近はDockerなどのコンテナによるサーバー運用もあるようです。保守を考えるとコンテナ化するほうが楽ですね。DBなどのミドルウェアが必要なサーバーはフットプリントが大きくなり悩みそうですが。

ハード 物理/仮想 問いません レンタルのVPSでも構いません。
クライアントPCと同居/共有しない方がよいです。
CPU Intel/AMD問いませんが、64bitで4コア以上あったほうがいいです。
ハイパースレッドはあまり役にたちません。
クロックは2.5GHz程度は欲しいです。
メモリ 16GB以上あったほうがいいです。ほとんどがオンメモリで動作します。
余ったメモリはファイルシステムやDBのキャッシュもしくはバッファとして動作し高性能化に貢献します。メモリ不足でSWAPするようだと不安定になります。ただし、存在する分だけメモリ利用するアプリもいるので、判断が難しいところです。
ARKは1サーバーのときは4GB以上消費していましたが、複数サーバー連携によるクラスタ設定をしたら1プロセスあたりの消費は1GBに減りました。
HDD OSおよびミドルに40~100GB
アプリおよびデータは100GB~
SSDの方がよいですが、ゲーム品質にはあまり貢献しません。その費用はRAID構成にあてて、サーバーの可用性をあげたほうがいいです。
別メディアへのデーターバックアップ先を準備してください。バックアップしていない時に限ってロールバックしなければならない事態が起こります。
ビデオ

必要最低限で構いません。
VMの場合はSPICEで十分です。RDPでもいけます。

ネットワーク

インターネットの回線速度は、1ゲームあたり上下50Mbps程度で十分です。トラフィックは1セッションあたり多くて1Mbps程度です。回線速度はソフトアップデートの際のダウン時間に効いてきます。例えばARKは100GB以上のアップデートが連日あったりします。VPSで重量課金だと厳しいです。
pingの応答性能はMMO系ゲームのフレームレートにも影響するので重要です。

以下は自宅サーバーのみ
無線LANは回線品質、応答速度、多数セッションから避けるべきです。
ルーターはYAMAHA RXシリーズなどの業務用クラスで、簡単に設定できながら安定性と高性能な有線接続なものがよいです。中古品でかまいません。
ISP提供のルーターや市販ルーターはNATテーブルサイズが大きく、IPv4ポートフォワーディング設定を細かく指定できるか確認してください。
またNATループバック(ヘアピンループバック)がサポートされているとよいです。非サポートの場合、自宅サーバーにアクセスする際にゲーム内のサーバー選択でLANアドレスを指定する必要があります。一覧にでてこない。
固定IPにこだわる必要はありませんが、固定IPのほうが運用が楽です。
IPv4でもv6でも構いませんが、サーバーアプリはIPv4が基本です。

うちのサーバー構成を列挙してみます。

ハード KVMベースのVM(仮想マシン)です。oVirtを用いてVM管理しています。
仮想サーバーのホストはRyzen 7 2800Xを全8コアを3.9GHzで動作させています。
バックアップ用の予備機器はXeon E5-2670の2ソケット メモリ128GBが待機していますが、活躍するような事態に直面していません。
CPU 上記ハードから4コアを割り当てています。
メモリ ハードに64GB搭載して、そのうち最大24GBを割り当てています。
HDD ファイルサーバーからシンボリュームを割り当てています。
OSに100GB 使用率25%
サーバーアプリとデータに400GB 使用率40%
スナップショットバックアップを毎日行い、NASに週1回イメージバックアップしています。
ビデオ VMはSPICEで動いていますが、通常はRDPでWindows10から接続しています。
ネットワーク

インターネット 10Gbps 3ms
LAN 10Gbps LANはインターネット接続用とストレージ用に2セグメント
ルーターはISPからのレンタル品。ONU内蔵のため分離できない。
IPアドレスは半固定 契約してから1度も変更されていない。
VPNサーバーをたてて、外出先からも保守可能にしてあります。

UPSを以前は使っていたのですが、とある理由で撤去しています。あった方がよいかもしれません。フラッシュメモリの書き込みキャッシュのバックアップは効果大です。

OS

OSはWindows 2016 Server Standard を用いています。Windows 10などのクライアントOSはライセンス上、好ましくないです。
RHELやUbuntuなどのLinuxサーバーも検討しましたが、ARKやEmpyrionなどのサーバー管理ツールがWindows版でしか存在しないためWindows Serverにしました。

ミドル他

サーバー内のリソース監視はPrometheusとGrafanaを用いて可視化しています。10秒ごとの状態更新で、過去2週間までさかのぼってリソース状況を監視できます。閾値超えなども定義できますが、異常になる前に検知し対処しないと意味がないので、なかなか難しいです。grafana

以前はZabbixによるSNMPを導入していましたが、効果的ではありませんでした。例えばZabbixをVM上で動かすと、物理サーバーの故障を検知できずにそのVMが落ちてしまうなど。家庭では冗長構成がなかなかとれず、シングルポイントの障害点で情報遮断されて、フェイルセーフやリスクヘッジができないことが多いです。ファイルシステムもglasterやZFSも検討しましたが、チープな冗長構成ではスプリットブレインになりやすく情報矛盾が生じてデータ破壊する方がダメージ大きいです。

Logicool G502 HEROの設定 (G HUB不要)

ゲームソフトウェア

ボクらがゲームするときにしたいマウス設定管理

Logicoolから提供されているG HUBという設定&管理ツールは使えない。ボクらがゲームで必要なマウス設定管理とは、マウスに対する各ボタン割り当てやDPIをゲーム単位にプロファイル設定し、ゲーム起動時にはそのプロファイルを自動切り替えすることです。

G HUBの要件定義が間違っているのか、デキが悪くてバグが多いのか、ボクらがやりたいことが素直にできなくてイライラさせられます。

他人の設定などどうでもいいのです。ゲーム中の光り方とかもどうでもよいのです。そもそもマウスは握っているのでLEDの明滅など見えないでしょうに。あ、カーシムでレースシグナルの代替に明滅するのは面白かったです。マウスは使わずにハンコンでしたので気づきました。

G HUBは直観的に自分が設定したい内容を変更できないうえに、CPU負荷(割り込みだろうか)が高くてゲーム処理の邪魔をする、バグなのか設定が反映されない、設定が消える、入力が遅延する…私はアンインストールしました。

今は改善されているのでしょうか?ちょっと見てましょう。

G502のAmazonレビュー

ひどい内容ですね。やはりG HUBが原因で低評価されているように見受けられます。G502が悪いのではなく、GHUBが悪いと。私はこの酷評のレビューを参考にして、あえて承知の上で有線の新型G502を2021年5月に購入しました。G502はワンチャンあるんですよ。

それまではG302を使用しており、管理&設定ソフトはLogicool ゲームソフトウェアで行っていました。シンプルで悪くありません。やりたいことができます。2019年ころにG HUBに入れ替えたらひどく扱いにくい上にプロファイルの移行もできず、すぐに切り戻した次第です。

G HUBをインストールしたままLogicool ゲーム ソフトウェアは同居できないので、G HUBはアンインストールしてください。

「Logicool ゲーム ソフトウェア」という解

G502 無印が発売されたころは、G HUBがまだリリースされておらず、前身のLogicool ゲーム ソフトウェア で設定と管理をしていました。おそらく、G502 RGBが発売されたとほぼ同時期にG HUBがリリースされたと思います。

何が言いたいかというと、Logicool ゲーム ソフトウェアはG502(無印,RGB)を認識するのです。Logicoolのダウンロードサイトから、ダウンロードできます。ただし、後発のG502 LIGHTSPEED ワイヤレスは分かりません。サポートサイトのダウンロードページをみるに、ゲームソフトウェアの選択肢がありませんでした。

前述のリンクURLはマウス機種に関係なくダウンロードできるところを指しているので、試す価値はあるかもしれません。ただ、2018/10以降はソフト更新が止まっているので、それ以降でGHUBがリリースされた2019年以降に販売されたデバイスは認識しない可能性があります。とはいえ、G502RGBhr (HEROセンサー対応) は2019年発売ですが認識しました。

G HUBが原因でマウスを投げ捨てたくなった方、Logicool ゲーム ソフトウェア いいっすよ。

AMD Ryzen 7 5800Xが冷えない

事象

CPUクーラーに簡易水冷で12cmファンが3連搭載しているCorsair iCUE H150i RGB PRO XT CW-9060045-WW を選定、Ryzen 7 5800Xを冷却しているが、どうも冷えない。5800Xは熱密度が高くて冷えにくいなどと言われているが、CPU負荷をかけるとすぐにサーマルスロットリング状態になってしまう。この状態でCPUクーラーの監視ソフトである iCUE で水枕の温度状態をみたところ、29℃とかなり低い。このため、ポンプ、ファンともに最低の回転で冷却をしていないようにみえる。

調査

問題の切り分けを行う。可能性をあげてみる。

  • CPUクーラーをきちんと固定できておらず熱伝導率が低い
  • CPUグリスの塗りが悪く熱伝導率が低い
  • 水冷ヘッドの温度センサーが壊れている。
  • iCUE のバグで温度センサーを読み間違っている

これを踏まえてやったこと

  • CPUクーラーの固定状態確認
    固定はプラスドライバーで行うのだが、トルク指定が記載しておらず、無理にきつく固定するとマザーボードがたわみ、メモリなどの認識異常になることがある。バックプレートが上部ならリスクは低いのだが、アナログ調整は難しい。ほどほどにきつく固定してあることを確認しOKと判断した。
  • グリス塗布状態確認
    薄く塗りすぎた感がある。いったん拭き取り、脱脂して再塗布した。だが、事象の状態変化なし
  • 水枕の温度センサーの温度確認
    室温22℃
    マザーボード温度40℃
    低負荷時のCPU温度40℃ → 水枕の温度29度
    高負荷時のCPU温度90℃ → 水枕の温度30度 ほとんど変化しない
  • iCUEの最新版適用とネット上での評判を確認 特に問題なし

温度センサーが壊れている可能性が高いので、購入元のサポートサービスに連絡、あとで送り返す。

手動制御で冷えるか?

iCUEでパフォーマンス設定ができるので、全速力では動作しないかもしれないが、最速設定をすれば、ポンプとファンの回転数を静か/安定よりも高回転で回る。水枕温度が低いままなので最高速ではないのだが、少しは冷えるだろうと予測した。

CPU負荷を100% 状態でCPU温度が87℃で安定したので、ポンプやファンは正常動作しているのだろう。最高回転まで回せれば確実に冷えるね。

さて、バラして再梱包だ。面倒だ。

初期不良交換後

冷えるようになった。室温26℃、全コア4.4GHzに設定し、負荷100%で10分間連続状態で確認した。ファンとポンプをデフォルトの「安定」に設定してCPU温度は最高77℃で安定している。「静か」では82℃まで上昇したが、サーマルスロットルのスレッショルド値である90℃に達することはなかった。

一方で、水枕の温度はあまり変化しない傾向だった。Ryzen7 5800Xが冷えにくいのは確かなようだ。交換前のH150iは温度センサーが故障していたのではなく、センサーに対するファン/ポンプの制御が正しく動作していなかったのだろう。また、ファンの回転速度をあげるよりポンプの回転を上げた方が効果的だった。つまり、静かだ。360mmのラジエーター効果は高い。

  • 結果
    室温26℃
    マザーボード温度40℃
    低負荷時のCPU温度39℃ → 水枕の温度31度
    高負荷時のCPU温度77℃ → 水枕の温度33度 ほとんど変化しない

 

誤自宅 10GbE

LANを10Gbps化する

2017年の夏、自宅内LANに10GBase-Tを導入した。IntelのX540-T2が2万円以下、L2SWがポート単価が1万円程度にまで価格が下がっており、PC3台とL2SWの構成であれば10万円前後でLANを10Gbps化できるまでになったのだ。このX540-T2はチャイナのパチモンではないか?とネットで話題になっていたが、性能は問題ないとの人柱報告があり、仕事で使うならまだしも、趣味ならリスク許容範囲内かと私も飛びついてしまった。性能はiperf3で9.4Gbpsで全く問題ない。

LANケーブルはCategory6Aにした。当時、Category7が出始めていたが規格的にSFPケーブルしかなく、機能用接地のないシールド線なんてノイズを拾うためのアンテナだろうと判断したのだ。自宅でSFPなんてスピリチュアルなマニアしか使わないよね。クスクス。

さて、X540-T2は物理が2ポートで自宅で使うには冗長すぎると思うかもしれない。1GbEのポートはマザーボードに搭載されているので使い分けするとしても10GbEも1ポートで十分である。と考えるのが普通だろう。1ポートのタイプであれば当時でも半額の1万円程度で販売されていた。

しかし、当時の私は将来的にWANつまりInternetも10Gbps化する際は使い分けが必要になると考えていた。何を使い分けるか、それはジャンボフレームの取り扱いだ。InternetではMTUは1500未満のためジャンボフレームでは通信できず10Gbpsの回線を導入しても効率が上がらないだろうと予想できる。これにLANまで足を引っ張られたくないと考え、宅内に閉じたVLANとInternetにアクセスできるVLANとに分けて通信させたかった。ジャンボフレームを用いないと7Gbpsが限界でCPU負荷(I/O割り込み)も非常に高くなっていた。

とはいえ、最初から2ポート構成は冗長すぎたようだ。Internet回線が1GbEから10GbEになるまでは1ポート冗長、つまり冗長なら冗長化しようとEther Channel(Bonding)を導入したくらいに。頭のイカレタ私はいっそ冗長化するなら単一障害点である10GbEのL2SWも改善すべく2台構成にしてしまった。空いている穴があったら入れてみたいジャナイカ?

LANを10GbEにするとiSCSIやsmb/nfsなどのネットワークストレージへのアクセスが滅茶苦茶早くな。私のゲーム用PCはOS起動用の128GBx2台のSATA-SSDしか搭載していない。ゲームコンテンツはファイルサーバーにiSCSIで接続したストレージにある。ファイルサーバーは階層化ストレージからiSCSIのターゲットに領域を割り当てている。階層化ストレージの高速側はNVMe-SSDで、シーケンシャル性能は700MB/s(約7Gbps)以上あり、並のSATA-SSDより高速だ。低速側のHDDはハードウェアRAIDボードでRAID60を構成しているので、

ファイルサーバーとNASの間をバックアップ目的で定期的にrsyncしています。これも10GbEにすることであっという間に終わります。(時間かかってもいいのですが)

一番実感するのはVMイメージのバックアップです。スナップショットバックアップからクローンを作ってイメージバックアップするのですが、1VMは40~300GBほどあるのでバックアップ時間がバカになりません。10GbEであれば数分/VMで終わります。

WANを10Gbps化する

2019年の夏、NURO 光10Gsを導入した。それまでフレッツ光でInternet回線の速度はおよそ700Mbpsだったのだが、10Gsに変えたことで4000~7000Mbpsになった。そんなに使わけがないと思うだろう。確かに常時は使わないが、クラウドストレージとの同期やOSイメージの取得で使うbit torrentが劇的に性能向上した。先日、CentOS 8.2のisoイメージ取得をしたが、秒で完了したのはすごかった。セットして即完了だったのでエラーかと思ったくらいに。

NURO 光10Gs 敷設の初期手数料は高いが、ランニングコストは月6000円くらいと、さほど高くもない。でもNURO光(2G)なら月1000円くらいか。直販のみでリセラーメリットがないから、アフィ目当てのブログでは10Gsのメリットない2G最高!っていう調子が多いのも事実。

NURO 光10GsにはメールやWEBストレージなどのサービスはないが、元来不要であるのと、宅内外でほぼ同じ速度で利用できるのは快適この上ない。VPN接続して出張先のホテルから自宅サーバーにアクセスしたり、NASに入れた動画も視聴もできる。

でもまだsteamなどからのダウンロードは頑張っても1Gbps未満なのは不満だ。CDN性能なのかキャッシュがないのか判らないが、自宅回線がボトルネックではないことだけは確かだ。

NUROの問題点は1つある。ルーターがHuawei製一択なのだ。技術があって安いっていうとここしかないのだろう。市販ルーターでは当然代替できない。ちなみに一部の機能以外は非常に安定している。

ShadowPlayでDISCORDの相手の音声が録音されない(GSX-1000)

GSX 1000

ShadowPlayの仕様とGSX-1000のデバイス特徴

GeForce Experience を使う理由としたら、お手軽な動画キャプチャー&ライブ配信でしょう。GeForceのNVENCを利用してCPUに負荷をかけずにH.264のCODECを用いてリアルタイムエンコードが可能です。

先日、TEAM-BOSS時代からの友人とInsurgency Sandstormを久々にCoopで遊んだところを録画したのですが、DISCORD上の友人の音声が録音されていませんでした。以前はそんなことなかったので、なにか変わったかな?などと思ったのですが、ShadowPlayの仕様と私がオーディオアンプに利用しているゼンハイザー GSX-1000の仕様とを見比べると解決策が見えてきたので自分向けメモです。

GeForce ShadowPlayの録画時の音声はOSで設定されている スピーカーの”規定のデバイス”(デフォルトデバイス)と、マイクの”規定の通信デバイス”です。

ゼンハイザー GSX-1000はヘッドフォン(スピーカー)とマイクの2つのデバイスから構成されており、スピーカーは”GSX 1000 Main Audio”、マイクは”Headset Earphone”として検出されます。

この仕様ですと、ゲームの音と私がマイクで発声している音は拾ってくれます。問題ないですね。

DISCORDで相手の声が録音されない理由

問題はDISCORDで相手の声が録画ファイルに録音されない事象です。DISCORDの音声・ビデオ設定では入力/出力ともにDefaultのデバイスを用いるとしています。このDefaultが問題を引き起こしていました。

ボイスチャットの相手の音声のDefaultとは、実はスピーカーではなく、通信デバイス(ボイスチャット等のヘッドセット等を指しています)からの出力なのです。GSX-1000は通信デバイスとしてのヘッドフォン機能も有していたわけです。ShadowPlayはスピーカーとマイクからしか録音しないので、通信デバイスの音声はミキシング対象外でミュート状態になってしまいます。

ところで、Windowsでは”通信デバイス”と訳されていますが、コミュニケーションデバイスの方が判りやすかったと思うのは私だけですかね。

対処方法

DISCORDで音声設定にある出力デバイスをDefault(つまり通信デバイス)ではなく、スピーカーにしてやればいいのです。GSX1000はヘッドセットとスピーカーを切り替えられますが、それとは別にスピーカーをつけている場合もあるので、ここでは”スピーカー(GSX 1000 Main Audio)を選択するようにしてください。

DISCORD for GSX-1000

謝辞

暑い中、確認試験のための対向環境を準備してくれたドギーに感謝。ボイスチャットで語ったのは15年ぶりくらいか。ドギーはUltima Online時代からの友人です。