XenServer

CPU使用率の監視

ホスト上のpCPUごとに最適なvCPUの数は、ユースケースによって異なります。運用中は、XenServer環境のパフォーマンスを監視し、それに応じて構成を調整してください。

用語

この分野では、同じ意味で使用されることがあるさまざまな用語があります。この記事では、次の用語と意味を使用します:

  • CPU(物理CPU): プロセッサーソケットに接続されている物理的なハードウェア。
  • コア: 1つの独立したスレッドを実行できる物理処理ユニット。その実行をサポートするために必要なすべての機能ユニットが含まれます。
  • ハイパースレッド: 1つの独立したスレッドを実行できる物理処理ユニット。一部の機能ユニットを別のハイパースレッド(「sibling(兄弟)スレッド」とも呼ばれる)と共有します。
  • 論理CPU(pCPU): 独立したスレッドを実行できるユニット。レジスターのセットと命令ポインターが含まれます。ハイパースレッドが有効になっているシステムでは、これはハイパースレッドのことです。それ以外の場合には、コアを指します。
  • ホストpCPU:ホスト内の論理CPUの合計数。
  • vCPU(仮想CPU):仮想化された論理CPU。これは、仮想マシンに提供される、独立したスレッドを実行できる論理ユニットです。XenServerでは、vCPUはpCPUを「タイムシェアリング」することができ、スケジューラーを使用して、いつでもどのvCPUがどのpCPU上で実行されているかを決定します。
  • ゲストvCPU:仮想マシン内のゲストオペレーティングシステムに提供されるvCPU。
  • Dom0 vCPU:XenServerコントロールドメイン(dom0)が認識できるvCPU。
  • ホストの合計vCPU:ホスト内のDom0 vCPUとすべてのゲストvCPUの合計数。

一般的な動作

ホスト上のvCPUの合計数は、ホスト上のすべての仮想マシンに割り当てられているvCPUの合計数に、dom0によって使用されるvCPUの数を加算したものです。ホスト上のvCPUの数を増やすと、次の種類の動作が発生する可能性があります:

  • ホスト上のvCPUの合計数がホスト上のpCPU数以下の場合、ホストは常に仮想マシンによって要求された量のCPUを提供します。

  • ホスト上のvCPUの合計数がホスト上のpCPUの数より大きい場合、ホストはホストpCPUの時間を仮想マシンにシェアします。通常、仮想マシンのvCPUはアイドル状態になることがあり、ほとんどの場合、ホストpCPUの使用率は100%に達しないため、この動作は一般的に仮想マシンには影響しません。

  • ホスト上のvCPUの合計数がホスト上のpCPUの数よりも大きく、ホストpCPUの使用率が100%に達することがある場合、スパイク中は、仮想マシンのvCPUは要求した量より少ないpCPUを受け取ります。代わりに、こうしたスパイクの間、仮想マシンはホスト上で使用可能なpCPUのシェアを受け取るために速度が低下します。

  • ホスト上のvCPUの合計数がホスト上のpCPUの数よりも大きく、ホストpCPUの使用率が100%に達することが多い場合、仮想マシンのvCPUはホストで利用可能なCPUのシェアを受け取るために、速度を落とし続けます。仮想マシンにリアルタイムで対応する要件がある場合、この状況は理想的ではないため、ホスト上のvCPUの数を減らすことで対処できます。

ホスト上の最適なvCPUの数は、仮想マシンの速度に対する仮想マシンユーザーの認識によって異なります(特に仮想マシンにリアルタイムで対応する要件がある場合)。

CPUに関する情報の取得

ホスト上のpCPUの合計数を確認するには、次のコマンドを実行します:

xe host-cpu-info --minimal

現在のホスト上のvCPU(ゲストおよびdom0)に関して合計数を確認するには、次のコマンドを実行します:

xl vcpu-list | grep -v VCPU | wc -l

RRD測定値によるCPU使用率の監視

XenServerは、仮想マシン上のvCPUのパフォーマンスを説明するRRD測定値を提供します。

ホストpCPUの使用率が100%の場合

ホストでホストpCPUの使用率が100%に達した場合、次の仮想マシン測定値を使用して、仮想マシンを別のホストに移動するかどうかを決定します:

