画像:NEC(Express5800/R120b-2)
サーバーエンジニア(インフラエンジニア)の仕事の一つとして、サーバーのサイジングがある。
このサーバーのサイジングでしばしばお世話になるなるのは、「SPEC」の性能指標(ベンチマーク指標)だ。
SPECはそのまま「スペック」と読む。
Contents
SPECとは?非営利団体の「CPU性能測定屋さん」のこと。
SPECとは、Standard Performance Evaluation Corporation(標準性能評価法人)のこと。ハードウェアのベンチマーク指標を提供する団体である。
SPECは儲けを目的としない非営利の団体につき、会員企業の資金拠出によって運営されている。
外資の会員企業では
- デル(DELL)
- ヒューレット・パッカード(HP)
などがあり、国内の会員企業では
- 富士通(Fujitsu)
- 日立(Hitachi)
- 日本電気(NEC)
などがある。
いずれも著名なハードウェアベンダーだ。
Acer Inc. * Action S.A. * Advanced Micro Devices * Amazon Web Services, Inc. * Apple Inc. * ARM * ASUSTek Computer Inc. * Avere Systems * Bull SAS * Cavium Inc. * Ciara Technologies Inc. * Cisco Systems, Inc. * Dell, Inc. * Digital Ocean * E4 Computer Engineering SPA * Fujitsu * Gartner, Inc. * Google Inc. * Guizhou Huaxintong Semiconductor Technology Co. Ltd * Hitachi Data Systems * Hitachi Ltd. * Hewlett Packard Enterprise * HP Inc. * Huawei Technologies Co. Ltd. * IBM * Inspur Corporation * Intel * Lenovo * M Computers s.r.o. * Microsoft * NEC - Japan * NetApp * New H3C Technologies Co., Ltd. * NVIDIA * Oracle * OVH SAS * Primary Data * Principled Technologies * Pure Storage * Qualcomm Technologies Inc. * Quanta Computer Inc. * Red Hat * Samsung * SAP AG * Seagate * Sugon * Super Micro Computer, Inc. * SUSE * Taobao (China) Software Co. Ltd. * Unisys * Veritas Technologies * Via Technologies * VMware * WekaIO *
SPECのベンチマーク指標は「クロック数×コア数」の試算よりも正確
1900年台以前では「クロック数×コア数」で得られる性能基礎数値がCPUのサイジングで多用されていたものの、2000年台以降はSPECによる性能基礎数値が使われ始めるようになった。
というのも、CPUのモデルが異なれば単純にクロック数やコア数では処理能力を比較できないためだ。
「クロック数×コア数」の性能基礎数値で勝っているにも関わらず、実際に計測されたスループット(仕事量)では負けてしまうCPUモデルの事例などがあったりする。
「クロック数×コア数」でCPUサイジングをする時代はもはや終わってしまった。
SPECのベンチマーク指標はたくさんある
SPECは様々なベンチマーク指標を公表している。
サーバーエンジニアは後述する「Specint2006(処理速度)」「Specint_rate2006(スループット)」の2つを見ておけばだいたい大丈夫(だと思う)。
以下にベンチマーク指標の参考例をWikipediaより引用する。
SPEC CPU2006:CPU、メモリ、コンパイラの総合的な性能評価
CINT2006 ("SPECint"):整数演算を評価する。コンパイラ、インタープリタ、ワードプロセッサ、チェスプログラムなどを実行。
CFP2006 ("SPECfp"):浮動小数点数演算を評価する。物理現象のシミュレーション、三次元グラフィックス、画像処理、化学計算などを実行。
SPECweb2005:PHPおよび(または)JSPの性能評価
SPECviewperf:OpenGL三次元グラフィックスシステムの性能評価。実アプリケーションの各種レンダリングタスクを実行。
SPECapc:いくつかの一般的な三次元指向のアプリケーションの性能評価
SPEC HPC2002:高性能並列コンピューティングシステムの性能を気象予測や化学計算のプログラムで評価
SPEC OMP V3.1:OpenMPベースのアプリケーションの性能評価
SPECjvm98:Java仮想マシンの動作するJavaクライアントシステムの性能評価
SPECjAppServer2004:Java 2 Enterprise Edition (J2EE)ベースのアプリケーションサーバを中心とした多層システムの性能を評価するベンチマーク
SPECjbb2005:三層クライアント・サーバシステムをエミュレートしサーバサイドJavaの性能を評価(主に中間層の評価)
SPEC MAIL2001:メールサーバの性能評価。SMTPとPOPプロトコルを実行。
SPEC SFS97_R1:NFSファイルサーバのスループットと応答時間の測定
SPEC CPU2006の「int」「fp」「rate」による分類
上述の「SPEC CPU2006」は以下の4つの観点からさらに細かく分類することができる(小計8個)。
- 測定の対象(処理速度/スループット)
- 実行プログラムの個数(12種類/17種類)
- 演算方法(整数演算/浮動小数点演算)
- コンパイラの最適化(非最適化(標準)/最適化)
表は以下の通り。
ベンチマーク指標 | 測定の対象 | 実行プログラムの個数 | 演算方法 | コンパイラの最適化 |
SPECint2006 | 処理速度 | 12種類 | 整数演算 | 最適化 |
SPECint_base2006 | 処理速度 | 12種類 | 整数演算 | 非最適化(標準) |
SPECint_rate2006 | スループット | 12種類 | 整数演算 | 最適化 |
SPECint_rate_base2006 | スループット | 12種類 | 整数演算 | 非最適化(標準) |
SPECfp2006 | 処理速度 | 17種類 | 浮動小数点演算 | 最適化 |
SPECfp_base2006 | 処理速度 | 17種類 | 浮動小数点演算 | 非最適化(標準) |
SPECfp_rate2006 | スループット | 17種類 | 浮動小数点演算 | 最適化 |
SPECfp_rate_base2006 | スループット | 17種類 | 浮動小数点演算 | 非最適化(標準) |
CPUサイジングは「Specint2006(処理速度)」「Specint_rate2006(スループット)」の2つをチェックするのが簡単
先述の通りSPECのベンチマーク指標はたくさんあるものの、基本的には上表の
- Specint2006(処理速度)
- Specint_rate2006(スループット)
の2つをみておけばCPU同士の性能比較ができるはずだ。
Specint2006は「どれだけ速く仕事を捌けるかの能力」を表す指標値で、
Specint_rate2006は「(単位時間あたり)どれだけの"量"の仕事を捌けるかの能力」を表す指標値となる。
【注意】「SPECint2006はシングルプロセス性能(単体性能)」という誤解
従来より「SPECint2006はシングルプロセス性能(単体性能)のベンチマーク」という定説があった。
しかし実際のところでいうとコンパイラによる並列処理(Auto Parallel)が施された状態で測定した結果となっているため、SPECint2006はシングルプロセス性能(単体性能)を示すものではないことに注意が必要だ。