なぜランダムリードは、シーケンシャルなNASテストで隠されたレイテンシーを露呈するのか?

エヴァ・ウォンテクニカルライター であり ZimaSpaceの常駐ティンカーでもあります。 生涯のオタクであり、 ホームラボとオープンソースソフトウェアに情熱を持っています。彼女は複雑な技術的概念をわかりやすく、 実践的なガイドに翻訳することを専門としています。エヴァはセルフホスティングは楽しくあるべきで、怖がるものではないと信じています。彼女のチュートリアルを通じて、コミュニティが ハードウェアのセットアップを解明する手助けをしています。初めてのNAS構築からDockerコンテナの習得まで。

ランダム読み取りは、予測可能なデータストリームを多くの無関係な場所への個別リクエストに置き換えるため、ホームNASのレイテンシを露呈します。シーケンシャルテストは優れた帯域幅を示しても、各小さな読み取り、メタデータの検索、またはキャッシュミスに目立つ時間がかかる場合、日常のブラウジングは遅いままです。

この2つのテストは異なる問いに答えています。シーケンシャルスループットは連続したストリームをどれだけ速く移動できるかを問います。一方、ランダム読み取りテストはNASが散在する多くのデータ片をどれだけ迅速に見つけて返せるかを問います。アプリケーション、写真ライブラリ、ソースツリー、小さなファイルのフォルダはしばしば後者の動作により依存しています。

シーケンシャルNASテストは実際に何を測定しているのか?

大きなシーケンシャル読み取りは、ファイルやブロック範囲の隣接するオフセットを順に進みます。ストレージスタックはローカリティを認識し、近接するリクエストをマージし、先読みを行い、バイトあたりのコマンドオーバーヘッドを減らして大きなペイロードを転送できます。したがって、ストリームが確立されるとネットワークとディスクの帯域幅が結果を支配します。起動遅延は長い転送のごく一部となり、報告される平均値にさらに有利に働きます。

この区別はfioのワークロード定義で明確にされており、シーケンシャル読み取りとランダム読み取りを分けています。そのアクセスパターンだけを変えることで、ホームNASハードウェア、ネットワーク、総データ量が変わらなくても非常に異なる結果が得られます。

これはシーケンシャルテストを誤解させるものではありません。大きなメディアファイルのストリーミングや大容量アーカイブのコピーなどのタスクを正確に表しています。問題は、その結果をブラウジングの応答性、アプリケーションの起動、または数千の無関係なオブジェクトを含むフォルダの普遍的な指標として扱うときに始まります。したがって、テスト名はアクセスパターンを明示し、「NAS速度」として単一の帯域幅数値を提示するべきではありません。

読み取りがローカリティを失うと何が変わるのか?

ローカリティがない場合、次のリクエストは前のリクエストから遠く離れたブロックを対象にする可能性があります。HDDでは、アクチュエータがヘッドを再配置し、目的のセクターが回転して所定の位置に来るのを待つ必要があります。Linuxのブロックレイヤーのドキュメントは、磁気ディスクの高いランダムアクセスペナルティを指摘し、隣接するリクエストを効率化のためにマージする方法を説明しています。

SSDは機械的なシークを回避しますが、ランダムなワークロードではブロックサイズが小さいと同じバイト数に対してより多くのコマンドが発生します。コントローラーのルックアップ、フラッシュ変換、ファイルシステム処理、プロトコル処理は多くの個別操作で完了しなければならないため、レイテンシとIOPSは最大のシーケンシャル帯域幅よりも重要です。

ファイルレベルでは、散在アクセスにはディレクトリの列挙、inodeやファイルレコードの読み取り、権限チェック、拡張属性、オープン/クローズ操作も含まれます。これらのステップはアプリケーションやプロトコルによって直列化されることがあり、高帯域幅のリンクが各リクエストのレイテンシを補う機会がほとんどありません。

なぜ高速な平均値が多くの遅いリクエストを隠せるのか?

スループットは総データ量を時間で割ったものです。大きなリクエストがバイト数を支配すると、スループットは高く保たれますが、小さなリクエストの完了が遅い場合があります。ユーザーは次のフォルダ、プレビュー、またはアプリケーション資産が表示されるまでの遅延を感じ、すべての作業で移動した平均メガバイト数ではありません。

テストパターン アクセスの挙動 優先されるリソース 明らかにすること 隠せること
大きなシーケンシャル読み取り 隣接ブロック、持続的なストリーム 帯域幅とリードアヘッド 大きなファイルの配信速度 リクエストごとの遅延
繰り返されるキャッシュ読み取り メモリから提供される同じデータ RAMとネットワークパス ウォームキャッシュの上限 基盤となるストレージのレイテンシ
キャッシュなしのランダム読み取り 散在する固定サイズのオフセット IOPSとデバイスのレイテンシ 局所性が悪い場合のストレージ応答 アプリケーションのメタデータ処理
小さなファイルの閲覧 データとファイルシステム操作 エンドツーエンドのリクエストパス インタラクティブなユーザー体験 純粋なデバイス能力

この表は、各合成パターンが答えられる質問ごとに分類しています。キャッシュありとキャッシュなしのケースは特に重要で、2回目の実行では最初の実行で使用されたドライブではなくメモリの効果を測定する可能性があるためです。

これは特定のNASの速度予測ではありません。ブロックサイズ、キュー深度、作業セットサイズ、クライアントの同時実行数、プロトコル、ファイルシステム、ドライブの配置が結果を変えます。有用なテストはこれらの入力を制御し、秒あたりバイト数と完了時間のパーセンタイルの両方を報告します。

キャッシュとリードアヘッドはどのようにシーケンシャルテストを有利にするのか?

