ビッグデータと人工知能の今日の文脈では、IO パフォーマンスはあらゆるコンピューター システムにとって重要です。 Linux システムの場合、その IO パフォーマンス モデルと最適化戦略を深く理解する必要があります。この記事では、Linux システムの IO モデルとさまざまな IO 操作のパフォーマンス最適化方法を詳しく紹介します。
現在の主流のサードパーティ IO テスト ツールには、[neiqian]fio[/neiqian]、[neiqian]iometer[/neiqian]、[neiqian]Orion[/neiqian] があります。これら 3 つのツールにはそれぞれ、自分自身の長所。
fio は Linux システムで使用すると便利です。iometer はウィンドウ システムで使用すると便利です。Orion は Oracle の IO テスト ソフトウェアで、Oracle データベースをインストールせずに Oracle データベース シナリオの読み取りと書き込みをシミュレートできます。
以下は、Linux システムで fio ツールを使用した SAN ストレージの IO テストです。
1. fioをインストールします
方法 1: fio 公式 Web サイトから fio-2.1.10.tar ファイルをダウンロードし、解凍後、./configure、make、make install の後に fio を使用できます。
方法 2: Linux システムで yum を使用してインストールします (yum install -y fio
)2. [neiqian]fio[/neiqian]パラメータの説明
fio -help を使用して各パラメータを表示できます。特定のパラメータについては、公式 Web サイトでドキュメントの作成方法を参照できます。以下は、いくつかの一般的なパラメータの説明です。
リーリー3. fio テスト シナリオとレポート生成の詳細説明
テストシナリオ:
100% ランダム、100% 読み取り、4K
リーリー100% ランダム、100% 書き込み、4K
リーリー100% シーケンス、100% 読み取り、4K
リーリー100% 注文、100% 書き込み、4K
リーリー100% ランダム、70% 読み取り、30% 書き込み 4K
リーリー結果レポートの表示:
リーリー4. IO キューの深さの拡張
ある時点で、キュー内の IO リクエストとディスクによって処理されている IO リクエストを含む、N 個のインフライト IO リクエストがあります。 N はキューの深さです。
ハードディスクのキューの深さを増やすと、ハードディスクが継続的に動作し、ハードディスクのアイドル時間が短縮されます。
キューの深さを増やす -> 使用率を改善する -> ピーク IOPS と MBPS を取得する -> 応答時間は許容範囲内であることに注意してください。
キューの深さを増やす方法はたくさんあります。非同期 IO を使用し、同時に複数の IO リクエストを開始することは、キュー内に複数の IO リクエストがあることと同じです。同期 IO リクエストを開始するマルチスレッドは、キュー内に複数の IO リクエストがあることと同じです。 。
アプリケーションの IO サイズを増やします。最下層に到達すると、キュー内の複数の IO リクエストに相当する複数の IO リクエストになります。キューの深さが増加します。
キューの深さが増加すると、キュー内の IO の待機時間も増加し、IO 応答時間が長くなり、トレードオフが必要になります。
ディスク I/O を並列化する必要があるのはなぜですか?主な目的は、アプリケーションのパフォーマンスを向上させることです。これは、複数の物理ディスクで構成される仮想ディスク (または LUN) の場合に特に重要です。
I/O を一度に 1 つずつ送信すると、応答時間は短くなりますが、システムのスループットは非常に小さくなります。
比較すると、一度に複数の I/O を送信すると、(エレベーター アルゴリズムを通じて) ヘッドの移動距離が短縮されるだけでなく、IOPS も向上します。
エレベーターに一度に一人しか乗れない場合、全員がエレベーターに乗れば早く目的地に到着できますが(応答時間)、待ち時間(待ち行列の長さ)は長くなります。
複数の I/O をディスク システムに一度に送信すると、スループットと全体的な応答時間のバランスが取れます。
Linux システムでデフォルトのキューの深さを表示する:
リーリーdd コマンドを使用して、テスト用に bs=2M を設定します:
リーリー1000 0 の読み取りを記録しました。1000 0 の書き込みを記録しました。2097152000 バイト (2.1 GB) がコピーされました、10.6663 秒、197 MB/秒
リーリー2MB IO が最下層に到達すると、複数の 512KB IO になることがわかります。平均キュー長は 2.39 です。このハードディスクの使用率は 97%、MBPS は 197MB/s に達します。
(なぜ 512KB IO になるのでしょうか? Google を使用すると、カーネル パラメーター max_sectors_kb の意味と使用法を確認できます。) つまり、キューの深さを増やすと、ハードディスクのピーク値をテストできます。
5. Linux システムでの IO コマンド iostat の表示の詳細な説明
リーリー出力パラメータの説明:
リーリーこの記事の調査と実験を通じて、Linux システムの IO パフォーマンスの最適化は、システムのハードウェア構成を改善するだけで解決できる問題ではなく、特定のアプリケーション シナリオと IO 操作に対する包括的な考慮と最適化が必要であることがわかります。 . . IO スケジューラの使用、RAID アレイの使用、ハードディスク キャッシュの使用など、さまざまな方法とツールを使用して Linux システムの IO パフォーマンスを調整できます。私たちの調査が大多数のユーザーにとって啓発的で役立つものとなり、Linux システムの IO パフォーマンスがより高いレベルに向上することを願っています。
以上がLinux システムにおける IO パフォーマンス最適化の秘密を探るの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。