3

実際のハードウェアとは対照的に、仮想マシンで実行されるベンチマークはどの程度信頼できますか?

特定の状況を分析してみましょう。最近のコード変更によるパフォーマンスへの影響をベンチマークしたいとします。簡単にするために、ワークロードは完全にCPUバウンドであると想定します(ただし、IOバウンドおよび混合ワークロードも重要です)。マシンがVirtualBoxで実行されていると仮定します。これは、最適なマシンだからです;)

元のコードと新しいコードを測定し、新しいコードが5%高速であったと仮定します(仮想マシンでベンチマークした場合)。実際のハードウェアでも少なくとも5%高速になると安全に主張できますか?

そしてさらに重要な部分は、新しいコードが3%遅いと仮定します。実際のハードウェアでは3%以下遅くなるが、間違いなく3%以上遅くなることを完全に確信できますか?

更新:私が最も興味を持っているのは、戦場での結果です。つまり。VMで10%遅いコードが、実際のアイアンで5%速く実行された場合、またはその逆の場合を目撃できますか?または、常に一貫性がありましたか(つまり、VMで高速/低速の場合、実際のマシンでは常に比例して高速/低速です)?これまでのところ、鉱山は多かれ少なかれ一貫しています。少なくとも、常に同じ方向に進んでいます。

4

4 に答える 4

1

VM での結果と VM で実行されていない結果を比較している場合、結果は信頼できません。

一方、両方のテストが同じ環境で実行された場合、結果は信頼できます。どちらのテストも VM 内では遅くなりますが、それでも違いは信頼できます。

于 2008-12-26T18:07:34.753 に答える
1

Fair Witness プリンシパルを使用して考慮されたすべてのことを主張できるのは、VM でのアプリケーションのパフォーマンスだけです。それが実際に測定しているものだからです。

ここで、環境に基づいて観察したことを推定したい場合は、ネイティブ VM を実行していると仮定すると (エミュレートされた VM とは対照的に、x86 の PPC など)、CPU バウンド タスクは CPU バウンド タスクです。 CPU が重い作業のほとんどを行っているためです。

おそらく、VM とネイティブ アプリケーションを区別できるいくつかのメモリ管理の問題が関係している可能性がありますが、メモリが適切にマップされると、VM とネイティブ マシンの間で CPU バウンドの実行時間に劇的な違いがあるとは思えません。 .

そのため、VM で実行した場合のアプリケーションのインスタンス間でのパフォーマンスの変化は、ネイティブ マシンで実行した場合に特に CPU 負荷の高いアプリケーションで同様のパフォーマンスの変化をもたらすことを直感するのは公正だと思います。

ただし、正しい環境で実際に自分でテストしない限り、「知っている」とは言えないと思います。

于 2008-12-26T18:15:19.653 に答える
1

このための VM について特別なことは何もないと思います。「実際の」マシンでも、仮想メモリを使用して実行し、CPU を他のプロセスと共有しているため、同様の考慮事項が適用されます。

于 2008-12-26T18:55:13.753 に答える
0

テスト環境と本番環境の間で信頼できるパフォーマンス結果を得る唯一の方法は、同一のハードウェアとソフトウェアを実行することです。ハードウェア バージョンとソフトウェア パッチ レベルに至るまで。

そうしないと、かなりの時間を無駄にしています。

例として、一部のメモリ スティックは他のメモリ スティックよりも優れたパフォーマンスを発揮します。これは、他の点では同一のボックスで 5% のスループットの違いを簡単に説明できます。

ソフトウェアに関しては、VM ソフトウェアは常に影響を与えます。また、非常に多くの異なる要因に応じて、特定の操作が他の操作よりも影響を受ける可能性があるため、それらを比較する方法はありません。

于 2008-12-26T18:43:52.030 に答える