2016年4月5日火曜日

ハイスペックPCやWS構成のサイジングについて

はじめに

今回の話題はいつもに増して難易度が高めです。
前回の記事を読んでいることを前提に進めます。

要点

システム各部の負荷の比率を読み解かないと

無駄が多い環境になる。


①計算種別の基本

CPUGPU等の計算機は、
直列的に計算を実行するスカラ演算
並列的に計算を実行するベクトル演算
の2つが存在します。

スカラ演算は、CPUが得意
(並列度が高い)ベクトル演算は、GPUが得意[GPGPU/CUDA/OpenCL]
(並列度が低い)ベクトル演算は、CPUが得意[MMX/SSE/AVX]

そして、GPUのプログラミングは難易度が高く、普及しているソフトウェアは
ゲームばメインで他のソフトウェア対応は発展途上です。


②実環境で計算時間とI/O待ち時間の比率を読み解く

最初に必要な情報収集は、
どのプログラムが
どのファイルにアクセスしていて
具体的にどの位のリソースを消費しているか

 ということです。

簡易的に確認するには、リソースモニターで確認できます。

同じWindowsバンドルツールのタスクマネージャーより詳細に確認する
ことが出来ます。


GPUのリソース状況はNVIDIA系なら”ELSA System Graph”あたりが良いでしょう。



リソースモニターより詳細に情報を確認する場合は、SystemExplorer
が良いです。


③計算の複雑性、並列度、I/O待ち時間の比率を分析する

ここまでで、

CPUでは、『少コアで高負荷なのか』、『多コアで高負荷なのか』が判別出来
 ているはずです。

また、

GPUでも、『周波数の動き』や、『メモリの使用量』、『GPU全体の使用率』を
比較することが出来ているはずです。

全ての情報が揃うと、

『 CPUコア数 × CPU周波数 ≒ 処理速度 』

という理想値に近い値を出すために必要なハードウェア構成が予測できます。




④最後の落とし穴 メインメモリのI/O

SSDやメモリの搭載量が重要であることは当然なので省略します。

上記が満たされているにもかかわらず、多コア構成では想定通りの性能が
出ないことがあります。

それが、メインメモリのI/O上限です。

例えば、データベースの用途でメモリに128GBキャッシュが必要だけど、
計算でよく使うのは32GB程度。
という状況であれば、メインメモリのI/Oに気を配る必要がなく、
コア数の多いCPUが有利です。

一方、動画編集用途ではキャッシュしているデータは全てCPUで消費して、
計算が終わり次第、次のシーンのデータを読み込む。
という事はよくあります。

これが、多コアのCPUでソフトウェアも並列性が高いにもかかわらず想定した
性能が出ない現象に陥りやすいものなのです。


一般的なPC(i3~i7)で使われているメモリの帯域は
DDR3の場合、25.6GB/s
DDR4の場合、34.0GB/s
となっています。

i7 の場合、4つの物理コアで論理的に8つ論理コアを実装しているため、
完全に並列化された処理では1論理コアあたり 4GB/s 前後の帯域が見込めます。

i7 Extreme 5960x の場合、DDR4 クアッドチャネル対応でメモリの帯域は
68.0GB/s あります。

そして、8つの物理コアで16の論理コアを実装しているため、
1論理コアあたりの帯域は 4.25 GB/s の帯域が見込めます。

では、Xeonで更に上位のモデルはどうでしょう。

Intel® Core™ i7-5960X Processor Extreme Edition (6コア 20M Cache, 3.00 GHz)
Intel® Xeon® Processor E5-2667 v4 (8コア, 25M Cache, 3.20 GHz)
Intel® Xeon® Processor E5-2687W v4 (12コア, 30M Cache, 3.00 GHz)

E5-2667の場合、4.25GB/s
 E5-2687の場合、2.83GB/s

 Xeonは、処理能力に加えて信頼性と、高いメモリ上限あるため価格差も大きいです。
i7 5960xが12万円程度であるのに対し、Xeon上位モデルは20万円を超える金額に
 なるので金額を超えるメリットが望めるかをよく検討して購入しましょう。

2016年3月30日水曜日

XeonとCore i7の違い

はじめに


 筆者はサーバエンジニアなのでXeonをよく扱っています。
 
 今回取り上げるのは、
 一般的なハイスペックPCで使用するCore i7
 ワークステーションやサーバで使用するXeon
 
 具体的に何が違うの?
 
 という観点で話をします。
 
 ※注意
  一般的なノートPC用のi7はデスクトップ用のi5と大して変わりません。
  今回はデスクトップPC用のi7ついての話題です。




