Milvus
Zilliz
フロントページへ
  • ユーザーガイド
  • Home
  • Docs
  • ユーザーガイド

  • ストレージの最適化

  • 階層型ストレージ

  • 立ち退き

立ち退きCompatible with Milvus 2.6.4+

EvictionはMilvusの各QueryNodeのキャッシュリソースを管理します。有効にすると、リソースのしきい値に達すると自動的にキャッシュされたデータを削除し、安定したパフォーマンスを確保し、メモリやディスクの枯渇を防ぎます。

EvictionはLeast Recently Used (LRU)ポリシーを使用してキャッシュ領域を再利用します。メタデータは常にキャッシュされ、退避されることはありません。なぜなら、メタデータはクエリ計画に不可欠であり、通常は小さいからです。

退避は明示的に有効にする必要があります。設定を行わないと、キャッシュされたデータはリソースが枯渇するまで蓄積され続けます。

立ち退きタイプ

Milvusは2つの補完的な立ち退きモード(同期と 非同期)をサポートしており、最適なリソース管理のために連携します:

アスペクト

同期立ち退き

非同期立ち退き

トリガー

クエリまたは検索中にメモリまたはディスクの使用量が内部制限を超えた場合に発生します。

使用量が上限を超えたとき、またはキャッシュされたデータが有効期限(TTL)に達したときに、バックグラウンドのスレッドによってトリガーされる。

動作

QueryNodeがキャッシュ領域を取り戻す間、クエリまたは検索操作は一時停止します。使用率が低いウォーターマークを下回るまで、またはタイムアウトが発生するまで、退出は継続されます。タイムアウトに達し、再要求できるデータが不十分な場合、クエリまたは検索は失敗する可能性があります。

バックグラウンドで定期的に実行され、使用量がハイ・ウォーターマークを超えるか、TTLに基づいてデータの有効期限が切れると、キャッシュされたデータをプロアクティブに退避します。立ち退きは、使用量が低いウォーターマークを下回るまで継続されます。クエリはブロックされません。

最適な用途

使用量のピーク時に、短時間のレイテンシ・スパイクや一時的な休止を許容できるワークロード。非同期立ち退きでは十分な速さで領域を回復できない場合に有用です。

スムーズで予測可能なクエリ・パフォーマンスを必要とするレイテンシに敏感なワークロード。プロアクティブなリソース管理に最適。

注意事項

退避可能なデータが不十分な場合、短いクエリ遅延またはタイムアウトが発生する可能性があります。

高/低ウォーターマークとTTL設定を適切に調整する必要がある。バックグラウンド・スレッドによる若干のオーバーヘッド。

構成

設定方法evictionEnabled: true

backgroundEvictionEnabled: true (同時にevictionEnabled: true )が必要です。

推奨設定

  • ワークロードがTiered Storageの恩恵を受け、eviction関連のフェッチレイテンシーを許容できる場合、両方のevictionモードを同時に有効にして最適なバランスをとることができる。

  • パフォーマンス・テストまたはレイテンシが重要なシナリオでは、eviction後のネットワーク・フェッチのオーバーヘッドを避けるために、evictionを完全に無効にすることを検討してください。

evictableフィールドとevictableインデックスでは、eviction単位はロード粒度と一致します。スカラ/ベクトル・フィールドはチャンク単位でevictionされ、スカラ/ベクトル・インデックスはセグメント単位でevictionされます。

evictionの有効化

milvus.yamlqueryNode.segcore.tieredStorage の下でevictionを構成する:

queryNode:
  segcore:
    tieredStorage:
      evictionEnabled: true             # Enables synchronous eviction
      backgroundEvictionEnabled: true   # Enables background (asynchronous) eviction

パラメータ

タイプ

説明

推奨使用例

evictionEnabled

ブール

true/false

立ち退き戦略のマスター・スイッチ。デフォルトはfalse 。 同期立ち退きモードを有効にします。

階層ストレージでは常にtrue

backgroundEvictionEnabled

ブール

true/false

バックグラウンドで非同期に立ち退きを実行します。evictionEnabled: true が必要です。デフォルトはfalse です。

よりスムーズなクエリ・パフォーマンスを得るにはtrue

透かしの設定

ウォーターマークは、メモリとディスクの両方について、キャッシュ退避の開始と終了のタイミングを定義します。各リソース・タイプには2つのしきい値があります:

  • 高いウォーターマーク:使用量がこの値を超えると立ち退きが開始されます。

  • 低ウォーターマーク:使用量がこの値を下回るまで、立ち退きが継続されます。

この構成は、立ち退きが有効になっている場合にのみ有効になります。

YAMLの例

queryNode:
  segcore:
    tieredStorage:
      # Memory watermarks
      memoryLowWatermarkRatio: 0.75    # Eviction stops below 75% memory usage
      memoryHighWatermarkRatio: 0.8    # Eviction starts above 80% memory usage

      # Disk watermarks
      diskLowWatermarkRatio: 0.75      # Eviction stops below 75% disk usage
      diskHighWatermarkRatio: 0.8      # Eviction starts above 80% disk usage

パラメータ

タイプ

範囲

説明

推奨される使用例

memoryLowWatermarkRatio

フロート

(0.0, 1.0]

退去が停止するメモリ使用量レベル。

0.75 から開始します。QueryNodeのメモリが制限されている場合は少し下げてください。

memoryHighWatermarkRatio

float

(0.0, 1.0]

非同期evictionが開始するメモリ使用量レベル。

0.8 で開始。頻繁なトリガーを防ぐために、低いウォーターマークから適切な間隔(例えば、0.05-0.10)を保つ。

diskLowWatermarkRatio

フロート

(0.0, 1.0]

立ち退きを停止するディスク使用量レベル。

0.75 から開始する。ディスクI/Oが制限されている場合は低く調整する。

diskHighWatermarkRatio

フロート

(0.0, 1.0]

非同期退避が開始するディスク使用量レベル。

0.8 で開始。頻繁なトリガーを防ぐために、低いウォーターマークから適度な間隔(例えば0.05-0.10)を保つ。

ベストプラクティス

  • QueryNodeの静的使用やクエリ時間のバーストに対して余裕を残すため、ウォーターマークの高低を~0.80以上に設定しない。

  • ハイウォーターマークとローウォーターマークの間に大きなギャップを作らないようにする。大きなギャップは各退去サイクルを長引かせ、待ち時間を増やす可能性がある。

キャッシュTTLの設定

キャッシュTTL(Time-to-Live)は、リソースのしきい値に達していなくても、設定された期間の後にキャッシュされたデータを自動的に削除します。これは、LRU消去と一緒に機能し、古いデータがキャッシュを無制限に占有するのを防ぎます。

キャッシュ TTL は同じバックグラウンドスレッドで実行されるので、backgroundEvictionEnabled: true を必要とします。

YAMLの例

queryNode:
  segcore:
    tieredStorage:
      evictionEnabled: true
      backgroundEvictionEnabled: true
      # Set the cache expiration time to 604,800 seconds (7 days),
      # and expired caches will be cleaned up by a background thread.
      cacheTtl: 604800

パラメータ

タイプ

単位

説明

推奨される使用例

cacheTtl

整数

キャッシュされたデータが期限切れになるまでの時間。期限切れのアイテムはバックグラウンドで削除されます。

非常に動的なデータには短い TTL (数時間) を使用し、 安定したデータセットには長い TTL (数日) を使用します。時間ベースの期限切れを無効にするには 0 を設定します。

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
フィードバック

このページは役に立ちましたか ?