vCPUとメモリを割り当てる
仮想CPUとメモリが物理資源を共有する仕組みと、割り当ての不足や過剰の見方を学びます。
このレッスンのメニュー
クラウドで仮想マシンを作るときは、「2 vCPU、メモリ4 GB」のように大きさを選びます。 小さすぎると処理を待つ時間が増え、大きすぎると使わない分にも料金がかかります。
選んだ仮想CPU(vCPU)とメモリは、ハイパーバイザーが物理サーバーの資源から仮想マシンへ割り当てます。 このページでは、vCPUとメモリが実際には何を表し、不足したときにLinuxへ何が現れるかを順に見ます。
割り当てられたvCPUとメモリをLinuxから確認し、CPU待ちとメモリ不足を調べる手掛かりを区別できることが、このページの目標です。
vCPUは物理CPUを使うための単位
vCPUは、ゲストOSから見える仮想的なCPUです。 実際の計算は物理CPUが行い、ハイパーバイザーが複数の仮想マシンへ実行時間を配ります。
物理CPUが処理できる量より多くの仕事が同時に来ると、仮想マシンは順番を待ちます。 vCPUを増やしても、使える物理CPUの時間が増えなければ速くなりません。 アプリが並列処理を使えない場合も、vCPUを増やす効果は小さくなります。
メモリ不足はディスクへの退避を招く
メモリは、実行中のプログラムとデータを置く場所です。 Linuxは空いた領域をファイルの読み込みにも使います。 メモリ不足を調べるときは、「使用中」に加えて利用可能な量やディスクへの退避も確認します。
本当にメモリが足りなくなると、使っていない内容をディスクへ退避することがあります。 ディスクはメモリより遅いため、退避と読み戻しが続くと処理時間が大きく伸びます。 さらに不足すると、Linuxがプロセスを終了させることもあります。
割り当てすぎにも費用がかかる
通常の負荷で使う量を測り、急な増加を吸収できる分だけ多めに割り当てます。 大きすぎる仮想マシンは費用が増え、同じ物理サーバーに置ける仮想マシンの数も減ります。
CPU使用率、処理待ち時間、利用可能なメモリ、ディスクへの退避、アプリの応答時間を一緒に見て、必要な大きさを決めます。 平均値だけでは短時間の混雑を見落とすため、最大値や時間ごとの変化も確認します。
割り当て資源と待ち時間を確かめる
Linux Labで次を実行します。
nproc
free -h
uptime
vmstat 1 5
nproc はLinuxが使えるvCPU数を表示します。
free -h では available を見て、すぐに利用できるメモリの目安を確認します。
uptimeのload averageは、CPUを使える状態の処理と、ディスクなどの入出力(I/O)の完了を待つ一部の処理の数を含む値です。
vmstat は1秒間隔で5回表示します。
r はCPUを実行中または待っている処理、si と so はスワップの読み書き、wa はI/O待ち時間の割合です。
一度の出力だけで仮想マシンの大きさを変えず、負荷がある時間帯に同じ値を測ります。
CPU、メモリ、ディスク、ネットワークのどこで待っているかを確認し、増やす資源を決めます。
このレッスンは完了
このページで扱った流れを確認したら、次の内容へ進みます。