大まかに言って、ファイルへのアクセス方法は2種類あります。
*シーケンシャルアクセスとは、多かれ少なかれ、1バイトずつファイルを読み書きをすることです。例えば、動画を見る場合、動画を最初から最後まで読み込むことになります。ファイルをダウンロードする場合は、最初から最後までディスクにダウンロードされ、書き込まれます。 ディスクから見ると、quot;read block #1, read block #2, read block #3, read byte block #4"1 というコマンドが表示されます。
*ランダムアクセスとは、読み取りや書き込みに明らかなパターンがないことを意味します。これは、本当にランダムである必要はなく、シーケンシャルでないことを意味します。例えば、一度に多くのプログラムを起動する場合、ドライブに散在する多くのファイルを読み取る必要があります。 ドライブから見ると、quot;read block #56, read block #5463, read block #14, read block #5" のようなコマンドを見ていることになります。
一般に、シーケンシャルアクセスはランダムアクセスより高速です。これは、シーケンシャルアクセスによって、オペレーティングシステムとドライブが、次に何が必要になるかを予測し、事前に大きな塊を読み込むことができるからです。例えば、1、2、3、4のブロックを要求した場合、OSは次に5、6、7、8を要求することを予測し、ドライブに1、2、3、4、5、6、7、8を一度に読み込むように指示します。同様に、ドライブは物理ストレージを一度に読み出すことができます。ただし、1 にシークして 1,2,3,4 を読み出し、5 にシークして 5,6,7,8 を読み出すことはできません。 そういえば、シークの話をしましたね。機械式HDDは、その物理的な構造上、シークタイムが非常に遅くなります:重い金属製のディスクが何枚も回転し、ディスクを読み取るために物理的な腕が前後に動きます。[回転するディスクと動くアームを見ることができる、開いた状態のHDDのビデオです。](
[HDD内部の図]]。一方、ランダムアクセスは、予測可能という利点がありません。8,34,76,996,112,644,888,341のブロックからランダムに8バイト読み込みたい場合、ドライブは8へのシーク、8読み込み、34へのシーク、34読み込み、76へのシーク、76読み込み、...と進む必要があるのです。ブロックごとに再度シークする必要があることにお気づきでしょうか。シーケンシャルな512Bブロックあたり平均0.003125msではなく、(シーク5ms+リード0.003125ms)=5.003125msになっているのです。これは何倍も何十倍も遅いです。実際には数千倍も遅いのです。
より正確には、LBAドライブでは、効率上の理由から512バイト(512n/512e)または4kB(4Kn)のブロック単位でアドレス指定されます。また、実際のプログラムでは、一度に1バイトだけを必要とすることはほとんどありません。 2 技術的には、seekはアームの移動のみを指します。ヘッドが回転するまでの待ち時間は、シーク時間に加え、回転待ち時間となります。 また、このような場合にも、HDDと比較すると、全く無視できるレベルです。
すでに他の回答で指摘されているように、quot;4K"はサイズ4KiBのブロック単位でのランダムアクセスを指すことはほぼ間違いないでしょう。
ハードディスク(SSDではない)がデータの読み取りや書き込みを要求されるたびに、2つの大きな遅延が発生します。
シークレイテンシは、ヘッドをどれだけ速く動かし、どれだけ遠くまで動かす必要があるかの関数であり、回転レイテンシはプラッタがどれだけ速く回転しているかの関数です。さらに、これらは過去数十年の間、あまり変化していません。**メーカーは実際に広告などで平均シーク時間を使用していましたが、この分野の開発がほとんど行われなかったため、ほとんどそれをやめました。特に競争の激しい環境では、どのメーカーも自社の製品が競合他社の製品より劣っているようには見せたくはないでしょう。
一般的なデスクトップ用ハードディスクは7200rpmで回転していますが、一般的なラップトップ用ドライブは5000rpm程度で回転している場合があります。つまり、1秒間に120回転(デスクトップ用)、83回転(ラップトップ用)することになります。ディスクは平均して、目的のセクターがヘッドの下を通過するまでに半回転する必要があるので、これはディスクが1秒間に約2倍のI/O要求を処理できると期待できることを意味し、次のように仮定しています。
したがって、アクセス(読み取りまたは書き込み)を要求されるデータが物理的に比較的局所的で、回転待ち時間が制限要因となる場合は、1秒間に200回のI/Oを実行できると予想されます。一般的に、データがプラッタに分散している場合、ドライブは1秒あたり100 I/Oのオーダーで動作し、かなりのシークを必要とし、シーク遅延が制限要因になることが予想されます。ストレージの用語では、これはハードディスクのIOPS性能"です。実際のストレージシステムでは通常、シーケンシャルI/O性能ではなく、これが制限要因になります。(これは、SSDが非常に高速に使用できる大きな理由です。SSDは回転レイテンシを排除し、シークレイテンシを大幅に削減します。これは、読み取り/書き込みヘッドの物理的な動きが、電子的に格納されているフラッシュマッピング層のテーブル検索になるためです)。
キャッシュフラッシュを伴う場合、書き込みは通常より遅くなります。通常、オペレーティングシステムとハードディスクは、パフォーマンスを向上させるために、可能な限りランダムI/OをシーケンシャルI/Oに変えるために、ランダムライトの順序を変更しようとします。明示的なキャッシュフラッシュまたは書き込みバリアがある場合、永続的ストレージ内のデータの状態がソフトウェアの期待するものと一致することを保証する目的で、この最適化が排除される。基本的に、ディスクキャッシュが存在しない場合(今日ではデスクトップ型システムで は珍しい)、またはソフトウェアが意図的にそれを回避する場合(I/O パフォーマンスを測定 するときによく行われます)、読み取り時に同じ理由が適用されます。どちらも、潜在的な最大IOPS性能を、より悲観的なケース、つまり7200rpmのドライブで120IOPSに低下させます。
*これは偶然にも、ほぼ正確にあなたの数字と一致します。ブロックサイズが小さいランダムI/Oは、回転式ハードディスクにとって絶対的なパフォーマンスキラーであり、それが関連指標である理由でもあります。
純粋なシーケンシャルI/Oに関しては、最近の回転式ハードディスクでは150MB/秒程度のスループットはまったく無理なことではありません。しかし、実世界のI/Oはほとんど厳密にシーケンシャルではないので、ほとんどの状況で、純粋なシーケンシャルI/O性能は実世界の性能を示すというよりも、学術的な演習になります。
4KはランダムI/Oを意味します。これは、ディスクがテストファイル内のランダムなポイントで小さなブロック(4KBサイズ)にアクセスするよう要求されていることを意味します。これはハードディスクの弱点で、ディスクの異なる領域にあるデータにアクセスする能力は、ディスクの回転速度とリード/ライト・ヘッドの移動速度によって制限されます。*連続したブロックにアクセスするシーケンシャルI/Oは、ディスクが回転しているときにブロックを読み書きするだけなので、はるかに簡単です。
ソリッドステートドライブ(SSD)は、データが下位メモリ(通常はNANDフラッシュ、3D XPointやDRAMも可能)のどこに格納されているかを調べ、適切な場所でデータの読み取りや書き込みを行うだけでよいため、ランダムI/Oにそのような問題はない。SSDは完全に電子化されており、データにアクセスするために回転ディスクや移動する読み書きヘッドを待つ必要がないため、この点ではハードディスクよりもはるかに高速に動作します。このような理由から、SSDにアップグレードすると、システムのパフォーマンスが劇的に向上するのです。
余談ですが、SSDのシーケンシャルI/O性能は、ハードディスクよりもはるかに高いことが多いのです。一般的なSSDは、複数のNANDチップがフラッシュメモリコントローラに並列に接続されており、同時にアクセスすることが可能です。これらのチップにデータを分散させることで、RAID 0のようなドライブレイアウトを実現し、性能を大幅に向上させています。(ただし、最近のドライブ、特に安価なドライブの多くは、TLC NANDと呼ばれるタイプのNANDを使用しており、データ書き込み時に速度が低下する傾向がある。TLC NANDを搭載したドライブは、高速なNANDの小さなバッファを使用して、より小さな書き込み操作で高い性能を発揮することが多いが、そのバッファがいっぱいになると劇的に速度が低下することがある)。