以前、EBS ボリュームにアタッチされている EC2 インスタンスで読み取り/書き込み iowait を監視したことがあります。iowait 列の出力はiostats
わずか 200 ~ 500us でした。EBS は実際にはネットワーク ボリュームであり、ローカル ネットワークのレイテンシは ~10ms レベルであるはずだと思うのですが、EBS はどのようにしてこの <1ms レイテンシを実現しているのでしょうか?
EFS についても同じ質問です。EFS をテストしていませんが、パフォーマンス ページでは読み取りレイテンシが 250us まで低くなる可能性があることが示されています。
https://docs.aws.amazon.com/efs/latest/ug/performance.html#パフォーマンス概要
答え1
引き上げるすべてのプログラマーが知っておくべきレイテンシの数値大まかなレイテンシの概算を行うときに使用します。正確だからではなく、桁数を伝えるためです。
数十マイクロ秒の遅延を実現できるイーサネット スイッチが存在します。同じ (巨大な) データ センター内のストレージ ノードに到達するには、それらのスイッチをいくつか経由する必要があります。これらのルータ間の転送時間をさらに数マイクロ秒追加します。
ストレージ スタックに関しては、合計が 1 ミリ秒未満であるため、第 1 層での回転は排除されます。ハード ドライブ アレイは、最良の状況でもシークに数ミリ秒かかります。明らかにソリッド ステート ストレージが使用されており、この場合も I/O 操作に数十マイクロ秒かかる可能性があります。
読み取りに 250 マイクロ秒かかると仮定すると、ストレージ スタックのさまざまなレイヤーをトラバースするための時間的余裕はあまり残りません。IP パケットをブロック操作に変換し、何らかのオペレーティング システムにそれを実行させ、クライアント OS がそれに対して何らかの処理を実行します。ハイパーバイザー、OS、ドライバー、ハードウェアを最適化するには、おそらくかなりの量のエンジニアリング作業が必要になります。
ご了承くださいEFS パフォーマンス テーブル驚異的な低レイテンシについて、「可能な限り低い」という修飾語が付いています。これはサービス レベル契約ではありません。ただし、実際にはその最速の水準を実現しています。
さらに、複数のゾーンストレージでは書き込みが1ミリ秒遅くなる可能性があることにも注意してください。これは、データを複数の建物に保存することによる耐久性のコストです。10km離れた光ファイバー内の光の速度伝播遅延だけで 50 マイクロ秒ほど追加されます。そのパスには不明な数のスイッチが追加されます。1 つのゾーンよりも耐久性を高めるには、複数のゾーンで書き込みを確認する必要があります。それでもかなり高速ですが、同じラック内のすべてのフラッシュ アレイが高速というわけではありません。
免責事項: これらはすべて、共有されていない独自のブラック ボックスです。ただし、同じ都市内のプライベート ネットワークでは、予想よりも 10 倍以上高速なレイテンシを実現できることは理解しておく価値があります。十分なエンジニアリングがあれば。