リードアヘッドは、現在の範囲に続くデータがまもなく必要になると予測し、アプリケーションが要求する前にそれを取得します。これは順方向のストリームに効果的であり、次のオフセットが無関係な場合にはほとんど役に立ちません。Linuxはブロックデバイスのリードアヘッド制限を公開しており、ファイルシステムが即時の読み取りを超えて追加のデータを要求できることを示しています。

RAMはその差をさらに広げることがあります。頻繁にアクセスされるディレクトリエントリ、ファイルメタデータ、データページはドライブに触れずに返されることがあります。データセットが利用可能なメモリに収まるテストはキャッシュとネットワークの速度を報告できますが、より大きいかコールドなデータセットは基盤となるストレージのレイテンシを露呈します。

キャッシュは実際のNAS性能の一部なので、自動的に無効にすべきではありません。代わりにウォームキャッシュとコールドキャッシュの結果を別々にラベル付けします。この区別は、ユーザー体験がアクティブな作業セットがメモリに保持されているために速いのか、ストレージ自体がミスを迅速に処理しているために速いのかを示します。

なぜ小さなファイルはバイト数が示すより遅く感じるのか?

すべてのファイルはペイロードに比例して縮小しない固定の作業を導入します。クライアントはディレクトリエントリを見つけ、メタデータを確認し、オブジェクトを開き、その内容を読み、閉じます。ファイルが小さい場合、これらの操作は連続した数ギガバイトの読み取り時よりも総時間の大きな割合を占めます。

ネットワークプロトコルはその作業の周りにリクエストとレスポンスの境界を追加します。低レイテンシのLANでも、数千の部分的に直列化された操作が蓄積されます。結果として生じる遅延は単なる「遅いネットワーク」や「遅いディスク」ではなく、クライアント、プロトコル、ファイルシステム、キャッシュ、デバイスの複合的なレイテンシです。ウイルススキャン、プレビュー抽出、アプリケーションレベルのチェックも同じファイルパスごとの時間を延長します。

これが、アプリケーションデータセットと同じサイズのメディアデータのフォルダーが異なる動作をする理由です。SMBとNFSの実用的な選択はキャッシュやリクエストの動作を変えるかもしれませんが、メタデータ中心のワークロードを連続ストリームに変えることはありません。

ホームNASは実際のブラウジングレイテンシをどのようにテストすべきか?

まず、ワークロードを定義します:オブジェクトサイズ、読み書きの割合、ファイル数、作業セットサイズ、クライアント数、およびデータをキャッシュすべきかどうか。大きな連続ベースラインを実行し、固定サイズのランダム読み取りと、実際のアプリケーションで使用される同じ種類のオブジェクトを開くファイルレベルのテストを追加します。データセットの配置と空き容量の条件を安定させ、アクセスパターンの変化と異なるストレージ状態が混ざらないようにします。

IOPS、スループット、およびレイテンシのパーセンタイルを一緒に報告します。Linuxは、完了した操作、読み書きに費やした時間、マージ、および進行中のI/Oをカーネルディスク統計を通じて公開します。これらのカウンターは、忙しいデバイスと増加するバックログを、クライアントやネットワークによって制限されたテストと区別するのに役立ちます。

1台のクライアントと現実的な同時実行でテストを繰り返し、CPU、メモリ、ネットワーク利用率、ディスク活動を監視してください。大きなファイルの速度が強くても、小さな未キャッシュリードのテールレイテンシが悪い場合は、NASアプリケーションのワークロードを補助的な運用パスとして調査し、ストレージ結果の再定義に用いるべきではありません。

よくある質問

ランダムリードテストはシーケンシャルテストより正確ですか?

散在アクセスのワークロードに対してのみより代表的です。シーケンシャルテストは大きなファイルのストリーミングやコピーの正しい指標であり、完全なNAS評価では一方だけを普遍的に正確とせず両方を使用します。

なぜ2回目のベンチマーク実行はしばしば速く見えるのですか?

OSやNASは以前に読み込んだデータやメタデータをRAMから提供することがあります。そのウォームキャッシュの結果は有用ですが、最初の実行と同じストレージパスを測定していない可能性があるため、別途ラベル付けすべきです。

SSDストレージは小ファイルのレイテンシをなくせますか?

特にランダムリード時のHDDと比較してデバイスアクセスのレイテンシを大幅に削減できますが、プロトコルの往復、ファイルシステムのメタデータ処理、アプリケーションの直列化、CPU競合を排除することはできません。

10GbEはNASのブラウジングを必ず高速化しますか?

いいえ。高速リンクは帯域幅の上限を改善し、大きなペイロードの転送時間を短縮できますが、ブラウジングは小さなリクエストのレイテンシによって制限されることがあります。テストでネットワークが唯一のボトルネックでないことが示された場合、より広範な10GbE NASの診断が役立ちます。

どのレイテンシ数値が遅いインターフェースに最も合致しますか?

パーセンタイルレイテンシ、特に95パーセンタイルや99パーセンタイルを中央値とともに使用してください。応答性の高い中央値でも、サムネイル、フォルダナビゲーション、アプリケーション画面の遅延を引き起こす長時間のリクエストが時折存在することがあります。

最終的な結論

シーケンシャルNASテストは隣接データのストリーム効率を測定し、ランダムおよび小ファイルテストは散在するリクエストが実際にどれだけ待機するかを明らかにします。帯域幅が強そうに見えてもブラウジングが遅く感じる場合は、ネットワーク速度だけを責める前に、コールドキャッシュのレイテンシパーセンタイルとエンドツーエンドのファイル操作を比較してください。

テック&AIハブ

もっと読む

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.