IOPSが重要な理由


32

IOPSとスループットについて理解しています。スループットは、MB / sおよびIOPSが1秒あたりに発生するI / O操作の数としてデータフローを測定します。

私が理解していないのは、多くのストレージサービスが提供するIOPSを表示する理由です。スループットの代わりにIOPSを知りたいシナリオは実際にはありません。

IOPSが重要な理由 AWSが主にストレージプロビジョニングをIOPSで表示するのはなぜですか?IOPSはスループット(MB / s)よりも関連性がありますか?


編集:

ランダムアクセスとは何か、それがパフォーマンスにどのように影響するか、HDDとSSDがどのように機能するかを尋ねたかのように、この質問を検討している人がいます...これに対して、それは質問の目標ではありません。質問は、「IOPS数値を見ると、どのような新しい情報が得られるのか、スループット(MB / s)数値が得られないのか」に関するものです。



3
大きなデータを移動する場合は、スループットが重要です。大量の小さなデータを読み書きする必要がある場合は、より多くのIOPSが必要です。eg1デバイスからMBのデータを読み取ることができる単一の操作がある場合、1つの操作だけで高いスループットを得ることができます。eg2多数のファイル属性を読み取る必要がある場合、毎回大量のデータを見ているわけではありませんが、少量のデータを取得するために多くの操作を行う必要があります。スループットは低くなりますが、多くの操作が必要になります。
-TafT

回答:


32

スループット

スループットは、ファイルのコピーなどを行うときに役立ちます。あなたが他のほとんど何でもしているとき、それはあなたを制限するディスク全体のランダムな読み書きです。

IOPS

IOPSは通常、各データパケットのサイズを指定します。たとえば、AWS gp2は、16 KiBのペイロードサイズで10,000 IOPSを実行できます。これは、160MiB /秒に増加します。ただし、常にフルペイロードサイズを使用する可能性は低いため、実際のスループットはおそらく低くなります。NB KiBは1024バイト、KBは1000バイトです。

IOPSは、合計スループットも提供するパケットサイズを指定するためです。一方、高いスループットは、高いIOPSがあることを意味しません。

シナリオ

これらのシナリオを考慮してください:

  • PCを起動します。コンピューターのSSDと回転ディスクの違いを考えてみてください。これは多くの人が直接経験していることです。回転ディスクの場合、起動時間は1分になりますが、SSDの場合、これは10〜15秒になります。これは、IOPSが高いと、情報が要求されたときの待ち時間が短くなるためです。回転するディスクのスループットは150MB /秒と非常に優れていますが、SSDが高い可能性が高いため、情報が返されるまでの待ち時間が短くなっています。
  • OSアップデートの実行。ディスク全体に渡って、ファイルの追加と修正が行われます。IOPSが低い場合、スループットに関係なく低速になります。
  • データベースを実行します。たとえば、大規模なデータベースから少量のデータを選択します。インデックスから読み取り、多数のファイルから読み取り、結果を返します。繰り返しますが、情報を収集するためにディスク全体に行きます。
  • PCでゲームをプレイします。ディスク全体から多数のテクスチャをロードする可能性があります。この場合、IOPSとスループットが必要になる可能性があります。

LTOテープ

しばらくの間、テープバックアップシステムを検討してください。LTO6は400MB /秒を実行できますが、(ここでは推測しています)1つのランダムIOPを実行することさえできません。一方、IOPSがテープへのデータパーセルの読み取りまたは書き込みとして定義されている場合は、おそらく大量のシーケンシャルIOPSを実行できます。

OSをテープからブートしようとした場合、まったく機能していれば、時間がかかります。これが、IOPSがスループットよりも役立つ場合が多い理由です。

ストレージデバイスを理解するには、おそらく、それがランダムまたはシーケンシャルIOPSであるかどうか、およびIOサイズを知りたいでしょう。それからスループットを引き出すことができます。

AWS

このページでは、AW​​SがすべてのストレージタイプのIOPSとスループットの両方の数値を公開していることに注意してください。汎用SSD(gp2)は10,000個の16KiB IOPSを実行でき、最大160MB /秒を提供します。プロビジョンドIOPS(io1)は20,000 16KiB IOPSで、最大320MB /秒を提供します。

