キュー深度とブロックサイズは、同時に送信される作業量と各操作が転送するデータ量を制御するため、ランダム読み取りのレイテンシを変化させます。低キュー・小ブロックのテストは1つのリクエストがどれだけ速く完了するかを測定し、高キューのテストはストレージパスがどれだけの並列作業を維持できるかを測定します。
同じNASでも控えめな4K QD1 IOPS、はるかに高い4K QD32 IOPS、そして強力な大きなブロックのスループットを矛盾なく示すことができます。各結果は異なるワークロードを表し、最速のベンチマーク数値がインタラクティブなデータベース、写真ライブラリ、コンテナアプリの代表値として最も適切とは限りません。
キュー深度とブロックサイズは実際に何を制御しているのか?
キュー深度は測定レイヤーで未完了のI/O操作数です。キュー深度は未完了I/Oリクエストを制御し、ブロックサイズは各リクエストで転送されるペイロードを定義します。
QD1のテストは1つの操作を送信し完了を待ってから次を発行します。QD32のテストは多くの操作を待機または並行実行させ、ドライブ、コントローラー、アレイ、ネットワークに作業を重ね合わせる機会を増やします。
これらの値は複数のレイヤーに存在します。ベンチマークスレッドキュー、OSのブロックキュー、HBA、NVMe送信キュー、NASプロトコルクレジット、個々のディスクはそれぞれ異なる未完了数を持つことがあります。
なぜQD1はストレージのサービス時間を露呈するのか?
1つの未完了リクエストがある場合、次の操作は並列作業の背後に隠れることができないため、QD1は単一リクエストのサービス時間を露呈します。結果にはデバイスのサービス時間に加え、プロトコル、ファイルシステム、コントローラー、ネットワーク、クライアントのオーバーヘッドが含まれます。
したがって、QD1はメタデータのオープン、データベースページの読み込み、サムネイルの読み取り、次の構造へのポインタの追跡など、1つまたは数個の依存した読み取りを行うユーザー向けタスクに有用です。
これは完全な容量テストではありません。最新のSSDやストライプアレイはQD1が提供するよりもはるかに多くの並列処理をサポートできるため、この結果は最大合計IOPSを過小評価する一方で、単一リクエストの応答性を正確に表しています。
なぜキュー深度が高くなるとIOPSとレイテンシが同時に上昇するのか?
より多くの未完了作業はストレージチャネルを忙しく保ち、1秒あたりの完了操作数を増やすことができますが、キュー深度の増加はIOPSとレイテンシを同時に上げることがあります。各リクエストはサービス前により長く待つことがあります。
ベンチマークはシステムが作業を重ね合わせるため、より多くの合計完了数を報告しますが、すべてのリクエストが速くなったわけではありません。デバイスやアレイがサービス能力に達すると、追加のキュー深度は主に待ち行列を長くします。
これが高キュー深度IOPSと低インタラクティブラテンシが別々の目標である理由です。バックアップサーバーや分析ジョブは深い並列処理の恩恵を受けるかもしれませんが、アプリのリクエストは1つの重要な読み取りの完了時間を気にします。
ブロックサイズはIOPS、スループット、待機時間をどのように変えるのか?
IOPSは操作数をカウントしますが、各操作が移動するバイト数は示しません。ブロックサイズはIOPSとスループットのバランスを変えます。1000回の4K読み取りは1000回の128K読み取りよりもはるかに少ないデータを移動します。
小さなブロックは操作ごとのオーバーヘッドを強調し、データベースページ、メタデータ、アプリケーション状態で一般的です。大きなブロックは転送効率とスループットを向上させますが、リクエストごとにデバイス、ネットワーク、コントローラーのリソースをより多く占有します。
大きなブロックは、一定の帯域幅に必要なIOPS数を減らしつつ、各操作のサービス時間を増加させることができます。混在するアプリケーションは両方の側面が必要で、NASは小さなメタデータ読み取りと大きなメディアやバックアップ転送の両方を処理することがあります。
なぜキャッシュと並列処理は結果をアプリの体感より良く見せるのか?
ベンチマーク結果はRAM、コントローラーキャッシュ、クライアントキャッシュ、または小さな作業セットへの繰り返しアクセスによって支配されることがあります。キャッシュと並列処理はコールドリードの遅延を隠すことがあります。
並列ベンチマークワーカーは、1つのアプリケーションスレッドよりもディスク、NANDチャネル、CPUコア、SMBチャネル、またはNVMeキューにリクエストをより効果的に分散できます。このテストは総合的なスケーリングを証明しており、1つのコールドアプリ読み取りが同じ恩恵を受けるわけではありません。
ストレージメディアをテストする際は関連するキャッシュより大きなデータセットを使い、アプリケーションキャッシュが設計に含まれる場合は別途ウォームキャッシュテストを実行してください。両者を混ぜるとボトルネックが不明確な数値になります。
ホームNASのランダム読み取りテストは実際のワークロードにどう合わせるべきですか?
実用的なベンチマークは、実際のアプリケーションが変化させる次元を変化させます。現実的なテストは最大IOPS値を報告するのではなく、ワークロードのキュー深度に合わせる必要があります。
QD1といくつかの中程度の深度をテストし、4Kまたは8Kの小さな読み取りとメディアやバックアップツールが使う大きなブロックを含め、平均およびp95、p99、最大レイテンシを記録してください。ストレージの変更を比較する際はクライアント、プロトコル、暗号化、データセットを一定に保ちます。
ランダム読み取りテストは単独で、かつ実際にNASを共有するバックグラウンドワークロードと並行して実行してください。単独のベンチマークはストレージパスを正確に測定できますが、アプリ、バックアップ、インデックス作成、パリティ競合時のユーザーが体験するレイテンシは明らかにできません。
| テスト形状 | 強調していること | よくある誤解 |
|---|---|---|
| 4K QD1 | 単一小読み取りの応答時間 | 最大デバイスIOPSを示すと仮定する |
| 4K高キュー深度 | 並列小I/O容量 | すべてのリクエストが低レイテンシであると仮定する |
| 128K低キュー深度 | 大きなリクエストの効率 | 4KとのIOPS直接比較 |
| キャッシュされたランダム読み取り | メモリとソフトウェアパスの性能 | 結果をストレージメディアに帰属させること |
よくある質問
キュー深度が高いほど常に良いですか?
いいえ。ストレージパスが飽和するまで総スループットを改善できますが、リクエストの待ち時間が長くなり、インタラクティブなレイテンシが悪化する可能性があります。
なぜ4Kランダム読み取りの数値がよく報告されるのですか?
小さなブロックはデータベースページ、メタデータ、アプリケーション状態に似ており、大きな連続転送が隠す操作ごとのオーバーヘッドを露呈します。
NASベンチマークはQD32を使うべきですか?
期待されるワークロードがそれだけの並列I/Oを生み出せる場合のみです。インタラクティブなホームサーバーアプリにはQD1や中程度の深度を含めてください。
ネットワークレイテンシがランダム読み取りテストを支配することはありますか?
はい。SMBやNFSの往復通信、クライアント処理、暗号化、スイッチのキューは、特にキュー深度が低い場合、デバイスのサービス時間を超えることがあります。
最終的な結論
キュー深度は、どれだけのI/Oが待機または並行して実行できるかを決定し、ブロックサイズは各操作が移動するデータ量を決定します。キュー深度が高いと総IOPSは上がる一方で、リクエストごとのレイテンシが増加し、大きなブロックはスループットを向上させつつ操作回数を減らします。実用的なホームNASベンチマークは、最大の見出し数値を選ぶのではなく、実際の同時実行性、データサイズ、キャッシュ状態、テールレイテンシ要件に合致させるべきです。
テック&AIハブ
もっと読む

Home Assistantにおけるランタイム状態と永続状態:再起動後も維持すべきものは?
Home Assistantはすべてのライブ値を永続化するわけではありません。設定、レジストリ、選択された復元状態、履歴、デプロイデータは、再起動時にそれぞれ異なる役割を果たします。

Home Assistantはローカルセッションとリモートセッションをどのように認証しますか?
ローカルおよびリモートのHome Assistantセッションでは、同じサーバー側のIDモデルを使用します。リモートアクセスによって変わるのは経路とTLSの境界であり、トークンフローの中核ではありません。

Recorderデータが増えると、なぜHome Assistantの履歴クエリは遅くなるのですか?
レコーダーの成長に伴い、要求された範囲に含まれる行数が増えたり、キャッシュミスが増加したり、ストレージやインデックス処理が遅くなったりすると、履歴クエリのコストが上昇する可能性があります。

