MTULabo
  • 製品紹介
  • 導入事例
  • FAQ
  • MTULabo
  • ダウンロード
評価版ライセンス申込 有償版利用申込(見積依頼) MTU Advance

[PR] 100億件のアンロードを60分で達成!

公開日 2015-05-22
更新日 2015-06-24

はじめに

  • 本稿は Haswell 世代の Xeon® E5 v3 プロセッサを2個搭載した入門レベルのx86サーバを使い 10の10乗行という途方もない量の Oracle Database 上のデータを何分掛けてアンロードできるかを検証した記事です。
  • 測定結果から、約 1.5 テラ・バイトに及ぶ CSV データを 58 分 17 秒で出力できる事を確認しました。
  • これは 1 秒当たりのデータ量に換算すると、行数 270万行、451 メガ・バイトにあたります。
  • 多数の物理コアをもつ NUMA ノードシステムのポテンシャルをフル活用できる、 MTU の底力について解説します。

動機

  • 本稿公開以前(2015年5月)は2008年に発売されたx86ベースのPCサーバを使って製品を検証していました。搭載された CPU は本稿執筆時点から数えて現行の 4 世代前にあたる Nehalem マイクロアーキテクチャに属する Xeon® E5420 (1個搭載)というモデルで、導入当初は十分な能力でした。
  • ところが近頃は、ユーザが使うサーバの方が性能的に何倍も優れているケースが相次ぐようになりました。それにつれて、ユーザの性能目標を満たせるかどうかという質問へ次第に答えにくくなる状況が進んでいました。古過ぎるCPUを使った実証実験の結果とユーザのサーバとの性能比較から得た判断の有効性に疑念が生じたからです。
  • このままでは製品の長所であるパフォーマンスについて、実証実験の結果からここまでのことが出来るという事が語れないので、思い切って検証サーバを刷新する事になりました。
  • 新検証サーバは、現行の1世代前にあたる Haswell マイクロアーキテクチャの Xeon® E5 v3 プロセッサが2個搭載されており、DDR4 の RAMが64GB、最新のチップセット Intel® C610 に加え、ディスクも合計で10テラバイトを超える余裕のスペックです。
  • 本稿の狙いは、新検証サーバの能力をフル活用して得た結果を通じて、大量データ抽出処理の長期化に直面している読者へ、現行のサーバとMTUを組み合わせて使えば、抱えている課題を乗り越えられるという確信を抱いて頂くのに十分な情報を提供する事に有ります。

測定条件

全体の条件

条件 選択内容
使用したシステム こちらのリンクをクリックすると、テストに使用したコンピュータについて解説した、このサイト内の記事へジャンプします。
Oracle Database 11g R2 から登場した Oracle Restart や、12c から登場したプラガブル・データベースといった、新しい技術への対応を検証する為の設定が含まれています。
MTU用環境変数
(出荷時初期値を変更した主なもの)
LISTTABLE=HASH_PART_0160
FILESIZE=0
BIND_SIZE=1G
OVERLAP_BUFFER_LENGTH=4M
PARTITIONING=0

アンロード対象テーブル:HASH_PART_0160 の特性

条件 選択内容
パーティション化 verchar2(15)型データをキーとしてハッシュ・パーティショニング
パーティション数 32
パーティションあたりの
平均データ件数 [単位:百万件] *1
312.5
(標準偏差:81571 行)
CSV の平均データ長 [単位:バイト] 165
項目数 VARCHAR2 4
項目数 DATE 2
項目数 NUMBER 3
項目数 CHAR 1
総項目数 10
データ生成所要時間 [単位:秒] *2 43900
セグメントサイズ合計 [単位:GB] *3 1078
CSV データ量 [単位:GB] 1542
  1. パーティション化キーに乱数に基づく値を用いているので平均値を中心に件数が僅かに分散しています。
  2. データ生成は弊社のオリジナルユーティリティー(非公開)を使用
  3. 表圧縮オプション未使用、USER_SEGMENTS ビューの BYTES 列値を集計表示

出力されるデータのサンプル (3件分)

0000000148~~Foqvre~~,~~21530424004401~~,280731594835,~~dlG9HSUf~~,748766.98,~~23240607215642~~,~~k7037   ~~,~~FFw5hZ12W~~,768478998939019,~~9LRhSbMaR9fBv~~,
0000000159~~1cCQM39g~~,~~38441127025731~~,2379760955898,~~EMLo6HgNWq~~,996422.43,~~28320220041621~~,~~ikKDhPZ ~~,~~hDWNzNWpV~~,793767313694761,~~HR3Z3krExrMuKMu7Od2~~,
0000000160~~sQ5QpcWkOu~~,~~35821117194854~~,3681160762725,~~rfBYL7IYdN5go~~,622915.16,~~19750226100019~~,~~oM4LJJ  ~~,~~MKExk1~~,629023003075868,~~2VXfksb1aVlUcoBfad~~,

