MySQL サーバーにおける SSD パフォーマンスの問題の詳細な分析とテスト

MySQL サーバーにおける SSD パフォーマンスの問題の詳細な分析とテスト

【質問】

HP サーバーを使用しています。SSD が IOPS 約 5000 を書き込むと、%util が 80% を超えます。この SSD のパフォーマンスに問題があるのでしょうか? この問題を解決するために、次のテストを実施しました。

【道具】

Blktrace は、Linux での IO パフォーマンスのトラブルシューティングに使用されるツールです。 IO が実行するさまざまなステップを記録し、各段階での IO 要求の消費量を計算できます。次に、いくつかの重要なステップを示します。

Q2G – 再マップと分割時間を含む、IO 要求の生成に費やされた時間。

G2I – IO 要求が IO スケジューラに入るのにかかる時間(マージ時間を含む)。

I2D – IO 要求が IO スケジューラ内で待機する時間。

D2C – ドライバーとハードウェア間で IO 要求が完了するまでにかかる時間。

Q2C – IO 要求全体に費やされた時間 (G2I + I2D + D2C = Q2C)。これは、iostat の待機に相当します。

D2C はハードウェア パフォーマンスの指標として使用でき、I2D は IO スケジューラ パフォーマンスの指標として使用できます。

[テスト 1: HP SSD Smart Path を有効にする前後の SSD 書き込みパフォーマンスの比較]

1. HP SSD Smart Path が有効、SSD コントローラー キャッシュが無効、キャッシュ比率: 読み取り 100% / 書き込み 0%

テスト結果は以下のとおりで、D2C(SSD上のIO要求にかかる時間)のAVG値に着目すると、約0.217msである。

2. HP SSD Smart Path はオフ、SSD コントローラー キャッシュはオン、キャッシュ比率: 読み取り 10% / 書き込み 90%

テスト結果は以下のとおりで、D2C(SSD上のIO要求によって消費される時間)のAVG値に着目すると、約0.0906msである。

【結論は】

前者は後者よりもハードウェア上で約 2.4 倍の時間がかかります。書き込みベースのシステムの場合は、HP SSD Smart Path を無効にし、SSD コントローラー キャッシュを有効にすることをお勧めします。

[テスト 2: noop と deadline I/O スケジューリング アルゴリズムのパフォーマンスの比較]

現在、ディスク スケジューリング アルゴリズムは 4 つあります。当社のシステムのアルゴリズムは Deadline として構成されており、多くのドキュメントでは SSD を noop として構成することが推奨されています。

1. 先行型、個人用 PC、単一ディスク システムに適しています。

2. CFQ (Complete Fair Queuing)、デフォルトのIOスケジューリングアルゴリズム、完全に公平なキューイングスケジューリングアルゴリズム

3. 期限: 期限に応じて各IOキューをスケジュールする

4. noop、単純なFIFOキュースケジューリング

以下のテストは、HP SSD Smart Path を無効にした状態で実施されました。

1. 締め切り、主にG2IとI2Dに焦点を当てる

2. noopに変更する

【結論は】

noop IO Scheduler は、待機時間と消費時間の点で、deadline よりもわずかに優れたパフォーマンスを発揮しますが、その差はそれほど大きくありません。評価が必要な場合は、さまざまなシナリオでさらに詳細なテストを行う必要があります。

次の図は、オンライン データに基づくさまざまなスケジューリング アルゴリズムのテスト比較です。

[テスト3: このサーバーSSDの消費時間を、同じ構成のSSDの消費時間と比較する]

AVG D2C は 0.0906ms と 0.0934ms でほとんど差がなく、このサーバーの SSD は応答時間の点で正常であることがわかります。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • SSDストレージを有効にしたMySQLインスタンスの詳細な説明
  • MySQL パフォーマンス最適化ベスト 20 体験共有
  • MySQL データベース エンジンの紹介、違い、作成、パフォーマンス テストの詳細な分析
  • MYSQL パフォーマンス最適化共有 (データベースとテーブルのシャーディング)
  • MySQL パフォーマンス最適化の道 --- 設定ファイル my.cnf を変更する
  • MySQL パフォーマンス設定
  • MySQLクエリのパフォーマンスを大幅に向上させるヒント
  • MySQL パフォーマンス最適化インデックス最適化

<<:  CentOS6.8 中国語/英語環境切り替えチュートリアル図

>>:  Ubuntu の仮想環境に Django をインストールする方法

推薦する

CSS で「プラス記号」効果を実装するためのサンプルコード

以下に示すプラス記号の効果を実現するには: この効果を実現するには、div 要素だけが必要です。 b...

Linux アカウントのパスワードを変更する詳細な例

個人アカウントのパスワードを変更する一般ユーザーが個人アカウントのパスワードを変更する場合は、他のコ...

CSS3 でシンプルな白い雲が浮かぶ背景効果を実現

これは非常にシンプルな純粋な CSS3 の白い雲の浮遊する背景効果です。浮かぶ白い雲の特殊効果は、C...

ウェブサイトにファビコンを追加するためのヒント: URLの前の小さなアイコン

いわゆるファビコンは、Favorites Icon の略で、中国語ではウェブサイトアバターと呼ばれて...

node.js が大規模プロジェクトに適さない理由

目次序文1. アプリケーションコンポーネント2. アプリケーションの種類3. アプリケーションサービ...

CSS3はさまざまな境界効果を実現します

半透明の境界線結果: 実装コード: <div> 半透明の境界線が見えますか? </...

aタグに下線を付け、クリック前後で色を変える方法

コードをコピーコードは次のとおりです。リンクフォントサイズ: 12px;色: #000000;テキス...

MySQL でインデックス構造として B+ ツリーを使用する利点は何ですか?

序文MySQL では、Innodb と MyIsam の両方がインデックス構造として B+ ツリーを...

CSS のオーバーフロー:hidden エラーの解決方法

失敗の原因今日、カルーセルを書いていたときに、overflow;hidden; が失敗する可能性があ...

Mysql: 定義者として指定されたユーザー ('xxx@'%') が存在しません 解決策

本日のプロジェクト最適化中に、MySQL に問題が発生しました: 定義者として指定されたユーザー (...

Ubuntuでネットワークルーティングテーブルを表示する方法

Linux におけるルーティングとルーティング テーブルとは何ですか?ルーティングのプロセスとは、ネ...

ヘッダーのチェックボックスをテキスト実装コードに変更するための選択テーブルを持つ要素

方法1: テーブル属性を使用する: header-cell-class-name テーブルインターフ...

MySQLのスケジュールタスクが正常に実行できない原因の分析と解決

目次序文原因分析と解決策スケジュールされたタスクを迅速に実行する要約する序文データベースのスケジュー...

MySQLのマスタースレーブ構成を使用して、読み取りと書き込みの分離を実現し、データベースの負荷を軽減します。

大規模な Web サイトでは、多数の同時アクセスを処理するために、Web サイト上の分散負荷分散以上...

JavaScript 初心者のための二分探索木アルゴリズムのチュートリアル

目次バイナリ検索木 (BST) とは何ですか?バイナリツリーの基本的な走査(インオーダー、ポストオー...