質問: 1を使用する必要があることに関する警告が含まれていることに注意してください)。 コマンド?それは並列ジョブを作成しますが、それでもジョブを並列で実行するオプションがあります(それは些細なことでも競合することでもありませんか?) 簡単な概要を説明しますが、キャッシング/先読み/プラグイン/ブロックデバイスレイヤー(raid/lvmなど)などについては説明しないことに注意してください。 同期fio i/oエンジンは、単一のi/oをosに送信し、受信されたことが「確認」されるのを待ってから、別のi/oなどを送信します。 fio i/oエンジンがi/oを本当に非同期にosに送信できる場合(上記のリンクを参照)、送信前に以前のi/oが「確認」されるのを待つ必要がないことが重要です。新しいi/o。 iodepthが1のみの場合、同期i/oエンジンと同様の方法で動作する必要があります。ただし、ジョブでiodepthが32に指定されているとしましょう。その場合、fioがi/oを送信する前に待機することを選択する前に、最大32のi/oが未処理のままになります(透かしとは何か、送信される量は時間はiodepth_batch_ *オプションによって制御されます。これはより効率的で、より高いスループットを実現できますが、多くの場合、レイテンシが高くなります。 fioは並列fioジョブを作成しません。並列fioジョブを使用するiodepth butは、同時に送信される同時i/oの量を増やすもう1つの方法です。特定の時間(異なるスレッド/プロセスを使用)と同じデバイスで両方を使用すると、タンデムで動作します(16のiodepthで非同期i/oを送信する2つのfioジョブがある場合、osは実際に32 i /いつでもos)。 2つを組み合わせる理由がある場合があります(たとえば、複数のデバイスがあり、それらが非常に高速であるため、i/oを非同期で送信した場合でも、1つのcpuが追い付かないことがあります)。 私はfioがどのようにしてワークロードを制御しているかを理解するのに苦労しています(特にこのiodepthについて)。誰かがiodepthパラメータを詳細に説明できますか?. stackexchange( fioのiodepthとは正確には何ですか? )でもこの質問をしたことを覚えておきます。そこから https://www.spinics.net/lists/fio/msg07190.html にリンクして、同様の質問をする可能性のある他のユーザーを支援することもできます...
回答: それは簡単なことではないでしょうか? iodepth =が機能するために必要な直接ioを想定します。iodepth = 2の順次ジョブは、2つの順次ioリクエストを一度に送信します。numjobs = 2の順次ジョブには2つのスレッドがあり、それぞれが順次ioを送信します。これらは異なりますioパターン。後者は、ioバス全体で2倍の帯域幅を生成します。物理的なioデバイスキャッシュが原因で1xに戻ります(複数のファイルとランダム化されたfile_service_type=)。 ioが同期書き込みである場合(sync = true)、デバイスが異常な量の最適化(おそらくssdコントローラの重複排除)を実行していない限り、物理ioはまったく削減されません) 。