Core i7 の特徴

 Core i7 はヘビーなゲーム用途で最もコストパフォマンスの高いCPUです。
 
 
 これは、大きく5つ要因があります。
 
 ①予算30万円未満のPCがメインターゲットであること。
 ②メモリの搭載量は、一般的なゲームなら32GB以内で十分であること。
 ③大半の重いゲームでも、CPU利用率が4コアを超えて専有するようなゲームが
  ないこと。
 ④ゲームで最も計算量が多いはグラフィック処理であり、高解像度・高FPSを
  目指すならGPU への追加投資が効果的であること。 
  標準的なゲームPC構成では、
  CPUとGPUの合計予算が5万円程度の場合(2:3)の比率
  CPUとGPUの合計予算が10万円程度の場合(3:7)の比率
  が一般的です。
  
  これに、ゲームタイトルの推奨環境(CPU/GPU)を参考に構成を考えましょう。

 ⑤Core i7でゲームの読み込みを高速化することや、普通のPC操作を快適に
  するには、CPUに掛ける予算の7割~9割程度の金額を目安に良いSSD
  を導入しましょう。
  ※2016年3月現在、Samsung sm951-NVMe が最もコストパフォーマンスの良い
   SSDです。




Xeon の特徴

Xeon は、高信頼性/大容量メモリ/大容量キャッシュ/高バス幅などが求められる
場合に初めて効果を発揮します。

1.高信頼性

 一般的にメモリが大容量になると、それだけデータの破損する確率が高まります。
 万一データが壊れた場合、Core i7 では一切修復することが出来ません。
 
 一方、 Xeon ではメモリエラーを検出し訂正することが出来る機能があり、
 ECC や registered と呼ばれる機能を備えたメモリと組み合わせることで
 信頼性を向上しています。


2.大容量メモリ

 Core i7 と Xeon の最大メモリ容量を比較します。
 最大メモリ容量はCPU1個あたりのものです。
 デュアルCPUでは、2倍
 クアッドCPUでは、4倍
 システムに搭載し、OSが認識することが出来ます。
 
 Core i7
 2014年リリースのCore i7 4790k は 32GB
 2014年リリースのCore i7 5960x は 64GB
 2015年リリースのCore i7 6700k は 64GB
 
 Xeon E3 (シングルCPU)
 2013年リリースのE3-1200 v3 は 32GB
 2015年リリースのE3-1200 v4 は 32GB
 
 Xeon E5 (デュアルCPU)
 2014年リリースのE5-2600 v2 は 384 GB
 2014年リリースのE5-2600 v3 は 768 GB
 
 Xeon E7 (クアッドCPU)
 2014年リリースのE7-8000 v2 は 1536 GB
 
 最新のi7では64GBまで搭載できますが、
 パーツの相性問題や信頼性問題の懸念が
 出てきます。
 
 メモリの使用量が32GBを超える場合は、
 Xeon E5 の購入を検討しましょう。



3.大容量キャッシュ

 Core iシリーズのCPUにはGPUが内蔵されています。
 Xeon には GPU がありません。
 
 GPU を使用しない分、CPUコア、またはCPUキャッシュを配置することで
 CPU性能を高めています。
 CPUキャッシュが大容量であるほど、メモリにアクセスする確率が低減し、
 結果的に処理速度が高まります。
 
 Core i7 と Xeon の最大キャッシュ容量を比較します。
 Core i7 は最大 8MB
 Core i7 Extremeは最大 20MB
 Xeon は最大 45MB

4.高バス幅

 Core i シリーズとXeonの処理速度に直結する最大の違いはバス幅の違いです。
 最新のCore i7 / Core i7 Extreme/ Xeon
 以下の3つのブロック図で比較してみましょう。
 
 
 Core i7対応チップセット z170
 http://images.anandtech.com/doci/9483/Z170%20Platform.jpg
 
 Core i7 Extreme対応チップセット x99
 http://www.intel.co.jp/content/dam/www/public/us/en/images/diagrams/x99-chipset-block-diagram.jpg
 
 XeonデュアルCPU対応チップセット C612
 http://www.intel.co.jp/content/dam/www/public/us/en/images/embedded/RWD/grantley-diagram-16x9.png
 
 メモリの同時アクセス速度は
 z170の場合、34GB/sec
 x99の場合、68GB/sec
 C612の場合、136GB/sec
 
 GPUやSATAより高速なSSDで使用するPCI-Expressスロットの帯域を比較すると
 z170を使用する場合、CPU直結で接続できるPCI-Express x16のデバイスは1個まで
 x99を使用する場合、CPU直結で接続できるPCI-Express x16のデバイスは2個まで
 C612を使用する場合、CPU直結で接続できるPCI-Express x16のデバイスは4個まで
 
 となっています。
  

Xeon が必要になるパターン


 1.長時間の高負荷でも信頼性が求められるマシンが必要。
 2.処理対象となるデータの絶対量が非常に多く、64GB以上のメモリが必要。
 3.処理対象となるデータの絶対量が非常に多く、ディスク I/O 要求が厳し過ぎて
   PCI-Express 接続 SSD が複数必要。
 4.GPU処理(特にVRAM使用量とメインメモリアクセス)が多く、GPUが3個以上必要。

 いずれかのパターンに1つ以上当てはまる場合は、Xeonが効果的です。