MySQL Cluster でも フラッシュドライブを活用してみる 日本ヒューレット・パッカード株式会社 テクノロジーコンサルティング事業統括 オープンソース部 高橋 智雄 2014年6月25日 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 自己紹介 2 氏名:高橋 智雄 所属:日本ヒューレット・パッカード株式会社 仕事:データベース関連のコンサルタント Oracle Databaseのトラブル対応やチューニングなど。 最近はオープンソースのDBMSも。 今年:PostgreSQL/Postgres Plus検証 MySQL Cluster検証①(←今日の話) Oracle RAC提案 MS SQL Server PDWソリューション開発 MySQL Cluster検証②(←HP Moonshot System使いました) Vertica構築 MySQL Cluster提案 Oracle RAC構築 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. はじめに 本書は2014年1月に実施した、 HP ProLiant BL460c Gen8上でMySQL Cluster 7.3を動作させた性能検証結果をまとめたものです。 検証では、 MySQL Cluster のパラメータチューニングによる性能向上や、PCIe直 結のフラッシュドライブ、HP IOアクセラレータにより、MySQL Clusterのディスク テーブルの性能が劇的に向上することの検証などを行いました。 本検証にあたり、日本オラクル株式会社殿、フュージョンアイオー株式会社殿 に多大なるご協力をいただいたことに、厚く御礼いたします。 3 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. アジェンダ 1. 検証環境 2. 検証内容 3. メモリテーブルにおけるパラメータチューニングの効果 4. ディスクテーブルにおけるIOアクセラレータの効果 5. まとめ 4 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 1. 検証環境 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 2-2.検証環境構成イメージ ProCurve 6120XG ブレードスイッチ×2 10Gbit Ethernet BL460c Gen8×6 IO アクセラレータ Blade用メザニン 管理ノード#1 管理ノード#2 ベンチマークツール データノード#1 データノード#2 MySQL Cluster 6 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. SQLノード#1 SQLノード#2 1-2.検証環境ハードウェア/ソフトウェア構成 ハードウェア サーバー HP ProLiant BL460c Gen8 CPU Intel® Xeon® Processor E5-2690 2.9Ghz 20MB Cache 2P/16Core メモリ 64GB (8 x 8GB) DDR3 1600MHz RDIMMs ディスク コントローラ HP Smart Array P220i Controller with 512MB Flash-Backed Write Cache (FBWC) 内蔵HDD HP 300GB 6G SAS 15K 2.5in HDD × 2 (RAID1) NIC HP FlexFabric 10Gb 2P 554FLB FIO Adptr フラッシュ ドライブ HP 1.2TB MLC BladeSystem IO アクセラレータ (データノードのみ搭載。 Factory Capacity (100%)でフォーマット) OS RedHat Enterprise Linux 6.4 (kernel 2.6.32-358) IOアクセラレータドライバー iomemory-vsl 3.2.4 MySQL Cluster MySQL Cluster 7.3.3 7 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 2. 検証内容 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 検証目的 パラメータチューニングによる効果測定 MySQL Clusterには一般的なRDBMSよりもパラメータが多く存在 適切に設定することによりパフォーマンスが大きく向上することを確認 フラッシュドライブを使用した場合のディスクテーブルの性能検証 ディスクテーブルはメモリテーブルに比較して遅いといわれている。 ディスクテーブル用のストレージにフラッシュドライブである IOアクセラレータを使用すると性能が向上することを確認 9 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 性能測定方法 測定方法 sysbenchのcomplexモードを使用して測定 管理ノード上でsysbenchを実行 sysbench実行中のサーバーリソース使用状況を sarコマンドで取得 測定条件(以下を変更して性能測定) SQLノード数:1、2 (SQLノード数に従い、sysbenchクライアントを複数起動 して、各SQLノードに負荷をかける) sysbench実行スレッド数(負荷の大きさに相当) レコード数:チューニング検証では100万行、 ディスクテーブル検証では1億行 テーブル領域:メモリ、ディスク 10 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 3.メモリテーブルにおける パラメータチューニングの効果 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 性能測定条件(1/2) 全データをメモリテーブルに配置しsysbenchの測定を実施 項目 12 説明 データ量 • sysbenchのパラメータ --oltp-table-size=1000000 を指定 • メモリ使用量 DataMemory : 約230MB IndexMemory :約15MB メモリ関連 パラメータ • DataMemory=8G • IndexMemory=8G ファイルシステム ext4 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 性能測定条件(2/2) データ、LCP、GCP、UNDO配置デバイス 13 データ メモリ LCP HDD GCP HDD UNDO - (メモリテーブルのみのため不使用) © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. ほぼデフォルト状態の測定結果 ほぼデフォルト 13,500 SQLノード数を1台から2台に増や しても性能はほとんどかわらない。 12,000 10,500 TPS 9,000 MaxNoofExecutionThreadsが デフォルトのままなので、データ ノードのCPUが効率的に使われ ずボトルネックになっている。 7,500 6,000 4,500 3,000 1,500 0 0 20 40 60 80 100 120 sysbench スレッド数 Read Only - 1Client - 1SQLnode Read Only - 2Clients -2SQLnodes 14 Read Write - 1Client - 1SQLnode Read Write - 2Clients -2SQLnodes © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. リソース使用状況 ~ほぼデフォルト~ データノードのndbmtdスレッド数の設定がデフォルト(2)のままのため、 sysbenchスレッド数が増えてもCPUの多くは使われていない状態。 15 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. MaxNoofExecutionThreads を16に設定 MaxNoofExecutionThreads=16 13,500 SQLノード1台の性能は ほぼデフォルト状態と同じ 12,000 10,500 TPS 9,000 7,500 SQLノードを2台に増やすと 約1.7倍のスループットに向上 6,000 4,500 3,000 1,500 0 0 20 40 60 80 sysbench スレッド数 Read Only - 1Client - 1SQLnode Read Only - 2Clients - 2SQLnodes 16 100 120 Read Write - 1Client - 1SQLnode Read Write - 2Clients - 2SQLnodes © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. ThreadConfigを設定して、さらに細かくチューニング ThreadConfigを調整 13,500 SQLノード1台の性能は ほぼデフォルト状態と同じ 12,000 10,500 9,000 TPS 7,500 SQLノードを2台に増やすと 約2倍のスループットに向上 6,000 4,500 3,000 1,500 0 0 20 40 60 80 sysbench スレッド数 Read Only - 1Client - 1SQLnode Read Only - 2Clients - 2SQLnodes 17 100 120 Read Write - 1Client - 1SQLnode Read Write - 2Clients - 2SQLnodes © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. リソース使用状況~ThreadConfig調整後~(1) データノード データノードはCPUが平均して使用されるようになった。 使用率自体はそれほど高くないので、SQLノードがボトルネック? 18 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. リソース使用状況~ThreadConfig調整後~(2) SQLノード %sysが高い SQLノードはsysbenchのスレッド数の増加に従い、使用するCPUが増えている。 CPU使用率の中では%sysの割合が高い。 19 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. ndb-cluster-connection-poolを8に設定 ndb-cluster-connection-pool=8 13,500 SQLノード1台の性能は ほぼデフォルト状態の2倍以上 12,000 10,500 TPS 9,000 7,500 SQLノードを2台に増やすと さらに約2倍のスループットに向上 6,000 4,500 3,000 1,500 最大でチューニング前の4倍以上! 0 0 20 20 40 60 80 sysbench threads 100 120 Read Only - 1Client - 1SQLnode Read Write - 1Client - 1SQLnode Read Only - 2Clients - 2SQLnodes Read Write - 2Clients - 2SQLnodes © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. リソース使用状況~ndb-cluster-connection-pool調整後~(1-1) データノード 21 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. リソース使用状況~ndb-cluster-connection-pool調整後~(1-2) データノード データノードのCPUは効率よく使用されている 22 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. リソース使用状況~ndb-cluster-connection-pool調整後~(2-1) SQLノード 23 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. リソース使用状況~ndb-cluster-connection-pool調整後~(2-2) SQLノード %sysの割合 が低下 SQLノードのCPUも効率よく使用されるようになった 24 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. チューニングによる応答時間の変化 20 40 60 80 100 120 sysbench スレッド数 100 90 80 70 60 50 40 30 20 10 0 応答時間(ミリ秒) 応答時間(ミリ秒) 応答時間(ミリ秒) 0 ndb-cluster-connection-pool調整後 ThreadConfig調整後 ほぼデフォルト 100 90 80 70 60 50 40 30 20 10 0 0 20 40 60 80 100 100 90 80 70 60 50 40 30 20 10 0 120 sysbench スレッド数 Read Only - 1Client - 1SQLnode Read Write - 1Client - 1SQLnode Read Only - 2Clients -2SQLnodes Read Write - 2Clients -2SQLnodes Read Only - 1Client - 1SQLnode Read Write - 1Client - 1SQLnode Read Only - 2Clients - 2SQLnodes Read Write - 2Clients - 2SQLnodes 高負荷時の応答時間は1/4に短縮! 25 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 0 20 40 60 80 100 120 sysbench スレッド数 Read Only - 1Client - 1SQLnode Read Write - 1Client - 1SQLnode Read Only - 2Clients - 2SQLnodes Read Write - 2Clients - 2SQLnodes (参考)チューニング後のconfig.ini(1/2) [ndbd default] NoOfReplicas=2 # Number of replicas DataMemory=8G # How much memory to allocate for data storage IndexMemory=8G # How much memory to allocate for index storage #MaxNoOfExecutionThreads=16 ThreadConfig=ldm={count=12,cpubind=1,2,3,4,5,6,7,8,9,10,11,12},main={cpubind=0},io={cpubind=0}, rep={cpubind=0},tc={count=2,cpubind=12,13},recv={count=1,cpubind=14}, send={count=1,cpubind=15} MaxNoOfConcurrentTransactions=16384 MaxNoOfConcurrentOperations=5000000 MaxNoOfConcurrentScans=500 NoOfFragmentLogFiles=8 FragmentLogFileSize=1G RedoBuffer=64M TimeBetweenLocalCheckpoints=25 LockPagesInMainMemory=1 Odirect=1 RealtimeScheduler=1 26 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. ← 実際は1行 (参考)チューニング後のconfig.ini(2/2) [ndb_mgmd] NodeId=1 hostname=192.168.0.3 datadir=/var/lib/mysql-cluster/mgm [ndb_mgmd] NodeId=2 hostname=192.168.0.4 datadir=/var/lib/mysql-cluster/mgm [ndbd] NodeId=10 hostname=192.168.0.1 datadir=/var/lib/mysql-cluster/data1 [ndbd] NodeId=11 hostname=192.168.0.2 datadir=/var/lib/mysql-cluster/data [mysqld] NodeId=50 [mysqld] ・・・・後略 27 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. (参考)チューニング後のmy.cnf [mysqld] ndbcluster # run NDB storage engine log-error=/var/log/mysql/error.log max_connections=1000 ndb-cluster-connection-pool=8 [mysql_cluster] ndb-connectstring=192.168.0.3 ndb-connectstring=192.168.0.4 28 # location of management server # location of management server © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 4. ディスクテーブルにおける IOアクセラレータの効果 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP IOアクセラレータとは PCIe直結のNANDフラッシュストレージ。多くのシステムで、高い成果を実現。 某ゲーム会社 : データベース データベースのスループットを3.5倍向上 某製造業 : HPC 製品開発における構造解析性能を 2倍に向上し、開発生産性を向上 30 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 某Webサービス会社 : データベース データベースサーバーの データ同期時間を30倍高速化 某コンテンツ配信会社 : キャッシュ 動画配信キャッシュサーバーを 1/4に削減し、省電力化を実現 性能測定条件(1/2) データをメモリテーブルに配置したケースと、ディスクテーブルに配置したケースで sysbenchの結果を比較 ディスクテーブルは、ストレージに内蔵HDDを使用するケースと、IOアクセラレータを使 用するケースの性能測定 項目 31 説明 データ量 • • sysbenchのパラメータ --oltp-table-size=100000000 を指定 メモリ使用量 DataMemory : 約23GB IndexMemory : 約1.3GB メモリ関連 パラメータ • • • DataMemory=28G IndexMemory=1800M DiskPageBufferMemory=2048M(全データがキャッシュされない値 に設定) ファイルシステム HDD、IOアクセラレータともにext4で統一 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 性能測定条件(2/2) データ、LCP、GCP、UNDO配置デバイス メモリテーブル ディスクテーブル (IOアクセラレータ) ディスクテーブル (HDD) メモリ ディスクテーブル (IOアクセラレータ)※ ディスクテーブル (HDD)※ LCP HDD IOアクセラレータ HDD GCP HDD IOアクセラレータ HDD UNDO -(不使用) IOアクセラレータ HDD データ ※MySQL Clusterの仕様上、インデックス及びインデックスがついている列はメモリ上に配置される 32 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. データ配置デバイスによる 測定結果比較 スループット 応答時間 100 12,000 90 10,500 80 応答時間(ミリ秒) 13,500 9,000 TPS 7,500 6,000 4,500 3,000 1,500 70 60 50 40 30 20 10 0 0 0 20 40 60 80 0 20 sysbench threads Memory - Read Only IOA - Read Write Memory - Read Write HDD - Read Only 40 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 80 sysbench スレッド数 IOA - Read Only HDD - Read Write Memory - Read Only IOA - Read Write Memory - Read Write HDD - Read Only IOアクセラレータをメモリと比較するとスループットが1/3、 応答時間は1.5倍程度(HDDは比較にならない) 33 60 IOA - Read Only HDD - Read Write リソース使用状況~データノード~(1) 64スレッド(Read Only)におけるリソース使用状況 iowaitで待機 IOアクセラレータ使用時は、CPUのiowait時間は発生していない 34 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. リソース使用状況~データノード~(2) Memory ネットワーク 使用帯域(MB/sec) ディスク IOA HDD rx 103.0 27.0 1.6 tx 550.5 130.0 7.3 tps 53.4 14,617.5 767.5 rd_sec/s 0.0 934,109.4 47,788.2 wr_sec/s 882.9 490.5 289.0 avgqu-sz 0.0 2.8 4.5 await(ms) 0.7 0.2 5.8 util% 1.6 96.5 97.4 IOAはHDDの20倍のREAD性能(スループットの性能比とほぼ一致) 35 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. リソース使用状況~SQLノード~(1) 64スレッド(Read Only)におけるリソース使用状況 36 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. リソース使用状況~SQLノード~(2) Memory ネットワーク 使用帯域(MB/sec) ディスク IOA HDD rx 367.0 244.1 12.6 tx 37.4 26.7 1.6 tps - - - rd_sec/s - - - wr_sec/s - - - avgqu-sz - - - await(ms) - - - util% - - - SQLノードのリソースはボトルネックになっていない 37 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. IOアクセラレータが効果的なケース それほど性能要求が高くないシステムで、たとえばデータ量が1TBの場合 必要メモリ量は2TB+α(NoofReplicas=2とする) 1サーバーに256GBのメモリを搭載すると想定 データノードは10台前後必要 このケースで1.2TB IOアクセラレータを使うと データノードは2台でOK データ量が多くメモリのみではサーバー数が多くなりすぎるケースに効果的! 38 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. (参考)config.ini(1/2) [ndbd default] NoOfReplicas=2 # Number of replicas DataMemory=28G # How much memory to allocate for data storage IndexMemory=1800M # How much memory to allocate for index storage 修正 #MaxNoOfExecutionThreads=16 ThreadConfig=ldm={count=12,cpubind=1,2,3,4,5,6,7,8,9,10,11,12},main={cpubind=0},io={cpubind=0}, rep={cpubind=0},tc={count=2,cpubind=12,13},recv={count=1,cpubind=14}, send={count=1,cpubind=15} MaxNoOfConcurrentTransactions=16384 MaxNoOfConcurrentOperations=5000000 MaxNoOfConcurrentScans=500 NoOfFragmentLogFiles=8 FragmentLogFileSize=1G RedoBuffer=64M TimeBetweenLocalCheckpoints=25 LockPagesInMainMemory=1 Odirect=1 RealtimeScheduler=1 DiskPageBufferMemory=2048M SharedGlobalMemory=2048M TransactionDeadlockDetectionTimeout=12000 NoOfFragmentLogParts=12 DiskCheckpointSpeed=1000M DiskCheckpointSpeedInRestart=1000M DiskIOThreadPool=4 TimeBetweenEpochsTimeout=32000 39 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 追加 ← 実際は1行 (参考)config.ini(2/2) [ndb_mgmd] NodeId=1 hostname=192.168.0.3 datadir=/var/lib/mysql-cluster/mgm [ndb_mgmd] NodeId=2 hostname=192.168.0.4 datadir=/var/lib/mysql-cluster/mgm [ndbd] NodeId=10 hostname=192.168.0.1 datadir=/var/lib/mysql-cluster/data1 [ndbd] NodeId=11 hostname=192.168.0.2 datadir=/var/lib/mysql-cluster/data [mysqld] NodeId=50 [mysqld] ・・・・後略 40 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. (参考)my.cnf [mysqld] ndbcluster # run NDB storage engine log-error=/var/log/mysql/error.log max_connections=1000 ndb-cluster-connection-pool=8 [mysql_cluster] ndb-connectstring=192.168.0.3 ndb-connectstring=192.168.0.4 41 # location of management server # location of management server © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. 5.まとめ © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. まとめ 43 パラメータチューニングによる性能向上 データノード ndbmtdを使用する CPU関連のパラメータ(MaxNoofExecutionThreads、あるいは ThreadConfig)を必ず設定する。 データノード専用サーバーの場合、搭載コア数を設定 SQLノード ndb-cluster-connection-pool を設定する コア数に応じて4~8程度に設定 IOアクセラレータを使用したディスクテーブル メモリテーブルの1/3のスループット、応答時間は1.5倍 データ量が多く、メモリのみではサーバー数が多くなりすぎる場合に 使用を検討 © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. ご清聴ありがとうございました © Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
© Copyright 2024 ExpyDoc