みなさん、こんにちは、こんばんは、代表の前田です。
今回は、お仕事用のPCサーバを新しく自作したお話を書きます。
いきなりパーツリストを公開します。どーん!
CPU | Intel Core i7 7820X (8コア) |
---|---|
マザーボード | ASRock X299M Extreme4 |
メモリー | DDR4 8GB x4 (合計32GB) |
ストレージ | Samsung SSD 970EVO 500GB x4 |
CPUクーラー | Noctua NH-U12S |
拡張カード | ASUS HYPER M.2 x16 CARD |
ケース | COOLER MASTER MasterBox Q300L |
あとグラボとかケースとかもろもろで総額25万円ほどでした。
今回の目玉は 1枚2万円もする “高速SSD” を4枚用意した点で、一般的なPC操作でネックとなる入出力処理を爆速化させる狙いです!
経緯
システム開発のお仕事をやっていると、サーバをはじめ各エンジニアごとの開発環境や、お客様のPC環境に合わせた検証環境など、沢山のPCを動かす必要性が出てきます。
そのために毎回パソコンを購入してセットアップして、とやっているととても大変なので、仮想化技術を活用して1台のPCの中に仮想的に複数のPCを収容して稼働させるようなことをやっています。
仮想化技術とは、PCの中にソフトウェア的に別のPCをエミュレーションするような仕組みのことです。1台の超ハイスペックPCがあれば、その中に複数のエミュレーションPCを稼働させることが出来ます。
ネオジニアでは2013年に作ったハイスペックPCを仮想化サーバとしてフル活用してきましたが、そろそろ型落ちでリニューアルの時期を迎えていました。
また、最近流行りの機械学習(ディープラーニング)を活用したシステム開発のお仕事が来ていましたので、丁度いい機会ということで新しく仮想マシンサーバを立てて、今のサーバは機械学習用に流用しようという計画が思い浮かびました。
組み立て
というわけで、組み立てていきましょう。まず最初は CPU の取り付け。
リテールクーラーが付いてませんので、価格.com でよく冷えると評価の高かった NH-U12S を選定。思ったよりデカかったのでケースに収まるか心配でした。。。
メモリは 旧サーバと同じく 32GB ですが、特にこの容量で困っていないので据え置きとしました。32GBもあればとりあえず十分です。
ストレージには、冒頭で紹介した通りCPU直結型(NVMe と言います)の高速SSDを4つも搭載しました。
これで RAID5 を組んで耐障害性を確保します。RAIDとは、一台壊れてもデータを損失せず、継続して稼働できる技術です。
まずは SSDを試したかったので、最低限のパーツで仮組みして、電源端子をショートさせてパワーオン!
BOISの設定を変更して、無事に SSD が4枚認識できました。
さっそくパフォーマンスを測定すると、一台あたり平均 2600MB/sec ほどでした。これがどれぐらいの速度かというと、2.6GB のファイルなら 1秒で読み出せる、ということです。例えば 2時間の映画が収録された一般的な DVD なら最大4.7GBなので、もしこのSSDに保存してあれば2秒未満で2時間分を読み出せることになります。
なんともエゲツナイ数字です笑
これは CPU直結型だからこその速度で、通常のSSDであれば 500MB/sec でればいいとこ、現実的には300MB/sec ぐらいですので、約9倍ぐらいの差はあると思います。
しかしながらスクリーンショットを見てもらえれば分かるように、2枚は 2700MB で残りの2枚は 2500MB というように、接続箇所によって差があるようでした。
このマザーボードには NVMe SSD を接続するためのソケットがオンボードで二つ付いているので、排熱を考慮して拡張カードには二つだけ挿すようにしていましたが、それだとオンボードに挿した二枚のパフォーマンスが何故か少し低いということのようです。
拡張カードに4枚とも挿せば、4枚とも 2700MB/sec になりました。CPU直結のはずなのに、接続ポートの差でパフォーマンスか変わるなんて思ってもみなかったので、実は内部で伝送ロスがあったり、何らかの変換チップが入っているのかも知れません。
余談ですが、家庭のインターネット接続やスマホの転送速度で「○○メガ!」とか言うことがありますよね。例えばLTEのスマホなら 30メガ ぐらいでしょうか、その場合 30Mbps と表記して、1秒間に 30Mビット転送できる、という意味になります。SSDやUSB周辺機器の場合の転送速度とは実は単位が違っていて、b が小文字だと「ビット」を意味し「バイト」の8分の1になります。換算すると 30Mbps = 3.75MB/sec となり、数字から感じる速度よりも実は一回りほど遅いんですよね。
起動ディスク
起動ディスクはUSBメモリです。
こちらも二枚挿してRAIDにします。USBメモリから起動すると、読み込みが遅いので起動速度は遅くなりますが、サーバなので頻繁に再起動することもないので、あまり気になりません。
メリットとしては、こうすることでSSDは完全にデータ用となり、OSから独立した運用が可能になります。例えばSSDを丸ごと取り外して、別のマシンのストレージと入れ換えたとしても、起動ディスクには何の影響もないので通常通り起動して利用可能です。そうでなければ困るシーンがあり、一般的なPCのようにSSDに普通にOSをインストールしてしまうと、そのSSDを別のマシンに持っていくと起動ディスクが無くなり、起動することが出来なくなってしまいます。
OSは Ubuntu Server 18.04 にしました。(何故か日本語版でインストールしようとすると途中で止まってしまうバグがあるようで、英語版でインストールしました)
さて、OSのインストールが終わって、NVMe SSD を RAID5 にして、パフォーマンスを測定してみると 4257 MB/sec !! なんと3秒間に 12GB も読み込んでいます。
これは RAID 技術のおかげで複数の SSD をひとまとめにして取り扱うことで、並列処理で読み出し出来るようになるためです。
めちゃくちゃ速いです!!快適で無い訳がない!!
このマシン上に仮想PCを作って Windows 10 を動かしてみると、速すぎて起動画面がほぼ見えず、再起動しても一瞬でログオン画面が出てきます。笑
旧サーバは別途GPUを搭載して機械学習用にジョブチェンジ!となった訳ですがそのお話はまた後日!