TOP>企業情報>コラム>技術情報>80CPUコアのスケールアップを実現するInfiniDB

80CPUコアのスケールアップを実現するInfiniDB

InfiniDBは2012年3月よりアシストが日本国内に提供を開始したデータ・ウェアハウス(DWH)専用のRDBMSソフトウェアです。2013年8月にリリースしたInfiniDB 3.5.4 はマイナー・バージョンアップ版でありながらも、スケールアップ性能が最大2倍以上も向上する性能強化が実現されています。アシストからの実機検証結果報告です。



ビッグ・データというキーワードが広がるにつれて、DWHにも改めて注目が集まっていますが、図1のようにDWH用途で採用されているDBMSは、予算の限られるシステムの場合は汎用RDBMSを、高い性能が求められるシステムの場合は高価なDWH専用アプライアンスを採用する二者択一の状態のようです。アシストではDWH専用RDBMSソフトウェアであるInfiniDBとコスト・パフォーマンスの高い汎用マルチプロセッサーサーバーを組み合わせることで、 DWH専用アプライアンスの高性能なDWH環境を採用しやすいコストで提供することを目指しています。

図1:情報系システムで利用されているDBMSと予算

図1:情報系システムで利用されているDBMSと予算

InfiniDBの特長


InfiniDBはデータを列ごとに垂直分割して保存する列指向RDBMSであり、さらにエクステントと呼ばれる一定範囲の行ごとにデータを水平分割します。つまり、InfiniDBの表データは図2のように自動的に垂直水平方向にパーティションニング(分割)されて格納されています。さらに、各エクステントに格納されている値の最小値と最大値を保持するエクステント・マップ情報により、BIアプリケーションから発行されるSQLがアクセスするデータを最小限に絞り込むことができます。また、図3のようにアクセス対象となるデータに対してマルチスレッドのI/Oスレーブによるパラレル処理が実行されます。この独自のアーキテクチャにより汎用RDBMSと比較して圧倒的な処理速度を実現することができます。エクステントを処理するノードに分割することでスケールアウト構成にも秀で、マルチスレッドのパラレル処理はスケールアップ性能に優れているため、スケールアウトでもスケールアップでも性能を向上させることができる柔軟性を備えています。

図2:垂直水平方向のパーティショニングとその効果

図2:垂直水平方向のパーティショニングとその効果

図3:InfiniDBの処理概要

図3:InfiniDBの処理概要

80コア環境でのスケールアップ検証の必要性


InfiniDBが市場に認知され始めると、汎用RDBMSだけではなく、DWH専用の大型アプライアンスからのリプレース機会もいただくようになりました。スケールアウト構成では合計100CPUコアの実証データはありましたが、スケールアウト構成はノードの増加に伴い、ノード間のネットワークが高度化することから、超メニーコアの汎用サーバーでの実装も必要となってきました。InfiniDBはマルチスレッドのI/Oスレーブによってパラレル処理を行うことで、CPUリソースを最大限利用できるように設計されています。しかし、Oracle Database でもOracle Database Release 7 の頃からパラレル・クエリーが実装されていますが、インメモリ・パラレル・クエリーが実装されたのはOracle Database 11g Release2です。それまでのOracle Databaseのパラレル・クエリーはバッファ・キャッシュを介さないダイレクトI/O読込みで実装されていました。Oracle Database の事例からも分かるようにバッファ・キャッシュの管理機構の性能課題をクリアして、インメモリのパラレル処理をスケールアップさせるには高度なソフトウェア設計と実装技術が必要となります。InfiniDBではスケールアップが特長として謳われていましたが、パラレル処理の品質を向上させるためには超メニーコアによる実機検証が必須だと考えました。

HP ProLiant DL980 G7 の選択


InfiniDBのスケールアップ性能の能力を確認するため、超メニーコアに適したハードウェア設計が実装されているHP ProLiant DL980 G7(以下、DL980 G7)を採用しました。DL980 G7は、最大8ソケット80コアのインテル® Xeon®プロセッサー E7ファミリーを搭載でき、128スロット最大4TBのメモリーをサポートする、ミッションクリティカル用途に最適なマルチプロセッサーサーバーです。高い性能、高い信頼性を実現するための「肝」となる部分は、 Performance(性能)、Resiliency(回復力)、Efficiency(効率性)、Manageability(管理性)、 Availability(可用性)の頭文字をとった、日本HP社独自のPREMAアーキテクチャで実装されています。インテル® Xeon®プロセッサー E7ファミリーは、4つのCPUを直接相互に接続するNUMAアーキテクチャのため、8ソケットサーバーを設計するには、4つのCPUを1つのノードとし、このノードを2つ用意するのが通常の設計手法ですが、ノードを2つ接続するデザインでは、ノード間の接続部分がシステムのボトルネックとなる可能性が高く、CPU数が増えてもリニアにパフォーマンスが向上しない問題が存在します。この問題に対して日本HPは「スマートCPUキャッシング」というアーキテクチャを独自開発し、2個のXeon®プロセッサー E7ファミリーを一組のモジュールとし、それぞれのモジュールを、日本HPが独自開発したノードコントローラを経由して接続させる方式を採用し、ほぼリニアにパフォーマンスがアップすることが実証されています。

図4:HP ProLiant DL980 G7

