web-dev-qa-db-ja.com

AWS EBSのIOオペレーション(IOP)のサイズはどのくらいですか?

私の調査によると、最新のファイルシステム(ext4、xfs)の標準ブロックサイズと最大(カーネル制限)ブロックサイズはどちらも4KBです。ただし、 AWSはIO 256KBのオペレーション を許可し、

32KB以下のI/O操作の場合、ドライブをビジー状態に保つのに十分なI/Oを駆動していれば、プロビジョニングしたIOPSの量を確認できます。小規模なI/O操作の場合、プロビジョニングした値よりも高いIOPS値が表示される場合があります(クライアント側で測定した場合)。これは、クライアントが複数の小規模なI/O操作を少数にまとめている可能性があるためです。大きなチャンクの。

Linuxは「デバイスブロックサイズ」の設定をどこに公開または許可しますか?たとえば、postgresでの全表スキャン(8KBブロックサイズ)では、OSが発行する「IO操作」のサイズをどこで確認および/または構成できますか?

5
user4258

1つのI/O操作のサイズは、多くのことに依存します。アプリケーションの平均を計算することは必ずしも悪い考えではありません。

それらのAmazonの定義は、彼らのハードウェアが256KBのブロックをサポートすることを意味します。単一のI/O操作は、1つのブロックの読み取りまたは書き込みです。操作が2つのブロックにまたがるハードウェアへの「非整列」アクセスは、ソフトウェアとハ​​ードウェアのブロックサイズが一致していても、2つのI/O操作になります。これが、ハードウェアブロックサイズと同じサイズのファイルシステムブロックサイズを使用することがI/Oパフォーマンスにとって非常に役立つ理由です。ただし、ファイルシステムブロックは割り当て量であるため、ストレージ効率を低下させる可能性があります。

読み取りはメモリページに入るので、ファイルシステムのブロックサイズは、メモリページサイズによって大きく決まります。通常、x86Linuxではメモリページは4kBです。カーネルはより大きなページをマップできますが、通常の4kBページと巨大な4MBページの間に中間サイズはありません。したがって、最近のシステムやハードウェアではこれを実際に調整することはできません。

ただし、ファイルシステムは、断片化を防止することにより、複数のブロックにわたるすべての読み取りと書き込みをシーケンシャルにすることを試みることができます。 EXT4は、ブロックが要求されたときに次の空きブロックを割り当てるのではなく、ディスク上にファイルをまばらに割り当てることによってこれを行います。他のファイルシステムにもこれに対する戦略があります。カーネル(ファイルシステムおよびディスクドライバー)は、これらのブロックが物理的に連続していて、物理ブロックの境界を越えない場合、複数のブロックにまたがる単一の読み取り操作を単一の読み取り操作に集約できます。

ディスクドライバはディスクのブロックサイズを自動的に検出します。調整することはできません。 blockdev --getpbsz /dev/xvdaまたはあなたが持っているものでそれを読むことができます。

3
Falcon Momot