質問: nvme ssd:なぜ4kは読むより速いのですか? 私は、pcie gen.3x4を実行しているnvme上のsamsung 960 pro 512 gb ssdを使用しています。私はsamsung nvme driver 2.0.0.1607を使います。 ssdは正常に動作しています。しかし、なぜ4kの書き込みが4kの読み取りより速いのかわかりません。私はasベンチマークを使用しています。 それは3の要素です!私のシステムやasベンチマークで何か問題がありますか、それともこれは正常ですか?
回答: 4kの読み取りは、ドライブが実行できる最も困難なことになります。これらは、ドライブが処理できる最小のブロックサイズの1つであり、ドライブが大量のデータをプリロードする方法はありません。実際、ドライブの先読みロジックが何かを読み込もうとしている場合、おそらく非常に非効率的です。 4キロバイトより大きい。「普通の」ドライブの読み取りは、そのように小さいファイルが非常に少ないため、4kbより大きくなる可能性が高く、ページファイルでさえ、プログラムだけに「奇妙」になるのは奇妙なので、大きな塊で読み込まれる可能性があります4kbのメモリがページアウトされました。これは、ドライブが実行しようとするプリロードが実際にはドライブのスループットを低下させることを意味します。4kの読み取りはドライブバッファを通過する可能性がありますが、テストの「ランダム」な部分はそれらをまったく予測不可能にします。コントローラは、ドライブがさらに通常の「大規模」読み取りを再度必要とする可能性がある場合を認識しません。一方、4k書き込みは効率的な方法でバッファリング、キューイング、およびシーケンシャルに書き出すことができます。ドライブバッファはそれが設計されたキャッチアンドライト作業の多くをすることができます、そして、ウェアレベラーはそれらの4k書き込みすべてを同じドライブ消去ブロックに割り当てさえするかもしれません。シーケンシャル書き込みに近いもの。実際、私はこれが "4k-64thrd"書き込みで起こっているのではないかと思います、 "64-thrd"は 明らかに大きなキュー項目数を使用しています 読み書きする大量のデータ。これにより、大量の書き込みのクラスタ化が引き起こされ、ドライブのシーケンシャル書き込み速度に近づきます。 4k書き込みを実行することにはまだオーバーヘッドがありますが、今度はバッファの可能性を完全に公開しています。テストのreadバージョンでは、ドライブコントローラは非常に一定の重い負荷がかかっていることを認識し、データのプリロードを停止し、おそらくバッファを回避し、代わりに「raw」読み込みモードに切り替えます。基本的にドライブコントローラは4k書き込みをより効率的にするために something を行うことができます。特にそれらのクラスタが同じ時間に到着する場合は、 single を作ることはできません。 4kは、特にデータをキャッシュに事前にロードしてデータフローを最適化しようとしている場合は、より効率的に読み取れます。