gp2ボリュームでは、プロビジョニングされたGBあたり30IOPSを取得するため、10,000 IOPSを取得するには、333.33GBのボリュームが必要です。io1ボリュームに同様の制限があるかどうかは思い出せません(そのようなことをテストする関連試験を行ってからしばらく経ちました)が、そうであると思われます。

結論

高い順次スループットは有用であり、場合によってはパフォーマンスの制限要因になりますが、ほとんどの場合、高いIOPSがより重要です。もちろん、IOPSに関係なく適切なスループットが必要です。


IOPSはランダムアクセスのパフォーマンスを測定しますが、実際にどれだけ速く処理されているかは表示されません... 10000 IOPSを実行している可能性がありますが、これは低速または高速の可能性があります。操作が消費するMB / s。
mFeinstein

IOPSは通常、データペイロードサイズを指定します。AWSは16KiBと言います。16KiB / sで10,000 IOPSの場合、160MB /秒になります。
ティム

2
ただし、16KBでの10000 IOPSは、8KBでの20000 IOPSには変換されません(約11000)。つまり、ドライブ/ワークロードを評価するには、IOPSとスループットの両方を知る必要があります。
boot4life

4
教訓的であるために、1 IOPではなく1 IOPSのままです。sは複数形ではありません
マシュースティープルズ

1
私は他のことを考えることができません。IOPSが高いもののほとんどはかなり高いスループットですが、ほとんどの場合、スループットではなくIOPSがあるため便利です。別の例としては、リレーショナルデータベースがありますが、それはソフトウェアのストレージデバイスではありません。この質問からあなたが他に何を望んでいるのか分かりません。コンセプトはあなたに徹底的に説明されていると思います。シーク時間または待ち時間が長いものは、おそらくIOPSが低くなりますが、場合によってはスループットを分離して高くすることができます。
ティム

57

これは、シーケンシャルスループットが、ほとんどのI / Oアクティビティの発生方法ではないためです。

ランダムな読み取り/書き込み操作は、通常のシステムアクティビティをよりよく表しており、通常はIOPSによって制限されます。

私のサーバーの1つから顧客にポルノをストリーミングする(またはCDNにアップロードする)ことは本質的に連続的であり、スループットの影響がわかります。

しかし、ポルノをカタログ化し、サイト全体のユーザーアクティビティを追跡するデータベースを維持することは、本質的にランダムであり、基礎となるストレージで可能な1秒あたりの小さなI / O操作の数によって制限されます。

ピーク使用率でデータベースを実行するには2,000 IOPSが必要な場合がありますが、アクティビティの種類により、ディスクレベルで30MB / sのスループットしか表示されない場合があります。ディスクは1200MB / sの能力がありますが、IOPSは環境の制限です。

これは、ストレージシステムの容量の可能性を説明する方法です。SSDには、80,000 IOPSおよび600MB / sスループットを実行する能力がある場合があります。6個の通常の10k SASディスクでそのスループットを得ることができますが、約2,000 IOPSしか得られません。


IOPSによって、MB / sが役に立たないシステムのパフォーマンスに関する洞察が得られる例を教えてください。
mFeinstein

@mFeinstein上記のポルノの例を参照してください。
ewwhite

33
ポルノの例+1
mFeinstein

2
また、オペレーティングシステムは、ほとんどランダムアクセスを行わない可能性があります。Seqスループットは役に立ちません。それが、少なくともPCでSSD上でOSを実行する理由です。
sudo

3
〜2MB /秒を実行する完全に使用されたディスクをよく見ます。これは、100%ランダムIOであるためです。時々、信じられないほどのパフォーマンスの向上は、ディスク上のデータを連続してレイアウトすることによって可能になる場合があります(断片化の除去、データベースのインデックス作成など)。
boot4life

6

一方でewwhiteの答えは完全に正しいですが、私はちょうど視点でなぜ差事項を置くのに役立ついくつかのより具体的な数字を提供したかったです。

ewwhiteがすでに正しく述べているように、ほとんどの非ストリーミングアプリケーションは主に非シーケンシャルディスク操作を実行するため、理論的なピークスループットに加えてIOPSも重要です。