図4:HP ProLiant DL980 G7

Red Hat Enterprise Linux 6の選択


DL980 G7の8ソケット80コアのCPUリソースを適切にInfiniDBの各スレッドに割り当てて動作させるためにはオペレーティングシステムも非常に重要な役割を果たします。InfiniDBのスケールアップ性能を確認するために、4096のCPU、64TBのメモリー、そして400万のプロセスと1プロセス毎に3200のスレッドをサポートしているRed Hat Enterprise Linux 6(以下、RHEL6)を採用しました。RHEL6 ではNUMAアーキテクチャへの最適化が行われ、NUMAノード間でアプリケーションが不必要に移動することを防ぐCPUアフィニティなどパフォーマンスを向上させる機能が実装されています。現在のところInfiniDBはNUMA非対応のソフトウェアであるのでRHEL6 のNUMAアーキテクチャのオーバヘッドを考慮した実装技術に頼る必要もありました。

検証結果で判明したInfiniDB 3.5.1の課題


ベンチマーク・ツールは、DWHのデータ・モデルとして一般的なスター・スキーマ構造の計測で利用されるオープンソースの Star Schema Benchmarkを使用しました。検証用のDL980 G7はプロセッサー8基(80コア)、メモリーは2TBを搭載し、サンプル・データは理論値2TB (InfiniDBのデータベースのサイズで約500GB) とし、サンプル・データのすべてをメモリー上にキャッシュした状態で、クエリー実行に要した時間を40コア、80コア稼働時でそれぞれ計測しました。CPUコア数のコントロールはRHEL6の設定で行い、8基のプロセッサーを稼働させた状態で、コアの半分を無効にすることで40コア稼働、すべてを有効にすることで80コア稼働の状態を作り出しました。図5の検証結果のように40コアから80コアに稼働コア数を増やしても、期待したようなスケールアップ効果は得られませんでした。検証時のCPU使用率を確認すると、40コアでも80コアでもRHEL6上の各CPUコアにはアイドルがあり、InfiniDBの内部的な機構で何らかの待機が生じていると考えられました。InfiniDBの開発元である米Calpont Corporationと共に問題調査を行った結果、パフォーマンスが向上しない2つの原因が明らかになりました。1つ目の問題はinfiniDBのバッファ・キャッシュを管理するBlock Cache Instanceと呼ばれる管理機構の獲得待ちが各I/Oスレッドで発生していました。2つ目の問題は、データを処理するI/Oスレッドと、その処理結果を受けて集計結果をまとめるスレッドのデータの受け渡しが、同時に一対のスレッド間でのみ動作していたことでした。そこで、Block Cache Instanceと呼ばれる管理機構の数を増やす改修と、データ処理と集計処理のスレッド間でのデータの受け渡しを並行して実施する改修を行いました。

図5:InfiniDB 3.5.1 性能検証結果

図5:InfiniDB 3.5.1 性能検証結果

図6:InfiniDB 3.5.1 の性能課題の原因

図6:InfiniDB 3.5.1 の性能課題の原因

図7:InfiniDB 3.5.4での改善

図7:InfiniDB 3.5.4での改善

InfiniDB 3.5.4の性能向上の効果


改修を施したInfiniDB 3.5.4 とInfiniDB 3.5.1 の比較を行ったものが図8のグラフです。InfiniDB 3.5.4では40CPUコアでも80CPUコアでも処理時間の短縮が確認されており、最大2倍以上の性能向上を実現しています。さらに、40コアから80コアへ稼働コア数を増やした場合も、コア数に応じて性能が向上していることも確認できました。

図8:InfiniDB 3.5.4と3.5.1の性能検証比較

図8:InfiniDB 3.5.4と3.5.1の性能検証比較

この実機検証を通じてDWH専用RDBMSソフトウェアとしてさらに進化したInfiniDBは、超マルチプロセッサーサーバーであるHP ProLiant DL980 G7、Red Hat Enterprise Linux 6と組み合わせることで、超高速なDWHプラットフォームを提供することが可能となりました。


執筆者紹介

岸和田 隆

岸和田 隆(Takashi Kishiwada)

株式会社アシスト データベース技術本部

アシスト入社後、Oracle Database の研修講師、フィールド・ サポート、新バージョンの検証を経て、2007年 自社ブランド 「DODAI」の準アプライアンス製品の企画・開発、2009年 PostgreSQL、2011年 EDB Postgres、MySQL / MariaDB の事業立上を担当。 現在は「データベースのアシスト」を目指した活動を行っている。

岸和田の紹介記事はこちら



関 俊洋

関 俊洋(Toshihiro Seki)

株式会社アシスト データベース技術本部

2006年、株式会社アシスト入社。データベース・システムの構築や運用トラブルの解決といったフィールド・サポート業務を経験し、その後は新製品の検証やハードウェアとデータベースを組み合わせたソリューション(DODAI)の立ち上げに従事。現在はデータベースの価値や魅力を伝えるための執筆・講演活動を行っている。『SQL逆引き大全363の極意』共著。

関の紹介記事はこちら


Facebookで情報をお届けしています

Facebookでは、アシストの「今」を週3回のペースでお届けしています。「めげない、逃げない、あまり儲けない」を合言葉に日々頑張っておりますので、応援よろしくお願いします。



ページの先頭へ戻る