2006-03-31 ミラクル・リナックス(株)
OSS-DB 開発基盤 WG において過去に MySQL サーバーの測定例がない CPU アーキテクチャである Intel Xeon デュアルコア版および AMD Opteron を搭載したマシンを用い、 MySQL データベースサーバーのパフォーマンス測定を実施し、各アーキテクチャの特性の分析と考察を行なう。
本書では AMD Opteron の測定結果を取り扱う。
マシン 1台の上で測定対象の MySQL サーバーと測定ツール DBT-1 を動作させて測定を実施した。
以下のハードウェア構成のマシンを用いた。
OS と MySQL は 64 bit (x86-64)、DBT-1 は MySQL Connector/ODBC が 64bit 対応していないために 32bit (IA32) とした。
2005年度上期「『OSS 性能・信頼性評価 / 障害解析ツール開発』 DB 層 〜 OSDL DBT-1/3 による DBMS 評価編」に沿って環境構築を行なった。それ以外の環境については、基本的にすべてデフォルトとしてある。
MySQL サーバー (mysqld) のパラメーターは以下のように設定した。2005年度上期後にリリースされた MySQL 5.0.8 以降で innodb_thread_concurrency のデフォルト値が 8 から 20 に変更されたため、条件を一致させるためにパラメーターを追加した。
CPU の構成は次の 2 種類の状態で測定を行った。
2005年度上期「『OSS 性能・信頼性評価 / 障害解析ツール開発』 DB 層 〜 OSDL DBT-1/3 による DBMS 評価編」を参照のこと。
MySQL サーバーに 2005年度上期のチューニング後パラメーターを設定し、EU を変化させたときの性能を測定した。

2005年度上期までのすべての測定結果を上まわる好成績となった。
ただし、2つの欠点らしき傾向がある。1つは CPU がボトルネックであるにもかかわらず、UP → SMP 時のピーク性能が僅か 126% にしか伸びない点。これは Intel Xeon の UP→ SMP 時の 168%、Xeon デュアルコアのコア 1 →コア 2 時の 150% に比べ、極めて悪い。もう 1つは、ピーク性能以上の EU において、性能の劣化が若干大きい傾向にある点だ。


いずれの傾向も
Intel Xeon
とほぼ同じとなっている。あえて違いを挙げるならば、若干ではあるが
I/O 待ちが多い傾向にある点、そして
SMP の場合のピーク性能時のアイドルが
2〜3%
ほど多い点が異なる。


過去に発表された各種ベンチマーク結果や経験によれば、一般的に、UP → SMP の性能の伸びは少なくとも 150% 程度にはなる (CPU 性能がボトルネックの場合)。これに対してわずか 126% しか伸びていないため、明らかに異常な数値に感じられる。Opteron の特性に合わせた最適化により改善する可能性はあるが、現時点では Opteron SMP の限界である可能性も否定できない。
ストレージに 2.5インチのハードディスクを採用しているため、同等スペックの 3.5インチハードディスクよりも性能が低いことが起因しているものと思われる。比較的新しい規格である SAS を採用していることから、デバイスドライバの完成度にも疑問が残る。
過去に Opteron における測定例がないことから、今回の測定で観測できた特性が正常なものなのかの判断がついていない。今後より多くの測定と分析を重ね、確証を得る必要がある。
2005年度上期のチューニング後パラメーターを基本とし、代表的なチューニングパラメーターのほか、CPU アーキテクチャの違いにより効果が異なる可能性があるパラメーターを追加あるいは変更して DBT-1 を測定した。
EU の値は、BT/s の値が理論値を下回り、ほぼピーク性能に近い BT/s を記録した 3000 を採用した。
なお、マシンを利用できる時間が限られていたため、今回は CPU が 1つの場合の測定は見送った。CPU 2 つの場合についても必要最低限のパラメーター値だけ測定した (デフォルト値とデフォルト値前後の値のみ)。このため、パラメーター値変動による効果は観測できたものの、ピーク性能を判明するには至っていない点をおことわりしておく。
性能の影響が認められたパラメーターの結果のみを示す。性能向上が認められた値には網掛けと太字で示してある。

パラメーターの意味は以下の通り (MySQL 5.0 の英語版オンラインマニュアルより):
InnoDB の最大スレッド数を無制限に設定した場合 (innodb_thread_concurrency=20) はスレッド数のチェックやスレッドが InnoDB キューに入ることはなくなり、innodb_concurrency_tickets と innodb_thread_sleep_delay パラメーターの効果はなくなると思われるが、確認はしていない。
以下のパラメーターについては測定結果への特異な影響が見られなかったため、ここでは省略する。必要であれば、別途、個別の性能データを参照してほしい。
Intel Xeon と同様、値を調整することで性能を上げられる見込みがあるようだ。測定データが不足しているため、どこまでピーク性能が伸びるか観測できなかったのが残念である。
最大スレッド数を無制限にすることで 10% 程度性能を上げることができた。CPU の利用率は 100% に近づいており、逆に利用率が下がった Intel Xeon デュアルコア (HT 無効の場合) とは異なる結果となった。
マシンスケジュールの都合で判明できなかったピーク性能を測定し、Xeon との比較をより深く分析したい。
今回は単一のパラメーターだけに注目して測定したが、複数のパラメーターを組み合わせることでさらなる性能向上も期待できる。パラメーターの組み合わせによっては相乗効果を生んだり打ち消し合うものが考えられるため、各パラメーターの効果を理解した上で組み合わせ、より質の高いチューニングを実施するとよいだろう。