概要
演算の中枢機構(CPUコア)を二つ搭載した「デュアルコアCPU」と,シングルコアCPUを2基搭載した「デュアルCPU」とで,データベース用途における処理性能を比較した。結果,両者の処理性能の差はごくわずかだった。デュアルコアCPUでは,システムのトータル費用を下げられる可能性が見えてきた。

 前号で示したとおり,演算の中枢機構(CPUコア)を二つ搭載した「デュアルコアCPU」の処理能力は,シングルコアCPU1基と比べて35ポイント以上高くなった。一般的にデュアルコアCPU搭載のサーバー機の価格は,シングルコアCPU搭載のサーバー機の数万円増し程度なので,Web/AP(アプリケーション)サーバーの用途ではデュアルコアCPUのコスト・パフォーマンスが高いことを確認できた。

 引き続いて今回は,デュアルコアCPU1基を搭載したサーバー機と,シングルコアCPUを2基搭載した「デュアルCPU」のサーバー機とで,処理性能を比べてみる。というのも,CPU課金のソフトウエアの中には,デュアルコアCPUを「CPU1個」や「CPU1.5個」として扱い,「CPU2個」であるデュアルCPUよりもライセンス費で優遇しているものがあるからだ。もし,デュアルコアCPUの処理性能がデュアルCPUに大きく見劣りしなければ,デュアルコアCPUを選択することで,ソフトウエアのライセンス費や保守費を削減できる可能性がある。

 結論から言えば,クロック周波数の違いが大きくなければ,デュアルコアCPU1基の処理性能はデュアルCPUと大差なかった(図1)。単位時間当たりのSQL文の処理件数を実測したところ,Xeonデュアルコア(Paxville DP)は約2783.7件,XeonデュアルCPUは約2858.3件で,デュアルコアは約2.6%(約74.6件)しか劣らなかった。この場合,Xeonデュアルコアのクロック周波数が0.2GHz低かったことなどを考慮すると,処理性能はほぼ互角と言ってよいだろう。

図1●デュアルCPUとデュアルコアCPUの処理性能の差はごくわずか
図1●デュアルCPUとデュアルコアCPUの処理性能の差はごくわずか
クロック周波数の違いを考慮すると,デュアルコアCPUの処理性能はデュアルCPUに見劣りしなかった。ソフトウエア・ライセンス費がデュアルCPUの場合よりデュアルコアCPUの方が割安な場合は,迷わずデュアルコアCPUを選ぶべきだろう
[画像のクリックで拡大表示]

 この結果から,ソフトウエアのライセンス費でデュアルコアCPUが優遇されている場合,(クロック周波数が大きく違わない限り)デュアルコアCPUを選択するのが得だと言える。

検証編

 今回の検証では,DB(データベース)サーバーとして利用した場合の実力を測定した(図2)。

図2●検証の環境と内容
図2●検証の環境と内容
DBサーバー用途での実力を測定した。SQL Server 2005に100万件のデータを格納。DB用負荷テスト・ソフト(無償配布されている「DBStressUtil」を改造)を使い,SQL文の同時実行数を徐々に増やしたときのCPU使用率と処理件数を測定した。結果を(1)~(3)のパターンで比較する
[画像のクリックで拡大表示]

 まず,米Intelの「Xeon」と米AMDの「Opteron」のそれぞれについて,デュアルCPUのサーバー機と,デュアルコアCPUのサーバー機を用意した。サーバー機はすべて日本コンピューティングシステムの「Vintage」シリーズで,CPUとマザーボード以外の構成をほぼ同等にそろえた。ただし,Intelが5月に出荷したデュアルコアCPU「Xeon 5060(コード名:Dempsey)」の搭載機はディスク周りの構成が異なるマシンしか用意できなかったので,今回は参考値として紹介する。

 各サーバーには,OSとして「Windows Server 2003 Enterprise Edition」,RDBMSとして「SQL Server 2003 Developer Edition」を導入。SQL Serverには,顧客DBを想定した100万件のデータを格納した。LANスイッチには「Summit X450」(開発は米Extream Networks)を使う。

 この検証システムに,DB用負荷テスト・ソフト(無償配布されている「DBStressUtil」の改造版)を使って徐々に負荷を与えた。三つのSQL文からランダムに一つを実行するスレッドを,2秒に1個ずつ増やした。実行するSQL文の内容は,顧客DBではよく使う[1]簡単なSELECT文(条件と完全一致する顧客レコードを検索),[2]簡単なUPDATE文(条件と完全一致する顧客レコードを更新),[3]LIKE句を含むSELECT文(条件と部分一致する顧客レコードを検索)である。サーバー機のCPU使用率の推移と,単位時間当たりに完了したSQL文の処理件数を計測した。どちらの指標も,数値が大きいほど,処理性能が高いことを示す。検証は複数回実施し,計測値に大きな偏りがないことを確認したうえで平均値をとった。

 測定した結果を,(1)Xeon デュアルCPU vs. デュアルコア,(2)Opteron デュアルCPU vs. デュアルコア,(3)Xeon デュアルCPU vs. 仮想デュアルコア(ハイパー・スレッディングを使用)――の三つのパターンで比較する。

 検証環境は32ビット版のWindows 2003とSQL Server 2005で構築したが,参考までに64ビット版で構築した場合の結果も計測した。参考比較として,32ビット・システム vs. 64ビット・システムについても紹介する。(囲み記事参照)。