スケーラビリティを検証する為に変化させた条件

  • MTU の環境変数 PARALLELISM へ設定する値を、32,28,24,…,4 と -4 刻みに変化させ、追加で 3 と 2 の場合も測定しました。

測定結果

スケーラビリティ

  • 並列度が最も高い条件下での所要時間が 3497 秒(58分17秒)である事を確認しました。
  • (一部逆転する領域もありますが)概ね、並列度が下がると平均処理能力も下がる傾向が確認できました。
並列度

性能指標
アンロード所要時間
[単位:秒]
平均処理能力
[単位:kB/秒]
タスクマネージャ
CPUタブ
コンソール
出力
32 3497 462202 並列度=32 並列度=32
28 4740 341032 並列度=28 並列度=28
24 4463 362178 並列度=24 並列度=24
20 5260 307323 並列度=20 並列度=20
16 6298 256679 並列度=16 並列度=16
12 7158 225840 並列度=12 並列度=12
8 6805 237562 並列度=8 並列度=8
4 12841 125898 並列度=4 並列度=4
3 18380 87956 並列度=3 並列度=3
2 23760 68041 並列度=2 並列度=2

並列度と平均処理能力の関係

  • 上の表をグラフに表現すると以下のようになりました。
  • 並列度=8 までは、平均処理能力が直線的に伸び、平均で 1論理プロセッサあたり29MB/秒増加する事が判りました。
  • 並列度=8 を超えると、平均処理能力の伸びの鈍化が目立つことが分かりました。この領域では平均で 1論理プロセッサあたり9.1MB/秒増加する事が判りました。
並列度と平均処理能力の関係
並列度と平均処理能力の関係=32

作業負荷最大時のリソース・モニタ状況

  • 並列度=32 を指定し、作業負荷を最大にした時の稼働している各プロセスの CPU 使用率と。I/O データ率をリソースモニタを使って確認しました。
  • CPU 使用率では、MTU が 89%、Oracle.exe が 8%、その他合計が 3% となりました。
  • I/O データ率では、MTU による書き込みが約 452MB/秒、Oracle.exe による読み取りが約 315MB/秒の速度で実行されている事が判りました。書込みと読取りの率が同じにならない理由は、Oracleの内部データ表現に比べてテキストデータは冗長性が大きい為と考えられます。
  • MTU と、Oracle.exe は全く競合せずに動作している事が、ドライブ C: のキュー長が殆どゼロである事から確認できました。
CPU占有率の降順でプロセスを確認
リソース・モニタ/CPUタブ 並列度=32
I/O率の降順でプロセスを確認
リソース・モニタ/ディスクタブ 並列度=32


ロード・バランスされない作業負荷

偏った負荷の割当 (並列度=16)
NUMA ノードへの偏った負荷の割当
  • 並列度が 32 に満たない全てのケースで、NUMA ノードへの偏った負荷の割当が確認されました。
  • 偏って負荷が集中するのは、いつも同じ NUMA ノードとは限らず、MTU を繰り返し実行する度にランダムに切り替わる現象が観察されました。
  • 並列度を上昇させて 100% に達するまでは片方の NUMA ノードだけに作業負荷が積み上がる現象が観察されました。(右の画像を参照)
  • 片方のノードが作業負荷で飽和すると、並列度の割増しで追加された分の作業負荷は、アイドルであったもう片方のノードに分配されるような現象が観察されました。


ターボ・ブースト

  • Nehalemマイクロアーキテクチャ世代以降に搭載された「ターボ・ブースト・テクノロジー」の影響が観察されました。
    ※下記をクリックすると Intel社の「インテル® ターボ・ブースト・テクノロジー 2.0」の紹介記事にジャンプします。
    http://www.intel.co.jp/content/www/jp/ja/architecture-and-technology/turbo-boost/turbo-boost-technology.html
  • テストに用いたサーバのプロセッサ:E5-2630 v3 の定格クロック周波数は 2.4 GHz ですが、並列度が比較的小さな数のテストでは、作業負荷が少数の論理プロセッサに偏る為ブーストが発生しました。例えば並列度 2 の場合はクロック周波数が 2.86GHz へ上昇する状況が確認されました。
無負荷状態
無負荷状態
偏在した負荷状態
偏在した負荷状態


まとめ

  • 並列度=8 以下の測定では、ターボ・ブーストによる能力増強の影響が強く現れた為、並列度と平均処理能力の関係が直線にはなりませんでした。
  • ディスク・ベンチマークテスト(Sequential Write = 496.897 MB/s)と当テスト(462202 kB/s=451 MB/s)の比較結果から、ストレージへの書込み能力限界に近いデータレートで処理できることが分かりました。