皆さん、こんにちは。
私が継続的に行っているCeph® 12.2.1(Luminous)のパフォーマンス特性を解明する取り組みの一環として、MySQL®データベースサーバーおよびDockerコンテナを使用し、この新バージョンのCephを実行するテストをセットアップしました。
このテストの目的は、RBDブロックデバイスをデータベースストレージとして使用した場合に、大規模データベースのパフォーマンスがどのようにスケーリングするかを測定することです。MySQL構成をカプセル化して容易に実装できるようにするため、そしてDockerはクールだという理由から、Dockerコンテナも使用しました。
Ceph用ハードウェア:Micron IOPs Optimized Cephリファレンスアーキテクチャー
Micron IOPs Optimized Cephリファレンスアーキテクチャーのハードウェアをテストに使用しました。
Cephの最新のコミュニティエディションであるLuminous 12.2.1をインストールし、Micron 9100MAX 2.4TB NVMe® SSDごとに1つのBlueStore OSDで構成し、crc32cチェックサムを有効にしました。
MySQLサーバーの構成
MySQLサーバー側では、Dockerを使用してMySQL 5.7.19イメージを作成し、MySQLデータベースサーバーとしての役割を果たす10台のSupermicro 2028Uサーバーにコピーしました。
1.5TBのRBDイメージが各MySQLサーバーに提供され、RBDイメージごとに1TBのTPC-CライクなMySQLデータベースを保存します。RBDイメージがMySQLサーバーにマウントされ、MySQLサーバーごとに1つのコンテナインスタンスを使用して、MySQL Dockerインスタンスに引き渡されます。
MySQLデータベースファイルはすべてRBDイメージ上に保存しています。これによりデータベースインスタンスがポータブルになり、Cephの複製によって保護されます。
MySQLは、インスタンスごとに224GBのバッファープールを使用し、サーバーごとに1つの大規模データベースを実行するようサイジングされています。
Micron SSE TPC™-Cツール
マイクロンのストレージソリューションエンジニアリングチームが、データベース全体をアクティブなデータセットとして使用することによってストレージに負担をかける、TPC-Cライクなベンチマークツールを作成しました。この「Micron SSE TPC-Cツール」と呼ばれるツールを各Dockerインスタンスにインストールし、外部スクリプトにより、すべてのMySQLインスタンスを同時に起動しました。
Ceph RBDによるMySQLのパフォーマンス
MySQLサーバーを1台から10台までスケールアップしました。各サーバーでは、MySQLストレージ用にCeph RBDイメージを使用しています。TPC-Cライクなテストを、10分間(定常状態に達するまで)のランプアップ時間の後、30分間にわたって実行しました。1台のMySQLサーバー、5台のMySQLサーバー、10台のMySQLサーバーを使用して、テスト実行を繰り返しました。
1分間あたりのトランザクション数(TPM) | 平均 トランザクション応答時間(MS) | 99.9%応答時間(MS) | |
---|---|---|---|
1台のMySQLサーバー | 124,840 | 24 | 534 |
5台のMySQLサーバー | 607,988 | 24 | 549 |
10台のMySQLサーバー | 1,043,093 | 28 | 634 |
MySQLのパフォーマンスは、1台のMySQLサーバーから10台まで、線形にスケーリングしています。サーバー10台の場合、この修正TPC-Cベンチマークは、28msのトランザクション応答時間で、1分間あたり100万回以上のトランザクションを記録しました。
一般にCephストレージノードにおけるCPU利用率は、Cephスモールブロックパフォーマンスの制限要因です。この場合、MySQLサーバーのCPU利用率は平均70~80%で、CephストレージノードのCPU利用率は、7%(1クライアント)から64%(10クライアント)に急上昇しました。
この時点でもCephは完全には利用されていないので、MySQLクライアントを追加できるオーバーヘッドがあります。残念ながら、MySQLサーバーが不足していたため、さらにプッシュすることができませんでした。このスケーリングに基づいて、さらに1~5台のMySQLクライアントを追加しても、同じような結果になると合理的に予測することができます。
さらに詳しく知りたい方は
Micron SSE TPC-Cツールの裏側にある方法論を共有し、ここに記載されているTPM値がどのようにして達成されたかを詳しく解説するブログコンテンツを現在作成中です。今回のテストの成功を受け、今後もCephなどのSoftware-Defined Storageソリューションの標準的なテスト用に、Docker + MySQLを使用する予定です。ご期待ください。
マイクロンのテストや手法についてご質問のある方は、以下にコメントを残すか、ssd@micron.comまでメールでご連絡ください。