専用サーバー · 月額

二つ揃ったら
メモリを選ぶ

$465 / 月〜 · 128GB
申し込む
32コア / 64スレッド DDR4 ECC

クラウドの仮想マシンは、いつ専用サーバーに替えるか

クラウドサーバーと専用サーバーの違い、ベアメタルとクラウドの違い、VPSと専用サーバーの違い。検索語は分かれても、監視では同じ問いになります。スケジューラに他人がいるかです。 平日のピークで二つ揃ったら月額を見ます。steal が続くこと、ワーキングセットがインスタンスのメモリ上限を超えること、ディスク待ちがコミットを遅くすること。数分の跳ねだけではクラウドに残します。

先に判定表

読み方の前に、ピークで何が見えたらクラウドに残すか、専用機の月額を見るかを置きます。サンプルは平日ピーク、1秒または10秒間隔、少なくとも5営業日です。夜間バックアップは別ファイルにします。

ピークで見えたもの クラウドに残す 専用機の月額を見る
steal が数秒跳ねるだけ。p95 は動かない サイズを維持 この行は該当しない
steal が約10%以上を数分維持し、p95 も同方向。vCPU を足しても残る 増核は試した 隣のテナントが CPU を持っている
user と sys が埋まり、steal はほぼ 0 クラウド側の CPU を上げる まだ移さない
コンテナのスロットルがピークで増え、割当は上限 steal と同じ判断 上限でもスロットルが残る
空きメモリは少ない。スワップなし。遅延は安定 キャッシュとして残す この行は該当しない
ピークでスワップまたは OOM。バッファプールが VM 上限を超える クラウドに大きいメモリがない ワーキングセットで 128GB か 256GB
ディスクが忙しいのはバックアップの時間だけ バックアップをずらす この行は該当しない
データディスクの待ち行列がしばしば 1 超。書き込み待ちが数十ミリ秒。コミットが遅い。IOPS は上限 ディスク種別は変えた 待ちは共有ストレージ
二つ揃ってから見積もる

一つだけなら、クラウドのサイズを変えて翌週同じ窓で測り直します。二つが平日ピークで複数日そろい、p95 も同じ方向なら、月額を今の請求と並べます。引っ越しが消すのは隣のテナントです。遅い SQL、足りない索引、ロック待ち、拠点までの距離はそのままです。

名前は請求書、列は監視

クラウドサーバーの多くは KVM 系の仮想マシンです。ホストに他のテナントがいます。ゲストからは steal が見えます。vCPU は実行可能だったのに、その時間は他人に渡っています。ディスクはネットワークボリュームであることが多く、IOPS は規格かクレジットです。メモリには上限があり、balloon で空いているページをホストが回収することがあります。

VPS は先に仮想マシンかコンテナかを分けます。仮想マシン型はクラウドと同じ列で、上限が小さいことが多いです。コンテナに steal の列はありません。CPU は cgroup のスロットル回数、メモリ上限はメモリコントローラに出ます。スロットルを「故障」と読むと外れます。「割当の上限」と読むと、steal と同じ判断になります。VPS は、一台のホストから切り出した区画のままです。専用サーバーはスケジューラを一顧客に渡します。

ベアメタルはこのノートでは専用サーバーと同じです。ホスト OS の steal は 0 付近です。待ち行列に他社がいないためです。ディスクはこの筐体の NVMe、メモリはこの筐体の物理モジュールで、容量は注文時に決まります。

ノイジーネイバーは steal に出る

steal は「走りたいのに、ホストが CPU を持っている」時間です。vmstat の st、top の %st がパーセントです。Prometheus では node_cpu_seconds_total の steal モードを rate し、コア平均にします。

数秒から十数秒の steal は、隣の短いバーストです。クラウドに残して問題ありません。 サイズもトラフィックも変えていないのに、ピークで steal が約 10% 以上へ何度も上がり、数分とどまり、API の p95 も一緒に上がる。これが CPU を長く持っていかれた状態です。詰まったホストで vCPU を足しても、列が長くなるだけです。