参考比較「32ビット・システム vs. 64ビット・システム」
図A●32ビット・システム vs. 64ビット・システム
図A●32ビット・システム vs. 64ビット・システム
デュアルコアのシングルCPU構成で検証した。処理件数で見ると,ハイパー・スレッディングを有効にしたXeonと,Opteronの場合は,64ビット・システムが32ビット・システムを上回った
[画像のクリックで拡大表示]

 IA-32アーキテクチャを継承しながら64ビット拡張技術に対応したXeonやOpteronは,32ビットCPUとしても,64ビットCPUとしても利用できる。それぞれの場合に処理性能がどのくらい違うのかを検証してみた。

 具体的には,デュアルコアのXeonとOpteronを搭載したサーバー機に,Windows Server 2003とSQL Server 2005の32ビット版と64ビット版を導入。それぞれ「32ビット・システム」「64ビット・システム」として検証した。図2と同様の環境で,サーバーのCPU余剰率とSQL文の処理件数を計測した。

 結果から言うと,32ビット・システムと64ビット・システムでは,処理性能に大きな違いは見られなかった。平均CPU余剰率の差はわずか1ポイント程度。具体的には,Xeon(ハイパー・スレッディング無効)の場合,32ビット・システムは約38.8%,64ビット・システムは約37.1%。Xeon(同有効)の場合,32ビット・システムは約46.5%,64ビット・システムは約47.4%となった。Opteronの場合,32ビット・システムは約38.1%,64ビット・システムは約37.9%だった。

 SQL文の処理件数では,ハイパー・スレッディングを有効にしたXeonで約2.3%(約64.4件),Opteronで約6.3%(約172.7件)とわずかながら,64ビット・システムが32ビット・システムを上回った(図A)。64ビット・システムの広いメモリー空間が有効に働いたと見るのが妥当だろう。

 なお,OpteronによるSQL文の処理件数は,32ビット・システムでこそXeonに及ばなかったが,64ビット・システムでは上回った。これは,もともと32ビット用に開発されたXeonと,もともと64ビット用に開発されたOpteronのアーキテクチャの差が表れたものと見られる。

 検証実験と比較分析には,前号から引き続き,SIベンダーであるブリッジ・メタウェアの熊野大介氏のご協力をいただいた(囲み記事参照)。

テスターから
開発者にマルチスレッド開発スキルが求められる
ブリッジ・メタウェア 熊野大介 氏

ブリッジ・メタウェア
熊野大介 氏

 デスクトップPCでは同時に複数のアプリケーションを動作させることが多いので,マルチCPUやマルチコアCPUの恩恵を実感しやすいが,サーバー・アプリケーションではどうなのかには興味があった。

 マルチCPUやマルチコアCPUを生かすには,OSやアプリケーションがマルチスレッドで動作するように設計されている必要があり,スレッド処理機構の実装次第でベンチマーク結果に大きな違いが出る。今回はWindows Server 2003やSQL Server 2005で検証したが,単純な処理でもマルチコアCPUのメリットが数字に表れた点は興味深い。この結果から,サーバー・アプリケーションの開発者は今後,マルチコア環境を前提としてマルチスレッド・プログラミングを意識しなければならないと痛感した。

 デュアルCPUとデュアルコアCPUの比較では,同一クロック周波数だったと仮定したOpteronの試算値で,デュアルコアCPUの処理件数がデュアルCPUを上回った。また,64ビット・システムの検証でも,Opteronの処理件数は多かった。Opteronのアーキテクチャがベンチマーク結果に表れたと思われ興味深く感じたとともに,今後のマルチコアCPUにも期待したい。

 Xeonの場合,残念ながら今回の検証ではデュアルコアCPUのアドバンテージが十分に見られなかったように感じた。しかし,近く登場する「Woodcrest」(コード名)はマルチコアを前提にした新アーキテクチャ「Core Microarchitecture」に基づくということなので,期待している。今後,機会があればWoodcrestの処理性能も検証してみたい。(談)