ad1

2020年10月6日火曜日

SPEC のベンチマーク情報を利用した CPU 世代間性能比較

IT インフラのアセスメントなどの後、次期のサーバー選定時に比較参考となる CPU の世代間・モデル間の性能差がどのくらいあるのかよく聞かれるのですが、
私が良く使う SPEC (Standard Performance Evaluation Corporation) のベンチマークスコアを利用した比較方法をご紹介します。

この方法を10数年前から利用していますが、実際のシステムの移行前後の CPU 利用率でみると割と現実的な数値が確認出来ています。
SPEC からダウンロードした CSV のスコア値を整形し Excel などで簡易のサイジングシートを作る事で比較が容易になります。

私は以下の様な形で Excel シートのプルダウンで CPU のモデルを選ぶとそれぞれのスコア比較を行い、ホスト台数や利用率の前提を式に追加すればクラスタとしてのリソースがどれくらいあるかを可視化する事が出来る様にしています。
※ あくまで私個人の比較用の手法なので公式のサイジング方法ではありません。参考情報としてご活用ください。


SPEC (Standard Performance Evaluation Corporation) について

SPEC (Standard Performance Evaluation Corporation) は様々なサーバー、ストレージ、アプリケーションのベンチマークテスト結果を公開、またベンチマークテストのためのツールを提供している非営利団体です。

様々なスコアが公開されていますが、CPU の性能比較の観点では、「SPEC CPU 2017」 と 「SPEC CPU 2006」が非常に多くの機器のスコアで比較できるのでこれらを利用します。

それぞれのベンチマークの結果にも複数スコアがありますが、仮想化統合などで多くの仮想マシンの処理を集める用途であれば整数演算のスループット(SPECint_rate) が指標として適切と思われるので私はそれを利用しています。
  • SPEC CPU20xx Integer Speed (SPECint) : 整数演算の処理速度
  • SPEC CPU20xx Integer Rate (SPECint_rate) : 整数演算のスループット
  • SPEC CPU20xx Floating Point Speed (SPECfp) : 浮動小数点演算の処理速度
  • SPEC CPU20xx Floating Point Rate (SPECfp_rate) : 浮動小数点演算のスループット

SPECint2017 と SPECint2006 のスコアの入手

私は同じサーバーブランドでスコアが登録されている Dell の PowerEdge シリーズの結果を利用しています。
※ 特定ブランドで揃えた方が後々の正規表現を利用した整形でも楽です。

スコアは以下のサーチメニューの URL から細かい条件でフィルタ出来ます。

Dell の PowerEdge で絞り込む場合は上記の Simple Search から「System」"Matches "「PowerEdge 」とすれば PowerEdge で測ったスコアが検索できます(SPECint2006 で 2,200 件近く、SPECint2017 で 1,000 件近いスコアが出力されます)。


出力された結果を CSV 形式でダウンロードします(Dowonload as CSV をクリック)


ダウンロードした CSV を開くと以下の様なフォーマットとなり、私はこれを整形して、CPU のモデル、動作クロック数、コア数、ソケット数 と Baseline スコアを整理して比較の元としています。
※ Baseline にしている理由は Result が 0 のものも多数あるためです。この辺りは個人的な考えなので参考まで。

System 列にはサーバーモデル、CPU モデル、動作クロック数が記載されていますのでこれを適宜正規表現などを利用して列に分けるように整形します。ここは型が決まっている様で決まっていないので面倒ですし、動作クロック数が間違っている事が多々あるので正確な数値は Intel 社のサイトから各世代・各 CPU モデルの仕様比較が出力できるので公式情報を確認します。

面倒かもしれませんが、私は VSCode や秀丸など正規表現で置換できるエディタを使って整形しています。
また、 SPEC 上に登録されている記載が全て同じルールで掲載されているわけではなく、たまにイレギュラーもありますので、それらは個別に修正します。量が多い場合は Excel のテーブル形式のフィルタやピボットテーブルなど利用すると確認が捗ります。


再度 CSV → Excel にデータを貼り付けると以下の様なシートにまとまります。
まとめると分かりますが、同じ CPU モデルでもソケット数が違ったり、スコアも微妙に違います。
私は CPU 毎(ソケット毎)の Baseline の数値の平均値をピボットテーブルなど算出して利用します。


SPECint2017 と SPECint2006 のスコアの調整

SPECint2017 と SPECint2006 ではベンチマークに利用するツールのバージョンが異なるため、スコアの値も異なり、過去の CPU のレポートは SPECint2017 には無いものが大半です。

また、同じ CPU でも SPECint2017 と SPECint2006 では基準が異なるため、数値としてだいたい 9~10 倍のスコアの差があり、私は同じ基準でスコア比較するために SPECint2017 と SPECint2006 の両方にスコアのある Skylake 世代の CPU 搭載サーバなどでその差(比率)の平均を確認し、SPECint2017 のスコアを控えめに約 9 倍して大体のスコアを揃えています

SPECint2017_rate のスコア


SPECint2006_rate のスコア

CPU モデル毎にピボットテーブルでまとめると、微妙にクロック数が違ったり、登録されているコア数などが異なっているのでそれらは手修正してください。


数値は同じ CPU であればだいたいどのメーカーのハードウェアでも近い数値なので細かいところはこだわらずに比較条件がそろっていれば良いかと思います。

CPU 性能比較シートの完成

最終的には以下の様なピボットテーブルにまとめ、

2006 と 2017 の数値を x9 して別テーブルにて計算して、選んだ CPU モデルに応じて Index と Match 関数で SPEC のスコアを引いてサイジング比較できるようにします。

シートを分けて余計な情報をマスクすれば完成です。
CPU のコストや消費電力(TDP)の項目があるとさらに細かな分析が可能になります。
※ CPU のコストは各メーカーが公開しているサーバー構成ガイドなどから集められます。



IT インフラの更改時にどのくらいのリソースを用意するべきか、アセスメントなどの結果をもとによりリーズナブルな機器選定に役立つと思いますので参考にしていただけると幸いです。






0 件のコメント:

コメントを投稿

過去30日でアクセスの多い投稿