別のピークは分けます。user と sys がほぼ埋まり、steal がほぼ 0 なら、コアは自分で使い切っています。先にクラウドの CPU を上げます。上げたあとも営業時間に steal が戻るなら、ホスト側が制約です。 10% は読みの線であり、警報の規定ではありません。遅延予算が厳しければ線を下げ、待てるバッチなら上げます。複数の営業日と、p95 が同じ方向に動くこと。この二つがセットです。

st vmstat の steal
約 10% ピークの読み線
5日 覆う営業日
p95 steal と同方向

コンテナ VPS に st はありません。CPU コントローラの cpu.stat で nr_throttled と throttled_usec を見ます。ピークでスロットル時間が増え続けるなら、割当が尽きました。プラン上限まで上げても残るなら、steal と同じ結論です。 専用機のホスト OS では steal は 0 付近に落ちます。その上で自分の仮想マシンを動かすと、ゲストに steal は出ます。32コアの分け方であって、隣の顧客ではありません。

ワーキングセットが上限を超えたとき

ワーキングセットは、その時間に繰り返し触られ、メモリに残す必要のあるページです。Linux は空いたメモリをキャッシュに使います。MemAvailable が低くても遅延が安定しているなら、多くはキャッシュです。「使用率 90%」だけで専用機に移ると、キャッシュ用のメモリを買うことになります。

営業時間に次が揃ったら書きます。vmstat の si と so が 0 のままにならない。メジャーフォルトが上がり、データベースの遅延も上がる。カーネルログに OOM がある。欲しいバッファプールが、この VM のメモリ上限より大きい。クラウドのサイズ表に、使える次の段がない。 balloon は、プロセスが埋まって見えなくてもゲストを圧迫します。ホストがページを戻すためです。圧迫の出どころがバルーンかワーキングセットかを先に分けます。

ワーキングセットがおおよそ 32GB で、スワップも OOM もなければ、クラウドのメモリを一段上げます。 すでにそのクラウドの最大メモリに届いているときが、専用機の二段です。どちらも DDR4-3200 ECC RDIMM で、128GB または 256GB。注文後にモジュールは足せません。 ピークのワーキングセットに、OS とページキャッシュの余裕を足して選びます。128GB に入らないなら 256GB で、月額は $592 です。どちらにも入らない負荷は、この機材でも収まりません。

キャッシュとページング

空きが少なく遅延が安定しているうちはキャッシュです。営業時間のスワップ、OOM、上限を超えたバッファプールが、メモリの項目です。

クレジット切れのディスク待ち

データベースが遅いときは、NIC より先にデータディスクの待ちを見ます。iostat -xz 1 の aqu-sz が平均待ち行列、w_await が書き込み待ちです。OLTP が見るのはコミット時の fsync です。バックアップのシーケンシャル帯域は、昼のコミットを説明しません。

ピークでデータディスクの aqu-sz がしばしば 1 を超え、w_await が数十ミリ秒になり、スローログのコミットも伸びる。待ち行列がデータベースを止めています。MB/s はそのまま低いことがあります。 ネットワークボリュームには IOPS クレジットが乗ります。クレジットが尽きると待ちが急に伸び、数時間で戻ります。毎日同じ時間帯だけ遅く、プロセスを再起動しても変わらない形です。 IOPS をそのクラウドの最上段まで買っても営業日に繰り返すなら、制限は共有ストレージ側です。

夜のバックアップでディスクが埋まり、昼の w_await が平常なら、バックアップの時間をずらします。待ちが低く、遅いクエリがロックやフルスキャンなら SQL を直します。 NVMe では %util が 100% 近くても、それだけでは飽和とは見ません。待ち行列と書き込み待ちを、移したあとも使います。

今のインスタンスで数値を取る

