NVMe ssd:読み取りよりも4k書き込みの方が速いのはなぜですか?


51

PCIe Gen.3x4を実行しているNVMe上にSamsung 960 Pro 512 GB SSDがあります。Samsung NVMe Driver 2.0.0.1607を使用します。SSDは正常に動作しています。ただし、4kの書き込みが4kの読み取りよりも高速である理由がわかりません。私はASベンチマークを使用しています:

ここに画像の説明を入力してください

3倍です!(システムまたはASベンチマークで)何か問題がありますか、またはこれは正常ですか?


回転するハードドライブよりもずっと高速です!
ザンリンクス

回答:


76

4kの読み取りは、ドライブが実行できる最も難しいことです。これらは、ドライブが処理できる最小のブロックサイズの1つであり、大量のデータをプリロードする方法はありません。実際、ドライブの先読みロジックが何かを読み取ろうとする場合、おそらく非常に非効率的です。 4kbより大きい。

「通常の」ドライブ読み取りは4kbを超える可能性が高く、そのようなファイルはごくわずかであり、プログラムが「のみ」を持つのは奇妙であるため、ページファイルでさえ大きなチャンクで読み取られる可能性があります。 4KBのメモリがページアウトされました。これは、ドライブが実行しようとするプリロードが実際にドライブのスループットを低下させることを意味します。

4Kの読み取りはドライブバッファーを通過する可能性がありますが、テストの「ランダムな」部分により、完全に予測不能になります。コントローラーは、ドライブがより通常の「大きな」読み取りを再度必要とする可能性があることを知りません。

一方、4Kの書き込みは、効率的な方法でバッファリング、キューイング、および順番に書き込むことができます。ドライブバッファーは、設計された多くのキャッチアンドライト作業を実行できます。また、ウェアレベラーは、すべての4K書き込みを同じドライブ消去ブロックに割り当て、場合によっては4K「ランダム」書き込みを順次書き込みに近いもの。

実際、これは「4K-64Thrd」書き込みで発生していると思われ、「64-Thrd」は明らかに大きなキュー深度を使用しているため、ドライブに大量の読み取りまたは書き込みデータがあることを通知しています。これにより、書き込みの多くのクラスタリングがトリガーされるため、ドライブの順次書き込み速度に近づきます。4K書き込みの実行にはまだオーバーヘッドがありますが、今ではバッファーの可能性を完全に公開しています。テストの読み取りバージョンでは、ドライブコントローラーは非常に一定の重い負荷がかかっていることを認識し、データのプリロードを停止し、バッファーを回避し、代わりに「生の」読み取りモードに切り替え、再び順次読み取り速度に近づきます。

基本的に、ドライブコントローラーは、特にそれらのクラスターが同じ時間に到着した場合、4K書き込みをより効率的にするために何かを行うことができますが、特に最適化しようとしている場合は、単一の 4K読み取りをより効率的にすることはできませんデータをキャッシュにプリロードすることによるデータフロー。


5
答え自体の一部ではありませんが、「4K read」(64Thrd以外のバージョン)がドライブのデフォルトの読み取りブロックサイズを32Kまたは64Kとして実際に公開していると思われます。これは、2600/50 = 52(オーバーヘッドを伴う64K +元の4K読み取り)または1200/50 = 24(オーバーヘッドを伴う32K + 4K読み取りで削減)のいずれかになります。
木梅

16
全体的には良い答えですが、「それほど小さいファイルはほとんどない」とはまったく思いません。実際、ほとんどのシステムでは、大部分のファイルが4k以下であると思われます。スペースの大部分を占めることはありませんが、それは別の問題です。
ホッブズ

3
最も簡単な答えはおそらくこれです:一度に1つずつ行うと、前の読み取りからデータを返すまで次の読み取りがどのブロックであるかを見つけることさえできないため、読み取りをまったく重複させることはできません。ただし、前のデータの作業中に次のデータのすべてのデータを取得できるため、書き込みを完全にオーバーラップできます。
デビッドシュワルツ

