CPU Steal Timeの原因と対策


blog_25_main.webp

クラウドサービスをご利用する多くの方は、CPU Stealについてお問い合わせします。CPU Steal Timeは、クラウドサービスと物理サーバーの環境の違いから生じる代表的な指標です。CPU Steal Timeが高くなると、Webサービスに障害が発生する可能性があります。CPU steal timeは、仮想化されたリソースを配布する過程でcpuのリソースをどれだけ奪っているかを示す指標です。それでは、CPU Steal Timeについて学びましょう。

CPU Steal Time

CPU Steal Timeは、ハイパーバイザーが他の仮想プロセッサをサービスしている間に仮想CPUが実際のCPUを待つ時間をパーセンテージで表した値です。仮想環境で動作する仮想マシン(VM)は、単一ホスト上の他のインスタンスとリソースを共有します。CPU Steal Time を使用すると、VMで動作する CPU が物理マシンからリソースを割り当てられるまで待機していることがわかります。

CPU Steal Timeはどのように確認できますか?

まず、Linuxでtopコマンドを実行すると、主要なパフォーマンスメトリックのリアルタイムビューが表示されます。以下は、Topコマンドが実行されたときの値です。

 Top - 10:00:00 up 120 days, 7:00, 3 users, load average: 1.15, 0.88, 0.86
 Tasks: 122 total, 10 running, 112 sleeping, 0 stopped, 0 zombie
 %Cpu(s): 40.0%us, 0.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0,0%hi, 0.1%si, 70.0%st

Topコマンドを使用している場合は、現在発生している指標を確認できます。サービスに問題が発生した場合過去の指標を確認したい場合は、WhaTap Infrastructure Monitoringサービスなどのモニタリングサービスを使用して問題が発生した時点の指標を確認しなければなりません。ほとんどのモニタリングサービスはCPU Steal指標を常にモニタリングしています。

%EA%B7%B8%EB%A6%BC2.png

CPU(s)項目の説明は以下の通りです。

  • us(user) : ユーザーアプリケーション(non-kernel code)によって使用されるCPU時間の割合
  • sy(system) : システム(kernel code)によって使用されるCPU時間率
  • ni(nice) : NI値が1から19の間のユーザープロセスによって使用されるCPU時間率
  • id(idle) : CPU休憩時間率
  • wa(wait) : CPU 使用待ち時間率
  • hi(hard interrupt) : すぐに実行された割り込みハンドラで使用された時間の割合
  • si(soft interrupt) : 待機後に実行された割り込みハンドラで使用された時間比
  • st(steal time) : 仮想化システムが受信しなかった(プロセスが非自発的に待機するために使用した)時間率

CPU Steal Timeは、CPU の最後の項目で確認できます。実際の仮想化環境でない場合、CPU Steal Time は何の意味も持ちません。

CPU Steal Timeが高い原因は?

cause_effect.webp

CPU Stealが発生する理由は、VMが上がっている物理装置にリソースが最初から不足するか、または物理装置にリソースは十分ですが、VMに割り当てられたCPUリソースが不足しているためです。VMが多すぎるか、管理者が VM で使用できる各リソース制限の設定を間違っていると、この問題が発生することがあります。あるいは、物理機器の老化が原因でホスティングサービスを処理できない状況である可能性があります。

CPU steal timeが高い場合、どのような状況が発生するのか。

まず、配置作業など、バックグラウンドで長時間かかる作業の場合には通常問題になりません。CPU Steal Timeは、このような場合に作業を停止させる要素としては機能せず、他のVMとCPUサイクルを共有する過程で少し遅く作業が終わるだけです。

ただし、Webアプリケーションでは問題が発生する可能性があります。Webアプリケーションには、顧客の要求に対するリアルタイム処理が必要です。Webレスポンスが必要な状況で Cpu Steal Timeが高くなり、パフォーマンスが低下すると、最終的にサービスのリアルタイム要求が処理されずにサービスに障害が発生します。

クラウドサービスベンダーでのトラブルシューティング

problem_solution.webp

① リソースの制限設定を調整します。特定のサーバーで実行されるVMのリソース使用率の設定を調整します。実際にVM固有のリソース使用率が管理されていない場合、一部の高いリソースを使用するVMによって他のVMが被害を受けている可能性があります。

② ハイパーバイザーをアップグレードします。VMのリソースを適切に割り当てる技術が不足しているハイパーバイザーを使用している場合は、ハイパーバイザーを最新バージョンにアップグレードするか、より良いソフトウェアに置き換えます。

③ 物理サーバーの機器をアップグレードします。より多くの処理パフォーマンスを持つプロセスにアップグレードするか、コアを追加してVMで使用できるリソースを増やします。

④ VMを転送して負荷を相殺します。 VM の使用率を把握し、リソースの使用率を平準化します。CPU負荷が多いVMを物理的に分離してCPUのタスクを分散させると、仮想CPUの負荷が軽減されます。

クラウドを使用しているお客様のトラブルシューティング方法

エンドユーザーの立場からCpu Steal Timeが高い問題を直接解決する方法は非常に限られています。Cpu Steal Timeでサービスに問題が発生した場合は、ホスティング会社を通じて現在購入されているVMが契約に基づいて適切なリソースを提供していることを確認する必要がありますが、ほとんどのクラウドサービスプロバイダは適切に提供していると答えます。Cpu Steal Timeがサービスに影響を与えている場合は、次の2つの方法のいずれかを取る必要があります。

  • より強力なインスタンスを購入します。
  • 別のインスタンスにアプリケーションを再配布します。

まとめ

クラウドを使用しながらモニタリングを怠らないでください。開発者、オペレーター、または企画者であっても問題が発生した場合は、原因を分析するためのツールを用意する必要があります。そして、クラウドの専門家や専門家とつながることができる、ホットラインを常に作っておいてください。

SaaS型のメリット、国内最高の性能分析専門家の技術をサポートされたいなら?

WhaTapを無料で始める

今すぐWhaTapをお試しください。