IOPSとスループットについて理解しています。スループットは、MB/sおよびIOPSが1秒間に発生するI/O操作の数を示すため、データフローを測定します。
私が理解していないのは、多くのストレージサービスが提供するIOPSを表示するだけの理由です。スループットではなくIOPSを知りたいシナリオは、実際にはありません。
なぜIOPSが重要なのですか? AWSが主にストレージのプロビジョニングをIOPSで表示するのはなぜですか? IOPSはスループット(MB /秒)よりどこに関連していますか?
編集:
ランダムアクセスとは何か、それがパフォーマンスにどのように影響するか、HDDとSSDがどのように機能するかを尋ねたかのように、この質問を検討している人もいます...これに、それは質問の目標ではありません、質問は約です"IOPS番号が表示されたときに、スループット(MB/s )番号? "
スループット
スループットは、ファイルのコピーなどを行うときに役立ちます。あなたが他のほとんど何でもしているとき、それはあなたを制限するディスク全体のランダムな読み書きです。
[〜#〜] iops [〜#〜]
IOPSは通常、各データパケットのサイズを指定します。たとえば、AWS gp2は16 KiB ペイロードサイズで10,000 IOPSを実行できます。これは、160MiB /秒に増加します。ただし、フルペイロードサイズを常に使用することはおそらくないため、実際のスループットはおそらく低くなります。 NB KiBは1024バイト、KBは1000バイトです。
IOPSは、合計スループットも与えるパケットサイズを指定するためです。一方、スループットが高くても、IOPSが高いとは限りません。
シナリオ
次のシナリオを検討してください。
LTOテープ
とりあえずテープバックアップシステムを考えてみましょう。 LTO6は400MB /秒を実行できますが、(私はここで推測します)おそらく1つのランダムIOPを実行することもできません。IOPあたりの秒数になることもあります。一方、IOPSがデータの一部をテープに読み書きするように定義されている場合、シーケンシャルIOPSの多くを実行できます。
テープからOSをブートしようとした場合、それが機能する場合、長い時間がかかります。これが、IOPSがスループットよりも役立つことが多い理由です。
ストレージデバイスを理解するには、ランダムなIOPSかシーケンシャルIOPSか、およびIOサイズ。それからスループットを得ることができます。
[〜#〜] aws [〜#〜]
AWSは、すべてのストレージタイプについてIOPSとスループットの両方の数値を公開することに注意してください このページ 。汎用SSD(gp2)は10,000の16KiB IOPSを実行でき、最大160MB /秒を提供します。プロビジョニングされたIOPS(io1)は20,000の16KiB IOPSであり、最大で320MB /秒です。
Gp2ボリュームでは、プロビジョニングされたGBあたり30IOPSが得られるため、10,000 IOPSを得るには333.33GBボリュームが必要です。 io1ボリュームに同様の制限があるかどうかは思い出しませんが(そのようなことをテストする準試験を行ってからしばらく経っています)、そうだと思います。そうであれば、おそらく1 GBあたり60IOPSです。
結論
高いシーケンシャルスループットは有用であり、場合によってはパフォーマンスの制限要因になりますが、ほとんどの場合、高いIOPSがより重要になる可能性があります。もちろん、IOPSに関係なく、妥当なスループットが必要です。
これは、シーケンシャルスループットではほとんどのI/Oアクティビティが発生しないためです。
ランダムな読み取り/書き込み操作は、通常のシステムアクティビティをよりよく表し、通常はIOPSによって制限されます。
私のサーバーの1つ からポルノをお客様にストリーミング(またはCDNにアップロード)することは、本質的にシーケンシャルであり、スループットの影響がわかります。
しかし、ポルノをカタログ化し、サイト全体のユーザーアクティビティを追跡するデータベースを維持することは、本質的にランダムであり、基礎となるストレージが実行できる1秒あたりの小さなI/O操作の数によって制限されます。
ピーク使用時にデータベースを実行するには2,000 IOPSが必要な場合がありますが、アクティビティの種類により、ディスクレベルで30MB/sのスループットしか表示されない場合があります。ディスクは1200MB /秒の能力がありますが、IOPSは環境の制限です。
これは、ストレージシステムの潜在的な容量を説明する方法です。 SSDには、80,000 IOPSと600MB/sのスループットを実現する機能がある場合があります。 6つの通常の10k SASディスクでそのスループットを得ることができますが、約2,000 IOPSしか得られません。
ewwhiteの回答 は完全に正しいですが、違いが重要である理由を説明するために、より具体的な数値をいくつか提供したかったのです。
Ewwhiteがすでに正しく述べたように、ほとんどの非ストリーミングアプリケーションは主に非順次ディスク操作を実行するため、理論上のピークスループットに加えてIOPSが重要になります。
同僚と私が最初にSSDを開発システムにインストールして、以前使用していたHDDを置き換えると、いくつかのパフォーマンス測定が実行され、なぜこれが重要なのかが明らかになりました。
順次読み取りスループット:〜100 MB /秒
非順次読み取りスループット(2kブロック、IIRC):〜1 MB /秒
順次読み取りスループット:〜700 MB /秒
非順次読み取りスループット(2kブロック、IIRC):〜125 MB /秒
例から明らかなように、各デバイスの最大スループットをリストするだけでは、デバイスの比較方法が非常に不正確になります。 SSDは、大きなファイルを連続して読み取る場合、HDDの約6〜7倍の速度ですが、ディスクの異なる部分から小さなデータのチャンクを読み取る場合、100倍以上の速度です。もちろん、HDDの場合、この制限は主にHDDがr/wヘッドを目的のトラックに物理的に移動し、目的のデータがヘッドの下で回転するのを待つ必要があるという事実によるものですが、SSDには物理的なパーツはありません。
コンパイル時間は、最大スループットの単純な比較が示唆するよりもはるかに劇的に改善されました。以前は30分以上かかっていたビルドは、今では約1分で完了しました。大規模なビルド中のディスクI/Oは、個別にはそれほど大きくなく、ディスク全体に物理的に分散している可能性がある多数の個別のソースファイルの読み取りと書き込みで構成されるためです。 。
スループットとIOPSの両方の数値を提供することで、特定のストレージデバイスで特定のワークロードがどのように実行されるかについて、はるかに良いアイデアを得ることができます。断片化されていない大量のデータをストリーミングしているだけであれば、最大スループットにかなり近づきます。ただし、ディスクに順番に格納されていない小さな読み取りや書き込みを多数実行している場合は、IOPSによって制限されます。
IO操作を実行するには、ドライブが一連の操作を実行する必要があります。機械的なハードドライブの場合、操作が必要です。
3にかかる時間はデータブロックのサイズによって異なりますが、1と2にかかる時間はリクエストのサイズとは無関係です。
見出しのスループットとIOPの数値は、極端な場合を表しています。見出しのスループットの数値は、各操作に大量のデータブロックが含まれる場合を示しているため、ドライブはほとんどの時間を実際にデータの移動に費やしています。
見出しのIOPの数値は、データのブロックが非常に小さいため、ほとんどの時間は、ヘッドの検索とプラッターの回転の待機に費やされている場合を表しています。
多くのワークロードでは、ブロックは十分に小さいため、転送されるブロックの数はブロックのサイズよりもはるかに重要です。
あなたの質問に答える
「IOPS番号が表示されたときに、スループット(MB/s)番号が表示されないという新しい情報は何ですか?」
直接、それはどのくらいの数IO指定されたキューの深さとファイルサイズの操作が1秒あたりにストレージに実行できるかです。次の式を使用して、特定の条件でスループットを計算できます。
IOPS *ファイルサイズ=スループット
ストレージテストでは、ファイルサイズとキューの深さに応じて、異なる数のIOPSが生成される場合があります。キューの深さが1または2の場合、コントローラーはキャッシュを利用しませんが、キューの深さが32、256、512の場合は数回上昇し、あまり変化しません。ファイルサイズが128KBの場合、IOPSカウントは4KBファイルの横では低くなりますが、スループットは高くなります。
ストレージのパフォーマンスを評価する最良の方法は、いくつかの異なるブロックサイズとキューの深さでIOPSとスループットテストを探すことです。
IOボリューム(または実際にはIO一般的には))で発生する可能性のある2種類のボトルネックがあります。
実際のパフォーマンスは実際に測定され、移動されたデータの量に基づいたコンポーネント、利用可能な帯域幅または同様の単位コスト*サイズに基づいてスケーリングされますが、ディスク、ネットワーク、またはその他の一定の要求に関連するオーバーヘッドもあります。他の多くのもの。
unitcost *サイズ+オーバーヘッド。線の方程式。
単価が大きい場合、またはサイズが大きい場合は、携帯電話ネットワークなど、これらのボリュームに基づいて課金するのが合理的ですが、オーバーヘッドがはるかに重要になる場合もあります。
あなたはこれの簡単な実験を自分で行うことができ、数GBのファイル(または実用的なもの、それを読み書きするのに数秒かかる十分な大きさ)を含むディレクトリを作成し、100万の100バイトのファイルを含むフォルダを作成できます(これは0.1GBのデータです)、異なるパーティション/ディスク間でこのすべてのものを移動しようとすると、スループットがどうなるかを確認してください-大きなファイルのスループットによってパフォーマンスが抑制され、小さいもののためのファイルの数。
私は、Amazonが両方の課金モデルを認識しており、インフラストラクチャの機能をより適切に表すものを見つけたと思います。
いずれにしてもストアが「サイクル」で転送できる量に広く関連するIOPのサイズには制限があるため、大きなリクエストでも依然として複数のIOPSのコストがかかります。
IOPSとコストについて、Amazonからの素晴らしい記事があり、最適化によって「節約」されます
すべてを読んでいるわけではありませんが、この領域に興味がある場合は興味深いようです。
一般的に言えば、IOPSはスループットよりも取得が困難です。 IOPSが多い場合、ほとんどの場合、十分なスループットが得られます。
クラシックハードドライブでは、ヘッドを各ドライブで物理的に移動する必要があるため、軸の数が制限要因となります。 SSDのIOPS容量ははるかに優れています。
ユーザーが1人だけで、1つの大きなファイルをネットワークにコピーする場合、データを取得するためのシークは数十回しかなく、残りはディスクからのストリーミングのみになります。
ただし、データベースにアクセスしている場合、または多数の同時ユーザーがいる場合は、IOPSが急上昇しているため、ストレージのさまざまな部分に同時にアクセスする必要があります。
リレーショナルデータベースで10行を並行して更新するだけで、インデックスの読み取り、データの読み取り、ログファイルの追加、インデックスとデータの更新など、何百ものIOが生成される可能性があります。ほとんどのオペレーティングシステムとデータベースは、可能な場合はIOをキャッシュおよび遅延/グループ化することにより、IOの数を制限しようと非常に努力しています。
私自身の質問にも答えます。ほとんどの答えはトピックから外れ、答えはもっと単純になると思います。
ストレージデバイスのスループットのみを見ると、何が起こっているのか見落とす可能性があります...スループットが低い(MB /秒が低い)場合、デバイスが遅い可能性がありますOR HDDまたはランダムアクセスを適切に処理しないその他のデバイスでのランダムアクセス。
IOPSを調べて、各I/O操作のチャンクサイズを知ることで、ストレージデバイスが処理できるアクセス数と、これらのIOPSのスループット(チャンクサイズ* IOPS)を知ることができます。
したがって、高いIOPSを見ると、たとえスループットが低くても、ストレージデバイスが大量のランダムアクセスを処理していると結論付けることができます。または、同じ低スループットの低いIOPSを調べている、つまりデバイスがちょうどアイドル。
したがって、IOPSを確認することで、スループットが実際に何を意味するかを把握でき、両者は互いに補完し合っています。