だから私は1つを購入したKVM vpsとそれをベンチし、既存のopenvz vpsと比較すると、openvz vpsよりも遅いことがわかりました。会社が異なるKVMコンテナ間でCPUキャッシュを共有するように制御できるかどうか疑問に思いますか?
kvmの場合:cat/proc/cpuinfo
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
stepping : 1
microcode : 0x1
cpu MHz : 2199.996
cache size : 4096 KB
bogomips : 4399.99
インテルのサイトで確認したところ、このE5プロセッサーには約30 MBのキャッシュがあります。
openvz vpsの場合:cat/proc/cpuinfo
vendor_id : GenuineIntel
cpu family : 6
model : 63
model name : Intel(R) Xeon(R) CPU E5-1660 v3 @ 3.00GHz
stepping : 2
microcode : 46
cpu MHz : 2999.918
cache size : 20480 KB
bogomips : 5999.83
キャッシュサイズは実際には20 MBです。
その後、私はCPUベンチをしました
kvmの場合:sysbench --test = cpu --cpu-max-prime = 20000 run
Maximum prime number checked in CPU test: 20000
Test execution summary:
total time: 30.1875s
total number of events: 10000
total time taken by event execution: 30.1860
per-request statistics:
min: 2.57ms
avg: 3.02ms
max: 4.13ms
approx. 95 percentile: 3.22ms
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 30.1860/0.00
openvzの場合:sysbench --test = cpu --cpu-max-prime = 20000 run
Maximum prime number checked in CPU test: 20000
Test execution summary:
total time: 26.5902s
total number of events: 10000
total time taken by event execution: 26.5889
per-request statistics:
min: 2.64ms
avg: 2.66ms
max: 3.17ms
approx. 95 percentile: 2.70ms
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 26.5889/0.00
ご覧のとおり、4秒の差があります。
SHORT ANSWER:OpenVZ CPUは、KVMで使用されるものよりシングルスレッドワークロードの方が高速です。その上、OpenVZはより軽い仮想化アプローチであるため、他のすべてのものは同じであり、KVMよりもいくらか高速です。
長い答え:KVM CPUは、2.2/2.9 GHzのベース/ターボクロックを備えたBroadwell Xeonです。OpenVZは、ベース/ターボクロックが3.0〜3.5 GHzのHaswell Xeon。HaswellとBroadwell IPC=は基本的に同じであることを考えると、最速のCPUがシングルスレッドベンチマークを獲得するのは当然のことです。
仮想化プラットフォームについて:
KVMは完全なハードウェア仮想化プラットフォーム(完全なHVM)ですが、OpenVZはコンテナー化を使用し、その他は準仮想化を使用しています。
基本的に仮想マシン/プラットフォーム全体をエミュレートする最初のアプローチには、非常に高い互換性という利点があります(元々仮想化を念頭に置いて作成されていないOS、つまりWindowsでも)。コストはオーバーヘッドを追加しますが、これは一部のワークロードでは非常に重要な場合があります。特定の準仮想化ドライバーをフルHVMセットアップに追加して、オーバーヘッドの一部を回避できます。
一方、準仮想化では、ゲストOSのコラボレーションが必要です(たとえば、 hypercalls の形式)。言い換えると、ゲストOSは特定のスーパーバイザ/準仮想化環境で実行するように適合させる必要があり、そのため準仮想化ホストは任意のゲストOSを実行できません。利点は、オーバーヘッドがはるかに低くなるため、パフォーマンスが向上することです。
単一のOSインスタンスしかないため、コンテナー化は準仮想化よりもオーバーヘッドが低くなります。他のすべてのVPSはjail/chroot-on-steroidであり、「メイン」OSのまったく同じカーネルを使用して、ユーザースペースのパーツを複製します。これは、同時にその主な長所と短所でもあります。ユーザー空間ツールを複製するだけなので、オーバーヘッドは非常に低くなります。一方、allVPSイメージには単一のカーネルが使用されています。
とにかく、フルHVM、準仮想化、およびコンテナー化の違いは、主にレイテンシとI/Oバウンドのワークロードに見られます。ベンチマークは純粋なCPUストレステストであるため、違いは主に(異なるハイパーバイザーではなく)異なるCPU構成に起因する可能性があります。