サバフェス上位入賞者にみる ioMemory×MySQL 最新チューニング教えます

2,235 views

Published on

2015年6月10日「db tech showcase」でソリューションアーキテクトの藤城が講演したスライドです。

Published in: Internet

サバフェス上位入賞者にみる ioMemory×MySQL 最新チューニング教えます

  1. 1. Copyright IDC Frontier Inc. All rights reserved. 1 db tech showcase Tokyo 2015 サバフェス上位入賞者にみる ioMemory×MySQL 最新チューニング教えます IDCフロンティア ソリューションアーキテクト 藤城 拓哉 @tafujish 2015年06月10日 D17:MySQL/Flash
  2. 2. (C) IDC Frontier Inc. All Rights Reserved. 自己紹介 ■業務 クラウド前 Unix/Linuxシステム管理者 クラウド後 プラットフォームの 設計、構築、運用 テクニカルサポート ソリューションアーキテクト今ココ ■趣味 自宅サーバー/自宅HPC ベンチマーク
  3. 3. (C) IDC Frontier Inc. All Rights Reserved. インフラのすべてが揃うIDCフロンティア Yahoo! JAPANのグループ企業であるIDCフロンティアは、 クラウドサービス(IaaS)、データ分析プラットフォーム、 データセンター、高速・大容量ネットワークを軸としたITイ ンフラを提供しています。 Cloud Service Bigdata Datacenter Network 2013年1月 ioMemory ioDrive2 サービス提供開始 2014年11月 ioMemory PX600 サービス提供開始
  4. 4. (C) IDC Frontier Inc. All Rights Reserved. サービスポートフォリオ Cloud パブリッククラウド プライベートクラウド オブジェクトストレージ RDBMS(提供予定) ベアメタルサーバー Network ファイアウォール コンテンツキャッシュマネージドGSLB 不正侵入検知/防御サービス DDoS対策サービス ウェブアプリケーション ファイアウォール(WAF) Bigdata DataCenter Solution Service ハイパフォーマンスデザインパック Infrastructure 首都圏、福島、大阪、北九州の全国9か所のデータセンターインフラ 総容量330Gbpsの高速・大容量バックボーンネットワークインフラ Yahoo!ビッグデータインサイト ハウジングサービス インターネット接続 オンサイト運用アウトソーシング マネージドサービス サーバー基礎構築
  5. 5. (C) IDC Frontier Inc. All Rights Reserved. IDCFのioMemory搭載サービス 選べる2タイプ ハードウェア専有仮想マシン Highio.5XL128 ベアメタルサーバー 高速IO1000  ポータル上から作成し即時利用  時間従量で1時間から利用  仮想化による柔軟性  オーバーヘッド無しのフル性能  ioMemoryを直接操作  メモリサイズをカスタマイズ
  6. 6. 6(C) IDC Frontier Inc. All Rights Reserved. サバフェス
  7. 7. (C) IDC Frontier Inc. All Rights Reserved. http://serverfesta.info/  ベンチマークやチューニングを肴にするサーバー好きのための祭り  チューニングによるベンチマークスコアを競い合う  チューニング結果はオープンに  賞金・賞品あり 第1回 2013年秋 CMS (Wordpress) 第2回 2015年春 DB (MySQL) サバフェス(サーバーの方)
  8. 8. (C) IDC Frontier Inc. All Rights Reserved. サバフェス2015 Spring とは何だったのか tpcc-mysql -w warehouses 1000 -c connections 30 -r warmup_time 0 -l running_time 900 -i report_interval 60 →出力結果のTpmCで順位づけ tpcc-mysql サバフェスシステム 競技用サーバー(チーム毎) MySQL/MariaDB/Percona 5.5系/5.6系 ioDrive2 MLC 365GB MySQL設定縛り innodb_doublewrite innodb_flush_log_at_trx_commit = 1 IDCFベアメタルサーバー高速IO365
  9. 9. (C) IDC Frontier Inc. All Rights Reserved. サバフェス 情報まとめ Twitter https://twitter.com/#サバフェス Togetter:サバフェス2015 Spring表彰式(2015/3/26) http://togetter.com/li/800168 1位の方 @ttkzwさん http://www.slideshare.net/ttkzw/svfes2 2位の方 @mapk0yさん http://mapk0y.hatenablog.com/entry/2015/04/13/090915 3位の方 @i_rethiさん http://www.slideshare.net/hiroi10/lt-46409689
  10. 10. 10(C) IDC Frontier Inc. All Rights Reserved. 上位入賞者の設定 やってみた
  11. 11. (C) IDC Frontier Inc. All Rights Reserved. お約束  以降の設定は、今回の環境、今回のベンチマーク内容での結果です  今回の設定を、未検証でそのまま入れないように  念のため、内容の把握と事前の検証をしてください  ハードウェア環境は、サバフェス時と異なります(ioMemoryが新しい)  結果や効果が変わる場合があります  サバフェス時は15分間の戦いでしたが、今回は1時間計測しています  以降の計測は、1回のみです(数%の誤差はあります)
  12. 12. (C) IDC Frontier Inc. All Rights Reserved. ハードウェア / BIOS IDCFクラウド ベアメタルサーバー 高速IO1000 HP ProLiant DL360p Gen8 Intel Xeon E5-2650v2 (@2.6GHz, 8コア) ×2 メモリ 32GB (8GB DIMM ×4) SAS 1.5kRPM HDD ×4 RAID10 + RAIDキャッシュ1GB ioMemory PX600 1TB (VSL 4.0.2) CentOS 6.4 (2.6.32-431.el6.x86_64) ■BIOS設定  サーバー/CPU/DIMMの省電力系の設定 → 性能優先/最大性能 (HPのサーバー:協調電力コントロール → 無効)  ハイパースレッディング → 有効  IDCFクラウド ベアメタルサーバーの場合は提供時に設定済み
  13. 13. 13(C) IDC Frontier Inc. All Rights Reserved. MySQL MariaDB PerconaServer どれにする
  14. 14. (C) IDC Frontier Inc. All Rights Reserved. MySQL / MariaDB / PerconaServer 0 2000 4000 6000 8000 10000 12000 14000 16000 18000 60 120 180 240 300 360 420 480 540 600 660 720 780 840 900 0 5000 10000 15000 20000 25000 30000 35000 40000 60 120 180 240 300 360 420 480 540 600 660 720 780 840 900 1位 Percona (9758TpmC) 2位 MariaDB (9524TpmC) 3位 MySQL (8201TpmC) 1位 Percona (26250TpmC) 2位 MySQL (24818TpmC) 3位 MariaDB (23532TpmC) Transactions / min Transactions / min innodb_buffer_pool_sizeのみ設定 I/O関連の設定を付与 ※設定、バージョンはこちら http://www.slideshare.net/tafujish/lt-2-46342987 ↑ 15min ↑ 15min
  15. 15. (C) IDC Frontier Inc. All Rights Reserved. MySQL / MariaDB / PerconaServer Percona 61% Maria 28% MySQL 11% Percona 100% 最終スコアが取れた 36チーム中 入賞6チーム中 サバフェスでの利用状況 → 以降の検証はPerconaServerを選択
  16. 16. 16(C) IDC Frontier Inc. All Rights Reserved. まずは ioMemoryの性能を 見てほしい
  17. 17. (C) IDC Frontier Inc. All Rights Reserved. HDD vs ioMemory 0 5000 10000 15000 20000 25000 30000 35000 40000 45000 50000 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 ローカルHDD (1086TpmC) ioMemory (21119TpmC) ioMemory + チューニング (43581TpmC) Transactions / min. ↑ 60min
  18. 18. (C) IDC Frontier Inc. All Rights Reserved. ベースのmy.cnf skip-name-resolve max_connections = 100 thread_cache_size = 100 innodb_buffer_pool_size = 20G  ローカルHDD  ioMemory  ioMemory + チューニング skip-name-resolve max_connections = 100 thread_cache_size = 100 innodb_buffer_pool_size = 20G innodb_flush_method = O_DIRECT innodb_write_io_threads = 16 innodb_read_io_threads = 8 innodb_io_capacity = 10000 innodb_log_file_size = 2G innodb_max_dirty_pages_pct = 60 innodb_adaptive_flushing = 1 innodb_log_files_in_group = 2 innodb_thread_concurrency = 0 innodb_purge_threads = 1 5.6では デフォルト値 “MySQL-Fusion-io Best Practices Guide” より Percona-Server 5.6.23 (公式バイナリ)
  19. 19. 19(C) IDC Frontier Inc. All Rights Reserved. ファイルシステム EXT4 (mkfs.ext4 /dev/fioa) XFS (mkfs.xfs -s size=4096 -b size=4096 /dev/fioa) ※マウントオプションはデフォルト
  20. 20. (C) IDC Frontier Inc. All Rights Reserved. EXT4 vs XFS 0 5000 10000 15000 20000 25000 30000 35000 40000 45000 50000 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 Transactions / min. ↑ 60min EXT4 (43581TpmC) XFS (43558TpmC)
  21. 21. (C) IDC Frontier Inc. All Rights Reserved. ファイルシステム  短時間での計測ならEXT4の方が高速だったが、 数十分以降はXFSの方が高速 → 無理にどちらか選ぶ必要は無さそう  マウントオプションは、nobarrierとnoatimeが定番 → 今回、有意な差が出なかったので省略 ※以降はXFSで実施してます
  22. 22. 22(C) IDC Frontier Inc. All Rights Reserved. Buffer pool innodb_buffer_pool_size
  23. 23. (C) IDC Frontier Inc. All Rights Reserved. 0 10000 20000 30000 40000 50000 60000 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 innodb_buffer_pool_size 20G 28G 24G 16G Transactions / min. ↑ 60min
  24. 24. (C) IDC Frontier Inc. All Rights Reserved. innodb_buffer_pool_size  ioMemoryにより高速なI/Oでも結局はメモリが重要  VSL(ioMemoryのドライバ)もメモリを消費する → ここでは余裕をもって20G
  25. 25. 25(C) IDC Frontier Inc. All Rights Reserved. I/Oとフラッシュ innodb_io_capacity innodb_io_capacity_max innodb_lru_scan_depth innodb_buffer_pool_instances innodb_flush_neighbors
  26. 26. (C) IDC Frontier Inc. All Rights Reserved. 0 5000 10000 15000 20000 25000 30000 35000 40000 45000 50000 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 I/Oとフラッシュ innodb_io_capacity=8000 innodb_io_capacity_max=9500 innodb_lru_scan_depth=2000 innodb_io_capacity=15000 innodb_io_capacity_max=15000 innodb_lru_scan_depth=1500 innodb_buffer_pool_instances=12 innodb_io_capacity=10000 Transactions / min. ↑ 60min
  27. 27. (C) IDC Frontier Inc. All Rights Reserved. 0 5000 10000 15000 20000 25000 30000 35000 40000 45000 50000 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 I/Oとフラッシュ innodb_flush_neighbors=0 innodb_flush_neighbors=1(デフォルト) Transactions / min. ↑ 60min
  28. 28. (C) IDC Frontier Inc. All Rights Reserved. I/Oとフラッシュ  チューニングのポイントだけど、難しい・・・ → ここは下手にいじらず innodb_io_capacity=10000 のみでも十分有効  innodb_flush_neighbors=0 は効果ありそうだが誤差の範囲か
  29. 29. 29(C) IDC Frontier Inc. All Rights Reserved. ログのブロックサイズ innodb_log_block_size=4096
  30. 30. (C) IDC Frontier Inc. All Rights Reserved. 0 5000 10000 15000 20000 25000 30000 35000 40000 45000 50000 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 ログのブロックサイズ innodb_log_block_size=4096 デフォルト(512) Transactions / min. ↑ 60min
  31. 31. (C) IDC Frontier Inc. All Rights Reserved. ログのブロックサイズ ioMemory 512Byte ファイルシステム 4KByte ioMemory 4KByte ファイルシステム 4KByte MySQL Log 4KByte I/O MySQL Log 4KByte I/O
  32. 32. (C) IDC Frontier Inc. All Rights Reserved. 0 5000 10000 15000 20000 25000 30000 35000 40000 45000 50000 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 ログのブロックサイズ innodb_log_block_size=4096 デフォルト(512) Transactions / min. ↑ 60min innodb_log_block_size=4096 + fio-format:4K
  33. 33. (C) IDC Frontier Inc. All Rights Reserved. ログのブロックサイズ  innodb_log_block_size=4096  ioMemoryのblock sizeを4Kにすると効果的 4KByteでフォーマットする # fio-format –b 4K /dev/fct0 現在のブロックサイズを確認する # fio-status –a | grep Format Format: v500, 244140625 sectors of 4096 bytes Format: 244140625 sectors of 4096 bytes
  34. 34. 34(C) IDC Frontier Inc. All Rights Reserved. その他 innodb_checksum_algorithm=crc32
  35. 35. (C) IDC Frontier Inc. All Rights Reserved. その他 innodb_checksum_algorithm=crc32 デフォルト Transactions / min. ↑ 60min 0 5000 10000 15000 20000 25000 30000 35000 40000 45000 50000 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59
  36. 36. (C) IDC Frontier Inc. All Rights Reserved. その他  使えそうだが、大きな効果は得られず
  37. 37. (C) IDC Frontier Inc. All Rights Reserved. まとめ  ioMemoryでは、これまで通りの定番の設定しておくだけ 細かいチューニングしなくても十分速いです  サバフェスの結果イコール、ファイルシステムは必ずしもEXT4が良いとは限らない デフォルトのファイルシステムそのままでも十分  IOのサイズは、MySQLログ、ファイルシステム、ioMemoryそれぞれ合わせる サバフェスのまとめサイトを参照いただき、他の設定も是非お試しください - Percona/MariaDB用のパラメータ - OS/ネットワークのチューニング ※これ以上の負荷だとネットワークがボトルネックになる
  38. 38. 38 (C) IDC Frontier Inc. All Rights Reserved.

×