runstate_concurrency_hazard

  • runstate_concurrency_hazard > 0%は、少なくとも1つのvCPUが実行されているときに、少なくとも1つの他のvCPUを実行する必要があるにもかかわらず、pCPU時間を取得できない場合があることを示します。これらのvCPUの実行が必要な場合、この動作によりパフォーマンスの問題が発生します。

  • runstate_concurrency_hazard approaching 100%は、避けるべき状況です。

    推奨されるアクション:

    パフォーマンスの問題がある場合は、次のいずれかのアクションを実行してください:

    • 仮想マシン内のvCPUの数を減らします。
    • 仮想マシンを別のホストに移動します。
    • 他の仮想マシンを移行するか、vCPUの数を減らして、ホスト上のvCPUの合計数を減らします。

runstate_partial_contention

  • runstate_partial_contention > 0%は、少なくとも1つのvCPUを実行する必要があるにもかかわらずpCPU時間を取得できないことと、少なくとも1つの他のvCPUがブロックされていること(何も作業がないか、I/Oの完了を待機しているため)の両方を意味します。

  • runstate_concurrency_hazard approaching 100%は、避けるべき状況です。

    推奨されるアクション:

    バックエンドのI/Oストレージサーバーが過負荷になっていないか、ストレージベンダーが提供するバックエンド測定値を見て確認してください。ストレージサーバーが過負荷になっておらず、パフォーマンスの問題がある場合は、次のいずれかのアクションを実行します:

    • 仮想マシン内のvCPUの数を減らします。
    • 仮想マシンを別のホストに移動します。
    • 他の仮想マシンを移行するか、vCPUの数を減らして、ホスト上のvCPUの合計数を減らします。

runstate_full_contention

  • runstate_full_contention > 0%は、vCPUをすべて同時に実行する必要があっても、どれもがpCPU時間を取得できないことを示します。

  • runstate_full_contention approaching 100%は、避けるべき状況です。

    推奨されるアクション:

    パフォーマンスの問題がある場合は、次のいずれかのアクションを実行してください:

    • 仮想マシン内のvCPUの数を減らします。
    • 仮想マシンを別のホストに移動します。
    • 他の仮想マシンを移行するか、vCPUの数を減らして、ホスト上のvCPUの合計数を減らします。

ホストpCPUの使用率が100%未満の場合

ホストでホストpCPUの使用率が100%に達していない場合、次の仮想マシン測定値を使用して、仮想マシンに適切な数のvCPUがあるかを判断します:

runstate_fullrun

  • runstate_fullrun = 0%は、仮想CPUがすべて同時に使用されることは決してないことを示します。

    推奨されるアクション:

    この仮想マシン内のvCPUの数を減らします。

  • 0% < runstate_fullrun < 100%は、vCPUがすべて同時に使用される場合があることを示します。

  • runstate_fullrun = 100%は、vCPUが常にすべて同時に使用されることを示します。

    推奨されるアクション:

    この仮想マシン内のvCPUの数を、「runstate_fullrun < 100%」になるまで増やすことができます。vCPUの数をそれ以上増やさないでください。増やすと、ホストpCPUの使用率が100%に達した場合に、並列性のハザードが発生する可能性が高くなります。

runstate_partial_run

  • runstate_partial_run = 0%は、すべてのvCPUが常に使用されている(full-run=100%)またはvCPUがまったく使用されていない(idle=100%)ことを示します。

  • 0% < runstate_partial_run < 100%は、何も作業がないか、I/Oの完了を待機しているため、少なくとも1つのvCPUがブロックされている場合があることを示します。

  • runstate_partial_run=100%は、ブロックされているvCPUが常に少なくとも1つあることを示します。

    推奨されるアクション

    バックエンドI/Oストレージサーバーが過負荷になっていないかを確認してください。過負荷になっていない場合は、仮想マシンのvCPUが多すぎる可能性があるため、この仮想マシンのvCPUの数を減らすことができます。仮想マシン内のvCPUが多すぎると、ホストのCPU使用率が100%に達したときに仮想マシンが並列性のハザード状態になるリスクが増加する可能性があります。

CPU使用率の監視