2
@hobbsたとえば、NTFSを使用する場合、デフォルトのクラスタサイズは4K(またはその倍数)です。つまり、ファイルやメタデータ自体が小さくても、NTFSファイルシステム自体は4Kブロックで動作します。そのため、小さなファイルでも違いはありません。すべての意図と目的のために、Windowsシステムは4Kブロックまたはその倍数で読み取り/書き込みを行います。
トニー

1
@hobbs:NTFSを使用すると、このような小さなファイルを無料で読むことができます(!)。小さなファイルは、ファイル名に隣接するディレクトリエントリ自体に保存されます。ディスク上に実際の4KBファイルを保存するには、4KBに近いかなり特定のファイルサイズをヒットする必要があります。
–MSalters

16

他の答えはすでに、なぜ書くのが読むより速いのかを説明しています。このドライブでは、レビューで確認できるベンチマークで確認されているように、これは絶対に正常です。

ArsTecnicaのレビュー

ArsTechnicaは、バージョン(512 GB)と2 TBの両方のドライブを確認しました。

アルステクニカ (このグラフはレビューですぐに表示されるわけではなく、最初のギャラリーの5番目のグラフです。クリックする必要があります)

これら2つのモデルのパフォーマンスは非常に似ており、それらの数字はあなたのものに見えます。ドライブは37 MB / sで読み取り、151 MB / sで書き込むことができます。

AnandTechのレビュー

AnandTechはドライブもレビューしました:彼らは2TBモデルを使用し、1、2、および4のキューの深さでテストの結果を平均しました。これらはグラフです:

AnandTech 4Kを読む AnandTech 4K書き込み

ドライブは137 MB / sで読み取り、437 MB / sで書き込みます。数はあなたの数よりもはるかに多くなりますが、おそらくキューの深さが高いためです。とにかく、あなたの場合のように、書き込み速度は読み取り速度の3倍です。

PC Worldのレビュー

PC Worldによるもう1つのレビュー:彼らは1 TBバージョンをテストし、4Kの結果は読み取りで30 MB /秒、書き込みで155 MB /秒です: PC Worldグラフ 書き込み速度はあなたのものと一致していますが、ここではドライブ読み取りがさらに遅くなります。その結果、比率は3対1ではなく5対1になります。

結論

レビューにより、このドライブの場合、ランダム4Kの書き込み速度は読み取り速度よりもはるかに高速であることが通常であることが確認されています。テストによっては、5倍も高速になる場合があります。

ドライブは正常です。故障している、またはシステムに問題があると信じる理由はありません。


8

SSDコントローラーはオンボードNVRAMの書き込みをキャッシュし、適切なタイミングでフラッシュメディアにフラッシュします。したがって、書き込みレイテンシはキャッシュアクセスレイテンシであり、通常は20usです。それどころか、読み取りはメディアから提供され、アクセス時間はせいぜい120〜150usです。


1

Andreyの答えを拡張すると、SSDがコンピューターに操作の完了を通知する前に、関連するオーバーヘッドを調べる必要があります。

書き込みの場合、データは単に内部RAMキャッシュに書き込まれる必要があります。後で、フラッシュメモリに書き込まれ、他の4kブロックと、メタデータをチェック、エラー修正、および特定するために必要になります。

読み取りの場合、SSDは最初にデータを見つける必要があります。コンピュータが読み取りたい場所は論理アドレスと呼ばれ、フラッシュメモリ内のデータの物理的な場所と直接的な関係はありません。SSDは、フラッシュメモリのジオメトリ(セルの配置方法)、不良ブロックの再マッピング、ウェアレベリング、およびその他のさまざまな要因に基づいて、論理アドレスを物理アドレスに変換します。次に、フラッシュからデータを取得する前に、他の操作が完了するのを待たなければなりません。その後、それをチェックし、必要に応じて再読み取りおよびエラー修正を適用します。

書き込み操作にかかる合計時間は通常の読み取り操作よりも長くなる可能性がありますが、SSDが追加コマンドを処理できる範囲で操作が完了したことを報告するのにかかる時間は短くなります。大きなブロックではオーバーヘッドは制限要因ではありませんが、多くの小さなブロックでは読み取り/書き込み速度が制限され始めます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.