お客様からCPUスティール時間(CPU steal time)についてよく質問されます。特にCPUを頻繁に使用し、それが重要なパフォーマンス基準となっているお客様から多く寄せられます。物理環境と仮想環境の間では、CPUやコアのセットアップや動作にかなりの違いがあります。クラウドプロバイダー間でもセットアップの違いがあるため、単純な比較は一見困難です。このため、当社のセットアップとCPU割り当てロジックの簡単な概要をお客様に提供し、CPUスティール時間の最も一般的な原因を説明することが有益であると考えました。
まず、この概念に馴染みのない方のために説明すると、CPUスティール時間とは、ハイパーバイザーが他の処理(他の仮想マシンやクラウドサーバーなど)で忙しい間、クラウドサーバー内の仮想CPUが実際の物理CPUを待たなければならない時間のことです。これは、CPUスティール時間に関する素晴らしい記事であり、一読の価値があります。
当社のCPUセットアップに関する簡単な情報
まず理解すべきことは、お客様のコンピューティングをホストする各物理コンピューティングノード上の仮想マシン間で、当社がどのようにコアを割り当てているかに関連しています。におけるCPUとそのコアは、 CloudSigmaでは共有されています。言い換えれば、お客様のクラウドサーバーを特定のコアに固定することはありません。CPU時間は物理コンピューティングノードのスケジューラによって動的に割り当てられ、すべてが共有されます。これにより、コンピューティングノードが負荷のバランスを取るためにその場で適切な割り当て調整を行えるようになり、全体としてより信頼性の高いパフォーマンスを提供する上で多くのメリットがあると確信しています。
これと組み合わせて、当社ではコントロールグループ(略してcgroups)を使用して、サーバーサイズを介して設定されたリソースに沿って、各クラウドサーバーに十分なCPU時間を保証しています。最終的に、スケジューラは残りのリソースとcgroupsをどう処理するかを決定します。また、お客様のコンピューティングワークロードの割り当て範囲外となる特定のコアセットを確保していることにも注目する価値があります。当社はこれらのコアを使用して、物理ホストのオペレーティングシステムを実行しています。特に、ネットワークおよびストレージ処理のために追加のコアを確保しています。これらはすべて、マシン全体の安定性を高めることを目的としています。さらに、他のお客様の負荷に影響されることなく、長期にわたって信頼性の高いパフォーマンスレベルをお客様に提供するのに役立ちます。
仮想化環境におけるCPUスティール時間の原因
物理環境とは異なり、CPUスティール時間が発生する原因や状況は複数あります。これは、マルチテナントの仮想化環境では状況がより複雑になるためです。それらのすべてが、本来受け取るべきCPU時間を受け取れていない状況というわけではありません。実際、多くの場合、割り当てられたサイズを超えて予備のCPUサイクルを吸収できることがありますが、それはCPUスティール時間が発生する状況ではありません。最も一般的な3つの状況について、以下で詳しく説明します。
クラウドサーバーが過負荷になっている
よくあることです!誰もが支払っている料金に見合うよう、フル容量に近い状態で使用したいと考えますが、仮想クラウドサーバーに割り当てられたCPUがワークロードを処理するのに十分でない場合、仮想CPU内で処理が滞り、キューに並ぶため、CPUスティール時間が発生することがあります。これがCPUスティール時間の根本原因である場合、解決策はクラウドサーバーのサイズを変更することです。これが一時的な過負荷である場合は、そのままにしておいても問題ありません。負荷が下がれば、CPUスティール時間は解消されます。
クラウドサーバーをホストしている物理サーバーが過負荷になっている
ホストの過負荷が発生している場合、これは当社側の不手際となります。稀ではありますが、起こり得ることです。この場合、当社はライブマイグレーションを使用して、仮想マシンを停止することなく他の物理コンピューティングノードに移行し、負荷レベルを正常なレベルに戻します。通常、当社はホストをフル負荷よりはるかに低い状態に維持しています。そのため、長期間にわたってこの現象が続く場合は、当社までご連絡ください。当社の無料の24時間365日サポートが、お客様が利用している物理ホストを確認いたします。過負荷が発生していない場合、それがCPUスティール時間の根本原因である可能性は低いです。
より小さい仮想コアサイズを使用しています
CloudSigmaでは、あらゆるクラウドサーバーサイズにおいて、たとえばより多くのCPUスレッドや、より多くの小さな仮想コアを持つメリットを享受できるように、仮想コアサイズを定義する機能を提供しています。オペレーティングシステム内のクラウドサーバーは、コアサイズを常に完全な物理サイズとして認識します。
物理コアが2.6GHzであっても、VMが4GHzで2コアの場合、各仮想コアは2GHzになります。そのため、常にスティールタイムが表示されることになります。実際、これは仮想コアのサイズ設定が小さいため、フルサイズではなく、コア全体の比例配分された量を受け取るためです。そのため、実際に小さい仮想コアサイズを使用している場合は、CPUスティールタイムの計算を常に調整して、その影響を考慮する必要があります。これを避けるには、コアごとにフルコアサイズを使用できます。これを行うには、仮想コアサイズをフルCPUコアサイズ(例:Intel v4 2.6GHz)に拡張します。
結論
クラウドにおけるCPUスティールタイムは、従来のシングルテナントの物理環境よりも少し複雑です。しかし、確実に存在します。ただし、オペレーティングシステムによるCPUスティールタイムの報告は、異なる条件に合わせて調整されていません(hasn’t)。これは、誤検知が発生する可能性があることを意味します。CPUスティールタイムが検出された場合、通常はリソースの制約が発生していることを意味します。 この投稿が、根本原因を迅速に特定し、スムーズな運用を継続するための一助となれば幸いです。
快適なコンピューティングを!
Robert
コメント
コメントはまだありません。最初のコメントを投稿しましょう。