専用機を注文する前に、今のクラウド VM か VPS で終わります。コマンドは採取だけです。

  1. 1
    平日ピークを5日

    vmstat 1 で us、sy、st、si、so を残します。同じ窓の p95 を出します。バックアップ時間は分けて保存します。

  2. 2
    キャッシュとワーキングセット

    MemAvailable を、バッファプール設定とピークの実使用と並べます。OOM があればカーネルログを残します。コンテナはメモリ上限も読みます。

  3. 3
    データディスクだけ

    iostat -xz 1 でデータディスクの aqu-sz と w_await を、スローログのコミットと一緒に残します。

  4. 4
    三行にまとめる

    一行につき一つの項目です。有無、何日、p95 が同方向か。「有」が二行なら構成ページで月額を見ます。一行ならクラウドのサイズを変え、翌週測り直します。

vmstat 1
iostat -xz 1

us はユーザー、sy はシステム、id はアイドル、wa は I/O 待ち、st は steal です。si と so はスワップインとアウトです。 コンテナは nr_throttled の増分を st の横に置きます。その列がなければ CPU の結論は出しません。 遅延の主因が距離なら、steal が消えても往復は残ります。サーバーの設置は日本の東京です。日本と近隣への経路と、遠い地域への経路は別の問題です。ロック、索引不足、リージョンをまたぐ呼び出しは、この三項目の外です。

専用サーバーに移したあと

二つが成立したあとで見るのは、機材がその二つを受けられるかです。 CPU は単一ソケットの AMD EPYC 7543P、32コア / 64スレッド、2.8–3.7 GHz。この CPU を使うのは一顧客です。ホスト OS の steal は 0 付近になります。自分で切った仮想マシンの steal は、32コアの分配です。

メモリは二段です。128GB が月額 $465、256GB が月額 $592。どちらも DDR4-3200 ECC RDIMM です。ピークのワーキングセットで選びます。128GB に収まるなら 128GB です。

ディスクの標準は 2 × 1TB NVMe、ハードウェア RAID なし、ディスクは独立して直結 です。使える容量は 2TB として読みます。 待ちがネットワークボリューム由来なら、ローカル NVMe に替わったあと書き込み待ちは先に下がることが多いです。下がらなければ SQL か、1台では足りないかを見ます。 2TB を 0〜2 台追加できます。1台の月額は $83 で、これも直結です。元のアレイへは自動で入りません。ソフト RAID にする場合、使える容量はおよそ 1TB に戻ります。バックアップは筐体の外に置きます。

帯域の初期値は 250 Mbps、転送量無制限です。ディスク待ちはストレージの待ちなので、fsync のために 1G(月額 +$251)や 2G(月額 +$749)へ上げる判断にはしません。250M のポート自体が埋まったときに上げます。 IPv4 は 1 個が付きます。追加は 1 個あたり月額 $2、一台の合計は最大 256 個です。サブネットでは売りません。 システムは Ubuntu 24.04 を選べます。Windows は Standard が月額 +$21、Datacenter が月額 +$27 です。Linux は SSH、Windows は RDP です。

月額は、機種の価格に、追加ディスク台数 × 83、帯域の加算、追加 IP 数 × 2、OS の加算を足したものです。支払額は月額 × 月数です。月額、四半期、半年、年額は、この掛け算です。初期費用はありません。設置は日本の東京です。 ディスク待ちだけが成立し、CPU とメモリが静かなら、先にクラウドのディスクを最上段まで上げ、月額 $465 からの専用機と並べます。ワーキングセットも待ちも軽い負荷は、クラウドに残す方が収まることが多いです。二つ揃ったら、構成ページで 128GB か 256GB を選びます。

専用サーバー · 月額

二つ揃ったら、構成でメモリを選ぶ

128GB または 256GB。ディスクは 2×1TB の直結です。ログイン前でも注文できます。

$465 / 月〜
CPUEPYC 7543P
コア32コア / 64スレッド
メモリ128 / 256GB ECC
ディスク2×1TB 直結
設置日本・東京
接続SSH / RDP
初期費用なし