仮想マシンの時間量子化エラー

エントリー


仮想マシンのさまざまなタスクのパフォーマンスを調査する作業を実行し、結果を定量的に理解するための古い実績のある方法、つまりベンチマークを使用しました。 それらの多くは、かなり前に自分自身を証明しているだけでなく、熱意の波で自分自身のいくつかを書いた。 結果をあまり疑うことなく、すでに良い統計を収集していたので、テストの1つで、プログラムが喜んで報告したタスクに費やされた時間が、この結果を予想した数倍であることに偶然気付きました。 ストップウォッチで繰り返し測定すると、私の観測が確認されました。はい、仮想マシンの時間が期待どおりに進まない場合があります。 詳細とそれが私たちを脅かすものについては、ハブロキャットをお願いします。



エッセンス


以下で説明するすべては、ホストマシンと仮想マシンの両方に関連するすべての更新と統合パッケージを使用して、Windows 2008 Server R2で実行されました。 ハイパーバイザーはHyper-Vでした。



問題の本質:仮想マシンのプロパティに統合パッケージの時刻同期が含まれていない場合( たとえば 、これを実行することが強く推奨される場合があります)、ハードウェアの負荷に応じて時間量子化エラーが発生する場合があります。

これを視覚的に確認する方法は? プロパティで時刻同期を無効にして、仮想マシンに1つのコアの5%を割り当てます。 CPUをロードするベンチマークで実行し、 SuperPiを使用しました。 結果の違いがすぐに目立つだけでなく、プログラムが実行するのに18秒をアナウンスし、実際に10分以上待機し、通知領域で時計を開くと、秒針がその現実よりも数倍遅く動くことがわかります。私たちは皆慣れています。

エラーのサイズは何によって決まりますか? 仮想マシンに割り当てられたリソースとホストマシンの輻輳から。 割り当てられるリソースが少なくなり、仮想マシンまたはホストマシン、あるいはその両方がロードされるほど、エラーが大きくなります。



これは何を脅かすのですか?
この知識は他にどのように使用できますか?


たとえば、ホスティングでは、サービスの仕事でブレーキがかかった原因を理解できます。 これを行うには、最初にベンチマークで測定し、プログラムによって発行され、ストップウォッチで測定された結果を保存する必要があります(正確性をテストする間、すべてのサービスを無効にする必要があります)。 疑わしい遅延が発生した場合、同様のテストを再度実行できます。 結果のオプションは次のように解釈できます。

  1. ベンチマークとストップウォッチで表示される時間は変更されていません(+エラー)-サービスが原因であるか、顧客がそれらに負荷をかけている
  2. ベンチマークで示される時間は変化せず、ストップウォッチで測定される時間は増加しました-ホスティング事業者が仮想マシンのリソースを削減したか、ホストマシンの負荷が増加したため、リソースが足りません
  3. ベンチマークで示される時間が増加しました-とにかく、ストップウォッチが表示されるため、 ここで、仮想マシンのリソースが削減されたか、ホストマシンの負荷が増加したことは明らかです
結論の代わりに


これが失われた時間の物語です。 最後に、Microsoftの専門家がこのトピックの議論中に提供した、この問題に関心のある人々へのリンクも共有したいと思います。



All Articles