このような機会を与えてくださったzigsow様、intel様にまずお礼を申し上げます。
LGA1155系のXeon、E3-1290についてレビューを行っていきます。
いまいちXeonと言っても「クラスで一番すごいヤツ」くらいの印象しかなかったので、Sandyの最上位CPUなら現行最高性能マークしてもおかしくないんじゃ?くらいいのことを最初は思っていました。
そうなると6コア12スレッドで動くGulftownのハイエンドと比較せねばなるまい、とひとまずインテルの公式ページからスペックシートを拾って比較してみました。
表1.スペックシート比較
ECC、vProの対応や仮想化環境時のセキュリティを高めるintel TXTの搭載といったところを考えるとひょっとしてこれは仮想化を行うサーバ環境で使うことで一番輝くCPUなんじゃないか、と考えたので仮想化環境での性能比較を行っていこうと思います。
仮想化したOSは実用に耐えないんじゃないか、と考えていたので実際に調べてみた結果は驚くべきものでした。
今回使用した機材は以下の通りです。
■System
■MB
■memory
■VGA
■CPUFan
CPUファンについて書いたのはこのCPUがバルクオンリーでショップで買うとCPUファンと一緒に買わないといけないようなものだからです。
図1,2みたいな感じで入ってました。
また、MBにはC206というサーバ向けのチップセットを使ったものを選んでいます。
ECCに対応していたり、VT-dを有効にすることができたり、ネットワークインタフェースが2つ着いていたりといかにもサーバらしいつくりになっていますが、vPro対応ではないためAMTも使えませんし、このMBの搭載機能の一つにあるCPU内蔵GPUをブーストする機能もこのE3-1290はGPU内蔵していないので意味がありません。
それでは普通の環境でのパフォーマンスを調べていきます。
一番使い慣れたWindowsで見ていくことにします。
これがアイドル状態のCPUの状態です。ターボブースとが効いているのか、1.6GHz程度しか出ていません。
消費電力もその分落ちていて、およそグラフィックボードなどの大きく電気を使うものも挿しているのに80W程度です。
エクスペリエンスインデックスのベンチマークを行っている際のCPUの状態です。一気に4.0GHzにまで達しました。
このときの消費電力が150Wでした。約倍近くにまで上がっています。
そしてそのエクスペリエンスインデックスの結果は図5のようになります。
さすがにCPU関係の性能も限界までには至らないようです。
完全にグラフィックが足を引っ張っていますが、目的はサーバなので何も問題はありません。
加えて参考までにsuperpiでベンチマークを取ってみました。
どうやらこのプログラムで値を求めてもCPUの負荷にならないようで、CPU使用率は数%、ターボブーストの倍率も最低のままなので芳しくない結果となっています。
他の方法でも検証していますが、他は仮想化環境での比較を行っているためまとめて記載します。
■kvmセットアップ
次に仮想化環境での比較を行っていきます。
今回どんな環境でテストしたものか、と考えた結果Ubuntu Desktop(11.04)とvirt-managerとqemu-kvmでテストすることにしました。
Ubuntuのステーションでvirt-managerをインストール、apt-getでlibvirtあたりをインストールしています。
virt-managerはGUI上で簡単に仮想化したOSの操作ができるので実際に触って勉強する上ではとても便利です。
軽く仮想マシンを作成するまでの流れを追っていきます。
入れるOSはwindows 7 Ultimate x64です。
今回はSP1へのアップデートはしていません。
行った数々のベンチマークを無印とSP1での同ハードウェア構成で比較した際にほとんど違いがなかったからです。
基本的に多くのマザーボードでは初期設定で仮想化技術の実装をオフにしているので、有効化します。
kvmではインストールの際にVT-xの有効化が要求されます。
P8BWSの場合はこの項を変更します。
今回はDVDからインストールを行います。
メモリは2048MB,CPUは8、ストレージは20GBで作成しました。
ストレージ以外は後で設定し直すこともできます。
インストール中。
仮想化環境でDVDドライブを動かしているからか、普通のインストールに比べだいぶ遅いながらもインストールは進んでいます。
無事インストール完了です。この時点ではなぜか2コア2スレッドとして動いています。
USBのHDDケースやUSBメモリをハードウェアで追加しても認識せず、インターネットだけは使える状態です。
ベンチマークを行うための環境整備は仕方ないのでインターネット経由で行いました。
■性能比較
同様にエクスペリエンスインデックスを調べてみました。
グラフィック面はPCIのVGAをパススルーしてくれるわけでもないのでグラフィック絡みのスコアは悲惨なことになっています。
CPU内蔵GPUならあるいは、なのか他に動かすための方法があるのかはわかりません。
I/Oの仮想化を行うフレームワークのひとつにvirtioなんていうのもあるそうなのですが、windows用のドライバをダウンロードできるサイトが今閲覧できない状態になっているため確認できません。
他の部分においては大分スコアが落ちていますがそれでもなお高い性能を誇っているのは事実です。
しかしこの結果は2コア2スレッドを割り当てた時のパフォーマンスです。
今度はCPUの設定を最適化してもう一度測ってみました。
4コア8スレッドのすべてを割り当てます。
この設定でcinebenchでテストしたら1コア8スレッドのC2D T7700って認識されたんですけどなんなんでしょう?
エクスペリエンスインデックスの結果です。
CPUのパフォーマンスが普通にインストールしたときと並びました。
しかしメモリ、ディスクのパフォーマンスはこの状態では大分劣るようです。
次にcinebench R11.5での比較です。
今回はCPUのレビューということもあるのでCPUのみでの比較とします。
表2,仮想化環境とネイティブ環境でのcinebenchの比較
左から普通にインストールしたネイティブな環境、
初期設定の2コア2スレッドの環境、
設定しなおした1コア8スレッド?の環境です。
エクスペリエンスインデックスの結果通り、CPUのオーバーヘッドはほとんどないようです。
次にシステムドライブの性能比較を行いました。
Crystal Disk Mark 3.0.1 x64を用いて比較を行ったのですが、そこには想像もしない世界が広がっていました。
ネイティブ環境でのベンチマークです。
AHCIでインストール、SATA 6Gb/sのコネクタに挿した状態での結果です。
少々低すぎる気がします。システムドライブとして読んでるからでしょうか。
念のため0fil環境でもテストをしてみました。
writeの方が速いという奇妙な結果になっていますが、SATA 6Gb/s対応のSSDなら本来これくらいあって然るべきでしょう。
次に先ほどの設定のままの仮想環境で同じようにテストをしてみました。
システムドライブの形式はデフォルトのまま、IDEモードで使用しています。
Readがネイティブ環境でインストールしたときの0fillよりも速くなっています。
というよりもこのSSDの読み込み理論値をオーバーしています。
加えてReadとWriteの差が異常なことになっている上Randomの値はHDD並みで、明らかに普通の結果ではありません。
一体この結果は何を示しているのでしょうか。
インストールが異常に遅かったのはこのWriteの遅さも影響していたのでしょうか。
次に回線速度の比較も行いました。
特にパススルーの設定を個別で行っているわけでもないのでロスが発生してもおかしくないと思ったからです。
方法はBNRの上りと下りを10秒程度時間を置いてそれぞれ3回計測し、最も結果の良かったものを参照しています。
マンションタイプの光から計測を行っています。
表3,仮想化環境とネイティブ環境での回線速度の比較
ホストOSであるUbuntuでは上りで大きなロスが見られますが、仮想化環境とネイティブとの違いはほとんど見られません。
ほとんど誤差の域で収まっているというのはパススルーができてる、ということなのでしょうか。
E3-1290はVT-dに対応しているのでパススルー自体は出来るはずですが……。
最後に、クローンを使った性能実験を行ってみました。
仮想化のメリットとして新しいOSを楽に導入したり普通のファイルのようにOSをコピーペーストできることが挙げられます。
virt-managerでは対話形式でクローン化ができるため容易に行えます。
今回はレビューとしてwindows7をクローン化させてもらってます。
これで変わらないパフォーマンスを期待できるならシンクライアントで環境を多数提供することも問題なく行えますね。
テスト方法は動画のエンコードで。
4コア8スレッドをフルで使いたかったのですがクローン元が起動できなくなった(そういうものなのかも知れないけど)ので4つクローン立てようとしたら容量足りなくなったので3つでテストしました。
アプリケーションはAviUtlとx264 rev.2085。
25分のm2vデータに諸々のエフェクト(GPUを利用したプラグインは不使用)を挿してエンコードしています。
3台を同時起動しています。
それぞれに2スレッドを割り当ててる形です。
それぞれエンコードを行う直前の状態のイメージを使っているため、すぐに検証を行えます。
エンコード結果です。何の因果か3つ中2つmuxに失敗してますがとりあえず完了しています。
1台目 : 1時間24分 7.1秒
2台目 : 1時間24分20.8秒
3台目 : 1時間24分43.1秒
普通にインストールした環境で3プロセス立ち上げてテストしてみました。
こちらは4コア8スレッドをフルで使っているので確実に差が生まれるはずです。
1つ目 : 1時間 4分43.5秒
2つ目 : 1時間 5分24.5秒
3つ目 : 1時間 5分 8.1秒
両方とも手で順番にエンコードを開始したのでそれだけ差が生まれていますが、大体平均的な値が出ています。
20分のロスは仮想化環境でスレッド2つ宙に浮かせている分だと考えればそれほど差がないと思えるのでしょうか……。
■まとめ
ひとまずと言ったところで、まだメモリやwindows以外の環境でのテストなどもやってみたいところなのですが今回はここでまとめますと、
今の仮想化環境はかなりオーバーヘッドも少なくその高いパフォーマンスを活かすには十分なものだと思います。
問題はやはりネットワークやUSB、PCIなどの外部装置との連携にあるのでしょうか。
折角vProに対応しているのでXeonの機能を最大限に生かしたいのならvPro対応のマザーボードを使うのがいいと思います。
C20x系の市販されているマザーボードはどれも対応していません。メーカーもののサーバの場合は対応していることもあるそうですが。
小型サーバ向けのQ67のマザーボードだとECCは対応していないもののvProに対応しているので、それが選択肢に入ります。
幸いにして消費電力も一般PC用のグラフィックボード使って80W~150W程度で済んでいるので小型サーバとしての用途もありですね。
このCPU単体のコストはかなり大きいですが、コストパフォーマンスと電力計算のことを考えなければサーバ用CPUとして素晴らしいものだと思います。
最後に追記かつ宣伝で恐縮ですが、今回のレビューを行う上で思ったこと、そしてこのレビュー中に書くに及ばないことが9月15以降の日記(要会員登録)に書かれていますので、興味のある方はよろしくどうぞ。
書くに及ばないことを日記に移しているので大した内容ではありませんが。
2011 11/04追記。
前回インテル様から拝領して行ったレビューとまったく同じ環境をkvmで展開し、動作のテストを行ってみました。
果たしてatom5台の性能に太刀打ちできるのだろうか……?
テストの方法は、まずddを使い直接イメージ化したサーバのデータを単体で、全く同じ環境(4コア、メモリ1GB)に設定したkvmで起動し、cgiを読み込むStarmanを立ち上げ、そこにApache Benchmarkでテストを行います。
~$ ab -n 100 -c 100 http://192.168.122.92:5000/nicky.cgi
Server Software:
Server Hostname: 192.168.122.92
Server Port: 5000
Document Path: /nicky.cgi
Document Length: 34532 bytes
Concurrency Level: 100
Time taken for tests: 1.888 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 3469200 bytes
HTML transferred: 3453200 bytes
Requests per second: 52.96 [#/sec] (mean)
Time per request: 1888.289 [ms] (mean)
Time per request: 18.883 [ms] (mean, across all concurrent requests)
Transfer rate: 1794.16 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 12 9.9 20 21
Processing: 273 838 261.9 959 1226
Waiting: 271 836 261.7 957 1225
Total: 276 850 259.2 970 1246
Percentage of the requests served within a certain time (ms)
50% 970
66% 1002
75% 1032
80% 1045
90% 1097
95% 1181
98% 1214
99% 1246
100% 1246 (longest request)
以上の結果が出ました。
Apache Benchmarkを動かすと一気に動作倍率も上がり、フル稼働を始めます。
最初はかなり低めの倍率で動かしているためか、尻上がりな結果になっています。
1246msという結果が出ていますが、後半50%は270msくらいで処理をし切っているため、アクセスが集中してるときなんかはいい働きを見せそうです。
以下は前述のレビューからの抜粋ですが、5台を同時に動かしたときのパフォーマンスが以下の通りになります。
ほぼ倍のパフォーマンスを得ることができました。こちらは若干後半の方が早く処理が終わっているようですが、ほぼ直線と見てもいいでしょう。
なおこのとき、4コア8スレッドでも同様のテストを行ってみましたが結果は変わりませんでした。
次は4スレッド×2の環境やnginxによるリバースプロキシも使ったテストでもしてみようかと思います。
50% 1586
66% 1892
75% 2203
80% 2341
90% 2457
95% 2544
98% 2651
99% 2723
100% 2723 (longest request)
トム様さん
2011/11/15
私も、Xeonを使った動画編集というタイトルをぶち上げておきながら、レビューを上げてから一月半経って未だにどうしたらXeonのアドバンテージを活かせるんだろうかと頭悩ませています。
せめてサーバー向けの構成にでもしていたら面白いことが考えられたかもしれませんが…
それはそうと、
〉この設定でcinebenchでテストしたら1コア8スレッドのC2D T7700って認識されたんですけどなんなんでしょう?
の辺りとか面白いですねw
一体どんなCPU識別法で…?
誇りたまえさん
2011/11/17
足し続けてるので徐々に冗長になってしまっていますね。きれいなレイアウトを真似してみたいのですが。
今回は仮想化を使ったサーバ構成について考えてみたのですが、ハードウェア的に難しいことに気付かされました。
I/Oの支援を行うVT-dに対応しているSandy用のマザーボードはQ67(小型サーバ系)くらいしかなく、ECC対応のものを探すと結局ベンダが提供するようなサーバしかなくなってしまいます。
最終的にXenで落ち着こうかと思っていたのですが、結局今回の構成ではXenClientは立ち上がりませんでしたし。
最終的にはC20x系の市販マザーボードってECC使えてLANを多く積んでること以外にメリットあるのかなあ、と考えてしまう結果となってしまいました。
Cinebenchの件ですが、2コアに絞った時は『2C/2T @ 3.60GHz, QEMU Virtual CPU version 0』と仮想化してる表記になります。
ただ上の画像のような設定にすると『1C/8T @ 3.60GHz, Core 2 Duo CPU T7700』となってしまうんですね。
configurationもWestmereになってるはずなのに、おかしな話です。