ヘッドレスサーバ に使うマシンタイプの選び方と費用感

(2枚目) Resonite Advent Calendar 2024 9日目の記事です

この記事では Google Cloud で resonite ヘッドレスサーバ を構築する で構築した ヘッドレスサーバ の運用費とマシンタイプについて解説します

利用料金を確認しよう

  1. Billing をブラウザで開き、 請求先アカウント名 から該当する項目をクリックします

    ../../../_images/report_kakin.png
  2. レポートをクリックし、右側のフィルタを見たい条件に合わせてください

    ../../../_images/specify_sku.png

上記は先月 2024 年 11 月分の筆者の resonite 用プロジェクトのレポートを表示したところです。 グループ条件に SKU を指定すると、どのリソースにいくら掛かったのかが詳細にわかります。

上から順番に、CPU、ディスク、メモリの料金となっています

T2D AMD Instance Core running in Japan

  • マシンタイプ Tau T2D の CPU 料金

Storage PD Capacity in Japan

  • ディスク料金

  • インスタンスが起動していない時にも料金がかかることに注意してください

T2D AMD Instance Ram running in Japan

  • マシンタイプ Tau T2D のメモリ料金

先月は 3 台のマシンを保持し、合計 50 時間弱の起動で 1500 円程度でした。 内訳は ボドゲ喫茶かっこう を毎週 2 店舗、20:30~24:00 運営と、1 回 8 時間前後の TRPG セッションを 2 回くらいです

../../../_images/Costs_for_November_2024.png

マシンタイプを変更してみよう

インスタンスを作成する際に、実はマシンタイプを指定しています。 作成するコマンドで指定している引数 --machine-type=${MACHINE_TYPE} がそれです

gcloud compute instances create ${RESONITE_HEADLESS_SERVER_INSTANCE_NAME} \
    --tags=${FIREWALL_TAG_NAME} \
    --image-project=${IMAGE_PROJECT} \
    --image-family=${IMAGE_FAMILY} \
    --image-family-scope=${IMAGE_FAMILY_SCOPE} \
    --machine-type=${MACHINE_TYPE} \
    --subnet=${SUBNET_NAME} \
    --metadata-from-file=user-data=${SETUP_RESONITE_HEADLESS_SERVER_SCRIPT} \
    --network-tier=STANDARD \
    --scopes cloud-platform

echo ${MACHINE_TYPE} を打つと t2d-standard-2 が表示されます。 これは env-headless-server.bash の中で指定しています

t2d-standard-2Tau T2D マシンシリーズ によると「基本周波数 2.45 GHz、有効周波数 2.8 GHz、最大ブースト周波数 3.5 GHz の第 3 世代の AMD EPYC Milan プロセッサ」とのことです。

t2d-standard-2 は 2CPU、8GB メモリのインスタンスで以下のような意味があります

t2d:

Tau T2D マシンシリーズ

standard:

CPU 数とメモリ構成のパターン。CPU 数が 2 の場合はメモリが 8GB

2:

CPU 数が 2つであることを示している

2023 年 10 月 resonite リリース当初から ボドゲ喫茶かっこう で負荷を見ながらマシンタイプを変更し、価格面と性能面のバランスを取り模索した結果、採用に至ったのが t2d-standard-2 です(1年以上前の話なので、今ではもっといいマシンタイプがあるはず)

以下は resonite リリース月(2023年10月)のかっこうの GCE インスタンスのモニタリング結果です

2台とも10人前後参加していたと思われますが、CPU 負荷は 60% 程度、メモリ使用率 80% 程度(6.4GB)であることがわかります。 次の画像は、2024年8月に .NET8 版がリリースされた時のモニタリング結果です

.NET8 版が、CPU 負荷 40% 程度、メモリ使用率 40% 程度でかなり負荷が下がったことがわかります(現行の .NET9 版も同様です)

上記より、 ヘッドレスサーバ に重い処理をさせるのでなければ、10数人を 2CPU、メモリ8GB程度で十分さばけることがわかっています。 もし、 ヘッドレスサーバ に重い処理をさせたければ、より高性能なマシンタイプに変更すると良いでしょう。 resonite は並列処理が苦手で CPU クロックが高い方が有利と聞いたことがあります。

筆者が、検討しているマシンタイプは以下の通りです。

マシンタイプ

CPU 数

メモリ

時間単価

備考

t2d-standard-2

2

8GB

$0.108396

本手順で標準使用

c4-standard-2

2

7GB

$0.12439532

t2dより高性能

c4-highcpu-2

2

4GB

$0.10922378

メモリ量に注意

n4-standard-2

2

8GB

$0.1217062

t2dより高性能

n4-highcpu-2

2

4GB

$0.10268977

メモリ量に注意

c3-highcpu-4

4

8GB

$0.218448

t2dより高性能

c3d-highcpu-4

4

8GB

$0.17359701

t2dより高性能

e2-standard-2

2

8GB

$0.087651

共有マシン。性能悪

価格は2025年1月時点の東京リージョンの価格です。 詳細については Compute Engine の汎用マシン ファミリー を確認してください

マシンタイプを変更してインスタンスを作成する場合は Google Cloud で resonite ヘッドレスサーバ を構築する ~解説編~resonite ヘッドレスサーバの GCE インスタンスを複製しよう の手順で変数 MACHINE_TYPE を指定し直してください

マシンイメージからインスタンスを作成する例

INSTANCE_NAME=headless-server02
MACHINE_TYPE="c4-highcpu-2"
gcloud compute instances create ${INSTANCE_NAME} \
    --machine-type ${MACHINE_TYPE} \
    --source-machine-image=${MACHINE_IMAGE_NAME} \
    --zone=${ZONE}

マシンタイプの注意事項

比較的安めの n2 や n2d を入れていない理由は2023年末の時点では、たびたび Google Cloud のリソース不足で起動できないことがあった為です。 スケジュールしている場合、外出していたりして即時対応ができないこともあるので避けています。

リソース不足になる理由は、どちらのマシンタイプも長時間起動する場合、月額割引が大きいため、スケーリングさせるサービスで多用されているからだと考えられます

以上

明日の記事 へ続きます。