3

SO には、開発とテストの両方における仮想化の長所と短所について多くの質問があります。

私の質問は微妙に異なります。仮想化が一般的な世界では、仮想化環境に展開される可能性のあるソフトウェアを作成する際に、プログラマーが考慮すべきことは何ですか? 私の最初の考えのいくつかは次のとおりです。

  1. アプリケーションの別のインスタンスが実行されているかどうかの検出
  2. ハードウェアとの通信 (物理/仮想)
  3. リソース スロットリング (シングル CPU VM で実行されるマルチコア CPU 用に作成されたアプリ)

他に何か?

4

2 に答える 2

3

基本のほとんどは、3 つの広範なポイントでカバーされています。気をつけて:

  • ハードウェア通信関連の問題。ディスク アクセス速度は大きく異なります (極端に極端に速い場合もあります。ディスク書き込み中に 3 日間シャットダウンされた VM を想像してみてください....)。異常な応答でネットワーク アクセスが中断される場合がある
  • ファンシーポインター演算。それを避けるようにしてください
  • 非常にまれな低レベル/アセンブリ命令への過度の依存
  • マシン クロックへの依存。クロックと時間間隔に対して行っている呼び出しは、VM で実行しているときに定期的に異常な値を返す可能性があることに注意してください。
  • シングル CPU アプリは、複数の CPU マシンで実行されていることに気付く場合があり、ワーク スティーリングのような奇妙なことを行います。
  • まれなケースと異常な障害モードは、はるかに一般的です。仮想マシンのように、実マシンでの通信中にネットワーク カードが消えてしまうことを心配する必要はないかもしれません。
  • リソース (メモリ、ディスクなど) の手動管理。作業が自動化されればされるほど、仮想環境での処理が向上する可能性があります。たとえば、C でアプリケーションを作成する代わりに、メモリ管理型の言語/環境を使用した方がよい場合があります。
于 2010-12-13T05:51:24.800 に答える
1

私の経験では、実際に気にする必要があるのは2、3だけです。

  • CPU 時間の不足 (タイムアウトの設定が厳しすぎる) が原因でアプリケーションが失敗することはありません。

  • 優先度の低い常時実行プロセスを使用してバックグラウンドでタスクを実行しないでください

  • 時計が不規則に動くことがあります

  • システム負荷についてOSが言うことを信用しないでください

他のほとんどの問題は、アプリケーションではなく、バーチャライザー、ホスト OS、または優先するシステム管理者によって処理されるべきです:-)

于 2010-12-13T11:59:22.607 に答える