ディレントリとinodeキャッシュのウォームアップにより、繰り返しのNASフォルダブラウズが大幅に高速化されます。最初の一覧表示は名前の解決、ファイルシステムメタデータの読み込み、メモリ内参照の構築にコストをかけますが、後の一覧表示はその状態を再利用し、ストレージパスにすべてのディレクトリエントリやファイルレコードを再発見させる必要がなくなります。
改善効果はワークロードに依存します。メモリ圧迫、無効化、クライアントの再接続、またはより大きなスキャンで関連メタデータが追い出される前に、同じフォルダや属性が再訪される場合に最も強くなります。
最初のフォルダブラウズ中に何がキャッシュされるのか?
最初の走査はパスの構成要素を解決し、ファイルの識別、タイプ、所有権、サイズ、タイムスタンプを取得します。最初のブラウズはパス名メタデータを補充し、その後のオープンや属性チェックがRAM上の構造を再利用できるようにします。
ディレントリは親ディレクトリ内の名前をinodeにマッピングし、inodeはファイルシステムオブジェクトとそのメタデータを表します。ファイルデータは、名前空間がウォームであってもコールドのままであることがあります。
ネットワークフォルダはこれらの検索にプロトコル処理を追加します。NASはサーバー側のパスを解決し、クライアントも自身のキャッシュルールに従ってディレクトリ列挙や属性結果を保持することがあります。
なぜ2回目のブラウズははるかに速くなるのか?
関連するオブジェクトがメモリに残っている場合、ウォームなディレクトリエントリは繰り返しのストレージ検索を回避します。カーネルは多くのパス名や属性操作に対して、基盤となるメタデータブロックを再読み込みせずに応答できます。
目に見える効果は、HDDプールやリモート共有でより大きくなることが多いです。なぜならキャッシュヒットによりストレージの遅延と別のプロトコル往復の両方を回避できるからです。SSDはミスのコストを減らしますが、RAMの検索を同じくらい高価にするわけではありません。
2回目の一覧表示でも名前のソート、サムネイルの生成、またはアプリケーション固有の属性の要求が行われることがあります。メタデータのウォームアップはパスの一部を削減しますが、すべてのファイルブラウザ機能がキャッシュされることを保証するものではありません。
メタデータの局所性はどのようにキャッシュの再利用を改善するのか?
局所性とは、ワークロードが関連するパスとメタデータに回収される前に戻ることを意味します。近接した繰り返しのパスはメタデータの再利用を改善し、隣接するフォルダのブラウジングは親パスや最近触れたメタデータを再利用できます。
頻繁に訪問される少数の家庭用フォルダは、NASに何百万もの他のファイルがあってもウォームのままでいられます。逆に、名前空間全体を再帰的にスキャンすると有用なメタデータ作業セットを超えることがあります。
これが、総ファイル数だけではウォームブラウズの性能を予測できない理由です。アクセス順序、繰り返される親フォルダ、属性要求、メモリ競合、訪問間の時間が同じメタデータの再利用を決定します。
次のブラウズの前にデントリとinodeを追い出すのは何ですか?
カーネルのメタデータキャッシュは回収可能であり、メモリ圧力下でinodeとdentryキャッシュを回収できます。大きなアプリケーションヒープ、ファイルデータキャッシュ、バックアップスキャン、インデクサーは名前空間の状態を置き換えることがあります。
高いキャッシュ数は自動的にリークではありません。再利用可能なスラブは作業を加速するために使われます。重要なのは、システムが必要なときにそれを回収できるか、繰り返しのブラウジングで有用なヒットが得られるかどうかです。
ファイルシステムの変更はメモリ圧力がなくてもキャッシュ状態を無効にすることがあります。名前変更、権限変更、リモート更新、マウントの置き換え、クライアントの再接続は新しい列挙と属性チェックを強制することがあります。
クライアント側のSMBキャッシュは結果をどのように変えますか?
NASサーバーのキャッシュが変わっても、クライアントはフォルダをウォームに見せることがあります。SMBクライアントはディレクトリ列挙結果をキャッシュすることがあり、ネットワークリクエストを減らす代わりに一時的にキャッシュされた可視性に依存します。
クライアントキャッシュ、サーバーデントリキャッシュ、ファイルシステムのメタデータキャッシュ、アプリケーションのサムネイルキャッシュは別々の層です。高速な2回目のブラウズはどの層が改善をもたらしたかを特定しません。
キャッシュの一つを無効にすると新鮮さのテストは改善されますが、測定されるワークロードが変わります。通常の使用では、一貫性ルールは正しいままにして、テストはクライアントとサーバーの両方の状態を記録すべきです。
コールドフォルダとウォームフォルダのブラウジングはどのように測定すべきですか?
フォルダの深さとキャッシュのウォームさは別の変数です。コールドとウォームの比較時には、フォルダツリー、ファイル数、プロトコル、クライアント、およびソート動作を一定に保ってください。
初回オープン時間、繰り返しオープン時間、サーバーメタデータI/O、ネットワークリクエスト、dentryおよびinodeスラブの動作、クライアントCPU、サムネイルやプレビューの有効化の有無を記録してください。1回の異常にウォームな結果に頼らず、複数サイクルを実行してください。
有用なテストは3つの状態を区別します:関連するキャッシュが存在しないコールド、直後の繰り返しによるウォーム、そして別の作業負荷がメモリを競合する圧力状態。この比較により、局所性が持続的な価値を生むか、一時的なベンチマークの利得に過ぎないかがわかります。
| ブラウズ状態 | 想定されるメタデータパス | 期待される結果 |
|---|---|---|
| コールドの最初のブラウズ | サーバーとクライアントはディレクトリ状態を検出する必要があります | 最高のメタデータI/Oとレイテンシ |
| 即時のウォームブラウズ | Dentry、inode、およびクライアントの一覧が再利用される場合があります | 繰り返しのレイテンシが低下します |
| メモリ圧力後 | メタデータ作業セットの一部が回収される場合があります | 部分的または完全な遅延が戻ります |
| フォルダの変更後 | キャッシュされたエントリは検証または無効化が必要です | 新鮮さの処理が再び増加します |
よくある質問
メタデータキャッシュはファイルデータキャッシュと同じですか?
いいえ。Dentryとinodeは名前空間と属性の処理を高速化しますが、ページキャッシュは主にファイル内容とファイルシステムブロックを保持します。
RAMを増やせば常にフォルダのブラウジングが速くなりますか?
アクティブなメタデータ作業セットが追加のRAMやストレージを利用できる場合、またはプロトコルの処理が現在のボトルネックである場合に限ります。
なぜあるクライアントは高速にブラウズでき、別のクライアントは遅いのですか?
クライアントは同じNASに対しても、SMBキャッシュ、ソート、サムネイル生成、認証、アプリケーションの動作が異なる場合があります。
ベンチマークのたびにキャッシュをクリアすべきですか?
コールドテストとウォームテストの両方を使用してください。キャッシュをクリアすることは最初のアクセスを測定し、繰り返しの通常使用はシステムが有用な状態を保持するかに依存します。
最終的な結論
メタデータキャッシュのウォームアップは、同じdentry、inode、およびディレクトリ結果が再利用可能な場合に繰り返しのNASブラウジングを高速化します。メモリ圧力、名前空間の変更、クライアントの動作、またはより大きな作業セットがその局所性を失わせると、この高速化は消えます。フォルダー一覧の時間を固定のNAS特性として扱うのではなく、コールド、ウォーム、および圧力状態を別々に測定してください。
テック&AIハブ
もっと読む

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

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

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