同僚と私が開発システムにSSDを最初にインストールして、以前使用していたHDDを交換したとき、パフォーマンスの測定をいくつか実施しました。

SATA HDDの結果:

シーケンシャル読み取りスループット:〜100 MB / s
非シーケンシャル読み取りスループット(2kブロック、IIRC):〜1 MB / s

PCIe接続SSDの結果:

シーケンシャル読み取りスループット:〜700 MB / s
非シーケンシャル読み取りスループット(2kブロック、IIRC):〜125 MB / s

この例から明らかなように、各デバイスの最大スループットをリストするだけでは、デバイスの比較方法が非常に不正確になります。SSDは、大きなファイルを連続して読み取る場合、HDDの約6〜7倍しか高速ではありませんが、ディスクのさまざまな部分から小さなデータチャンクを読み取る場合、100倍以上の速度です。もちろん、HDDの場合、この制限は主に、HDDが物理的にr / wヘッドを目的のトラックに移動してから、目的のデータがヘッドの下でスピンするのを待つ必要があるという事実によるものです。

コンパイル時間は、最大スループットの単純な比較が示唆するよりも大幅に改善されました。以前は30分以上かかっていたビルドが約1分で完了しました。大規模なビルド中のディスクI / Oは、個別に非常に大きくなく、ディスク全体に物理的に散在する可能性がある多くの個別のソースファイルの読み取りと書き込みで構成されているためです。

スループットとIOPSの両方の数値を提供することにより、特定のワークロードが特定のストレージデバイスでどのように実行されるかについて、より良いアイデアを得ることができます。断片化されていない大量のデータを単にストリーミングしている場合、最大スループットにかなり近くなります。ただし、ディスクに連続して格納されない小さな読み取りや書き込みを多数行う場合は、IOPSによって制限されます。


IOPSも測定していませんか?
mFeinstein

3

IO操作を実行するには、ドライブが一連の操作を実行する必要があります。メカニカルハードドライブの場合は、必要です。

  1. 適切なトラックを探して、適切な頭を選択します。
  2. プラッターが正しい位置に回転するのを待ちます。
  3. 実際にデータを転送します。

3にかかる時間はデータブロックのサイズによって異なりますが、1と2にかかる時間はリクエストのサイズとは無関係です。

見出しのスループットとIOPの数値は、極端な場合を表しています。見出しのスループットの数値は、各操作に大きなデータブロックが含まれているため、ドライブが実際にデータを移動する時間のほとんどを費やしている場合を表しています。

見出しのIOPの数値は、データブロックが非常に小さいため、ヘッドの探索とプラッターの回転の待機にほとんどの時間が費やされる場合を表しています。

多くのワークロードでは、ブロックは十分に小さいため、転送されるブロックの数はブロックのサイズよりもはるかに重要です。


2

IOボリューム(または実際にはIO全般)で発生する可能性のあるボトルネックには2つのタイプがあります。

実際に、実際のパフォーマンスは、移動されたデータの量に基づいてコンポーネントを含むように測定され、利用可能な帯域幅または同様の単​​位コスト*サイズでスケーリングされますが、リクエストに関連するオーバーヘッド、つまりディスク、ネットワーク、または他の多くのもの。

unitcost *サイズ+オーバーヘッド。線の方程式。

ユニットコストが大きい場合、またはサイズが大きい場合は、携帯電話ネットワークなどのこれらのボリュームに基づいて請求するのが理にかなっていますが、一方で、オーバーヘッドははるかに重要です。

この簡単な実験を自分で行い、1GBのファイルをいくつか含むディレクトリ(または実用的なもので、読み取り/書き込みに数秒かかるもの)を作成してから、100バイトのファイルを100万個含むフォルダを作成できます。 (これは0.1GBのデータです)、異なるパーティション/ディスク間でこれらすべてを移動しようとすると、スループットに何が起こるかを確認してください-大きなファイルのスループットによってパフォーマンスが調整され、小さいもののファイル数。

アマゾンは両方の充電モデルを認識しており、インフラストラクチャの機能をより適切に表していることがわかりました。

