KVMで仮想な環境を作ってる最中ざんす。
メモリを4GB積んでるサーバーにメモリ1GBのVMを14個入れてるざんす。パンパンやで。
昨日の夜の状態はこんな感じだったのが
total used free shared buffers cached Mem: 3973584 3840392 133192 0 620 398812 -/+ buffers/cache: 3440960 532624 Swap: 8207356 84 8207272
何があったか知らないが一晩寝かせてことこと煮込まれたのか
total used free shared buffers cached Mem: 3973584 3845616 127968 0 8736 77744 -/+ buffers/cache: 3759136 214448 Swap: 8207356 576156 7631200
Swapが増えていた。
とりあえず14個のうちの2個のVMでセキュリティアップデートをしてみたらこんな具合になった。
total used free shared buffers cached Mem: 3973584 3866716 106868 0 480 103236 -/+ buffers/cache: 3763000 210584 Swap: 8207356 764956 7442400
もうさすがに無理がありすぎーる。ただ原理はさっぱり分からないけど、HDDガリガリ君状態においてもOSによってはそれほど重さを感じないものもあったりして、いったいどういう事が起きてるんだって疑問があったりする。いっそのこと作れる限りのVMを作ってみようかなぁとか思ったけど、解決に向かう訳でもなく、ただ単にSwapが増えていって重たくなるだけだろうからやめました。
OSによっては何故か軽く動いたりするってことを確認するのもVMは14個のままでも十分可能だろうし。
時間を有効に使おう~。ってことで基本的には積んでるのが4GBなんで、VMは2台だけstartさせておき、ホストサーバーも十分メモリが使えるように2GBは余裕を持たせておくという感じにしようかと思う。まぁいたって普通です。
それでは突然だけれど予定していたUnixBenchをやってみようと思う。2個のVMにはFreeBSD9とCentOS6を選んだ。それなりに比較できるし。
2個のVMを起動したあとのホストサーバーのメモリ状況はこんな感じ。
root@takeken:/home/takeken# free total used free shared buffers cached Mem: 3973584 1833424 2140160 0 76856 711352 -/+ buffers/cache: 1045216 2928368 Swap: 8207356 0 8207356
余裕っちだ。
まずはFreeBSDの場合はPerlを入れればOKなので、fetchでUnixBenchをゲットしてきて、pkg_add -r perlを入れたら実行可能となる。んでグラフィック関連の記述をコメントアウトしてmakeして実行ずら。
MinimalでインストールしたCentOSには割といろいろ入れる必要があり、perl-Time-HiRes、gcc、make、wgetやらをインストールしました。あとは同じくグラ関係をコメントアウトしてmakeして実行ずら。
仮想環境で試していた結果を踏まえると、大幅にCentOSの方がTotalでは数値が高いはずなので、FreeBSDのFile操作関連が異常に低い。わたしには未来が見える、未来は絶対なのです。予想どおりに結果はこんな感じだった。
FreeBSD9 Benchmark Run: Thu Dec 05 2013 19:47:05 - 20:15:27 unknown CPUs in system; running 1 parallel copy of tests Dhrystone 2 using register variables 15904978.9 lps (10.0 s, 7 samples) Double-Precision Whetstone 2688.3 MWIPS (10.0 s, 7 samples) Execl Throughput 3361.2 lps (29.9 s, 2 samples) File Copy 1024 bufsize 2000 maxblocks 13554.0 KBps (30.0 s, 2 samples) File Copy 256 bufsize 500 maxblocks 17820.0 KBps (30.0 s, 2 samples) File Copy 4096 bufsize 8000 maxblocks 12331.5 KBps (30.1 s, 2 samples) Pipe Throughput 1280179.6 lps (10.0 s, 7 samples) Pipe-based Context Switching 325652.7 lps (10.0 s, 7 samples) Process Creation 8554.8 lps (30.0 s, 2 samples) Shell Scripts (1 concurrent) 7070.6 lpm (60.0 s, 2 samples) Shell Scripts (8 concurrent) 956.0 lpm (60.1 s, 2 samples) System Call Overhead 718178.8 lps (10.0 s, 7 samples) System Benchmarks Index Values BASELINE RESULT INDEX Dhrystone 2 using register variables 116700.0 15904978.9 1362.9 Double-Precision Whetstone 55.0 2688.3 488.8 Execl Throughput 43.0 3361.2 781.7 File Copy 1024 bufsize 2000 maxblocks 3960.0 13554.0 34.2 File Copy 256 bufsize 500 maxblocks 1655.0 17820.0 107.7 File Copy 4096 bufsize 8000 maxblocks 5800.0 12331.5 21.3 Pipe Throughput 12440.0 1280179.6 1029.1 Pipe-based Context Switching 4000.0 325652.7 814.1 Process Creation 126.0 8554.8 678.9 Shell Scripts (1 concurrent) 42.4 7070.6 1667.6 Shell Scripts (8 concurrent) 6.0 956.0 1593.4 System Call Overhead 15000.0 718178.8 478.8 ======== System Benchmarks Index Score 419.3
CentOS6 Benchmark Run: 木 12月 05 2013 20:15:40 - 20:43:53 1 CPU in system; running 1 parallel copy of tests Dhrystone 2 using register variables 34201132.5 lps (10.0 s, 7 samples) Double-Precision Whetstone 3623.1 MWIPS (9.9 s, 7 samples) Execl Throughput 4021.4 lps (29.9 s, 2 samples) File Copy 1024 bufsize 2000 maxblocks 719670.6 KBps (30.0 s, 2 samples) File Copy 256 bufsize 500 maxblocks 207247.6 KBps (30.0 s, 2 samples) File Copy 4096 bufsize 8000 maxblocks 1998650.6 KBps (30.0 s, 2 samples) Pipe Throughput 1591432.9 lps (10.0 s, 7 samples) Pipe-based Context Switching 294792.7 lps (10.0 s, 7 samples) Process Creation 12291.8 lps (30.0 s, 2 samples) Shell Scripts (1 concurrent) 4962.3 lpm (60.0 s, 2 samples) Shell Scripts (8 concurrent) 656.0 lpm (60.1 s, 2 samples) System Call Overhead 2476097.6 lps (10.0 s, 7 samples) System Benchmarks Index Values BASELINE RESULT INDEX Dhrystone 2 using register variables 116700.0 34201132.5 2930.7 Double-Precision Whetstone 55.0 3623.1 658.7 Execl Throughput 43.0 4021.4 935.2 File Copy 1024 bufsize 2000 maxblocks 3960.0 719670.6 1817.4 File Copy 256 bufsize 500 maxblocks 1655.0 207247.6 1252.3 File Copy 4096 bufsize 8000 maxblocks 5800.0 1998650.6 3445.9 Pipe Throughput 12440.0 1591432.9 1279.3 Pipe-based Context Switching 4000.0 294792.7 737.0 Process Creation 126.0 12291.8 975.5 Shell Scripts (1 concurrent) 42.4 4962.3 1170.4 Shell Scripts (8 concurrent) 6.0 656.0 1093.4 System Call Overhead 15000.0 2476097.6 1650.7 ======== System Benchmarks Index Score 1318.1
数値の高さとかに関しては、昔にVMwareでホストサーバーを作ってテストした時と同じなのでとくに驚くとこではないけど、ホストサーバーが仮想であっても物理サーバーでも、VMの負荷テストの結果が変わらないってことは驚くべき点だった。完全仮想化ってのはこういうことなのかと。
うーむ、サーバーを作った動機が物理サーバーだとレスポンスがいいのかなぁと思ってここまでやってきたので、ここでとりあえずここがゴール地点だったりする(笑) さて、ここからどうしよっかな。
CPUとストレージは共有だから、その辺は絶対影響があるはずだけど、その辺りの検証はちょっと難しいだろうしなあ。せっかくだからOpenStackでも試してみようかなとか思ったり。