IOPのサイズには制限がありますが、これはストアが「サイクル」で転送できる量に広く関係しているため、大きなリクエストは依然として複数のIOPSを犠牲にします。

アマゾン自体からIOPSとコストについての素晴らしい作品があり、最適化を通じてそれらが引き継ぐ「節約」があります

I / Oの特性と監視

すべてを読むわけではありませんが、この領域に興味がある場合は興味深いようです。


2

質問に答える

「IOPS数値を見ると、スループット(MB / s)数値が表示されないという新しい情報を取得できますか?」

直接、それは指定されたキューの深さとファイルサイズのIO操作が1秒間に何回行うことができるかです。次の式を使用して、特定の条件でスループットを計算できます。

IOPS *ファイルサイズ=スループット

ストレージテストでは、ファイルサイズとキューの深さに応じて、異なる数のIOPSが生成される場合があります。キューの深さ= 1または2では、コントローラーはキャッシュを利用しませんが、キューの深さでは32、256、512の数が数回増加し、あまり変化しません。ファイルサイズが128KBの場合、IOPSカウントは4KBファイルの次に低くなりますが、スループットは高くなります。

ストレージのパフォーマンスを評価する最良の方法は、いくつかの異なるブロックサイズとキュー深度でIOPSとスループットのテストを行うことです。


IOPSとスループットを少し混同しているのではないかと思います。スループットは連続アクセスの同義語ではありませんが、特定の時間にストレージが処理できる合計MB /秒です。 SSDのスループットは同じです。連続アクセスの場合です...ランダムアクセスのスループットもあるため...シーク時間が原因で、HDDの場合ははるかに少なくなります。
mFeinstein

したがって、IOPSはランダムアクセスと同義ではないため、最初は連続アクセス、最後はランダムアクセスに言及していることを回答に含める必要があります。IOPSを測定
-mFeinstein

@mFeinstein答えを編集しました。ご覧ください。
ユージン

1

一般的に、IOPSはスループットよりも取得が困難です。IOPSが多い場合は、ほとんどの場合十分なスループットが得られます。

従来のハードドライブでは、各ドライブでヘッドを物理的に移動する必要があるため、軸の数が制限要因となります。これは非常に遅いです。SSDのIOPS容量ははるかに優れています。

ネットワークに1つの大きなファイルをコピーするユーザーが1人だけの場合、データを取得するシークは数十回だけで、残りはディスクからのストリーミングのみになります。

ただし、データベースにアクセスしている場合、または多数の同時ユーザーがいる場合は、IOPSが急増して、ストレージのさまざまな部分に同時にアクセスする必要があります。

リレーショナルデータベースで並列に10行を更新するだけで、インデックスの読み取り、データの読み取り、ログファイルの追加、インデックスとデータの更新など、数百のIOが生成される場合があります。ほとんどのオペレーティングシステムとデータベースは、可能な場合にIOをキャッシュおよび遅延/グループ化することにより、IOの数を制限しようとします。


1

私は自分の質問にも答えます。なぜなら、ほとんどの答えはトピックから大きく外れていて、答えはずっと簡単だからです。

ストレージデバイスのスループットのみを見ると、何が起こっているのかを見逃す可能性があります...スループットが低い(MB / sが低い)場合、デバイスが遅いか、HDDまたは他のデバイスでランダムアクセスが多い可能性がありますランダムアクセスはうまく処理されません。

IOPSを調べて各I / O操作のチャンクサイズを知ることで、ストレージデバイスが処理できるアクセス数と、これらのIOPSのスループット(チャンクサイズ* IOPS)を知ることができます。

したがって、高いIOPSを見ると、ストレージデバイスはスループットが低い場合でも大量のランダムアクセスを処理していると結論付けることができます。または、同じ低スループットの低いIOPSを検討しているので、デバイスがアイドル。

そのため、IOPSを調べることで、スループットが実際に何を意味するのかを知ることができ、両者は互いに補完し合っています。


IOPS = 1秒あたりの入力/出力、複数形ではなく、末尾のSは省略しないでください。:)
ユージン

1
複数ではありません。IOPを「I / O操作」の
略語と呼ぶ人
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.