CPUスロットリングは、コンテナが割り当てられたプロセッサ時間をクォータ期間内に消費すると、実行可能な作業を一時停止することで共有ホームサーバーのコンテナの速度を遅くします。
サービスがクラッシュすることはなく、ホストのCPU使用率が100%になることもありません。リクエストは単に次のスケジューリング期間まで待機し、その結果レイテンシが増加し、スループットが低下し、プロキシ、データベース、メディアパイプラインにキューが発生することがあります。共有コンテナはCPU競合と遅延依存の両方を通じて互いに影響を与えます。
CPU制限は速度ではなく時間で強制される
コンテナのCPU制限は、スケジューリング期間内の実行可能なCPU時間のクォータに変換されます。マルチスレッドのワークロードは複数のコアにまたがってそのクォータを素早く使い切り、その後期間が更新されるまで実行が制限されます。コンテナクォータ分析では、平均割り当ては妥当そうに見えても短時間のバーストで停止が起きる理由が説明されています。
この挙動は、ハードウェアがクロック周波数を下げるサーマルスロットリングとは異なります。コンテナスロットリングはスケジューラによる強制であり、CPUが冷えていてホストに余裕があっても、コントロールグループが設定された境界に達すると発生します。
バーストがリクエスト完了前に期間を使い果たすことがある
画像デコード、暗号化、圧縮、インデックス作成、ガベージコレクションはしばしば複数のスレッドを短時間使用します。これらのスレッドがリクエスト開始時に残りのクォータを消費すると、数ミリ秒の作業が残っていてもリクエストは待機します。現在のCPUスロットリングガイドでは、これを目に見える障害ではなく静かなレイテンシとして説明しています。
この影響はテールレイテンシで最も顕著です。ほとんどのリクエストはクォータの一時停止間に完了しますが、一部のリクエストは強制待機にかかります。ユーザーは時折遅いページ表示、バッファリング再生、タイムアウトを経験しますが、平均CPUグラフでは見えにくくなります。
| シグナル | 示唆すること | 平均CPUが誤解を招く理由 | ホームサーバーの症状 |
|---|---|---|---|
| スロットリング期間の増加 | クォータが繰り返し使い果たされている | 一時停止時間はCPU稼働時間ではない | 周期的な応答停止 |
| スロットリング秒数の増加 | 長時間の実行待ち | ホストに未使用のコアが残っている可能性がある | クラッシュなしの低スループット |
| 実行キューの増加 | CPU待ちの作業が増加 | 利用率は待機中の需要を含まない | プロキシやデータベースのキューが深くなる |
| クォータ指標が正常 | 別のボトルネックの可能性が高い | ストレージやメモリがCPUを停滞させることがある | I/Oやリクレームを調査する |
一つのスロットリングされた依存関係が他のコンテナを遅くする
ウェブコンテナはデータベース、認証サービス、サムネイルワーカー、DNSリゾルバに依存することがあります。依存先がクォータに達すると、呼び出し元は自分のソケットやリクエストワーカーが占有されたまま待機します。ユーザーは一つのコントロールグループだけがスロットリングされていてもアプリケーション全体の遅延を感じます。
UberのCPUクォータとテールレイテンシの調査では、マルチスレッドが早期にクォータを消費し長時間の待機を生むことがわかりました。規模はホームサーバーとは異なりますが、スケジューリングの仕組みは同じです。
シェア、クォータ、CPUピニングは異なる問題を解決する
相対CPUウェイトは忙しいホストでコンテナがどのように共有するかを決め、ハードクォータはホストがアイドルでも一つのグループを制限します。CPUピニングは作業を特定のプロセッサに制限し、移動や競合を減らせますが、スケジューリングの柔軟性を失います。これらの制御は互換的な調整ノブとして扱うべきではありません。
IndeedのCPU制限レイテンシケーススタディは、クォータのバグや設定が最悪の応答時間を支配する理由を示しています。より新しいCPU制限の研究では、個別リクエストの一時停止とそれに続くキュー形成を区別しています。
スロットリングをワークロードのレイテンシと並行して測定する
CPU使用率、クォータ、期間カウント、スロットリング期間、スロットリング時間、実行キュー、サービスごとの応答レイテンシを記録します。すべての制限を一度に外すのではなく、制御された変更で同じワークロードをテストしてください。安全な制限はNASを暴走プロセスから守り、制限が小さすぎると通常のバーストが繰り返し停止に変わります。
メディアとローカルAIワークロード分析は、共有計算が無関係なストレージタスクを遅くする理由を示しています。再生特有の診断には、メディアサーバーのCPU挙動が直接ストリーミングとトランスコーディングなどのプロセッサ負荷の高い作業を区別しています。
FAQ
ホームサーバーがアイドル時でもコンテナはCPUスロットリングされますか?
はい。ハードなコントロールグループのクォータは、他のホストコアが利用可能でもそのコンテナを一時停止できます。ホスト全体の利用率とコンテナごとのクォータ強制は異なる指標です。
CPU制限を外せば常にパフォーマンスが向上しますか?
クォータの一時停止はなくなりますが、一つのサービスがホストを独占し、他のすべての隣接サービスに悪影響を与える可能性もあります。隔離を無闇に解除するのではなく、測定したバーストとレイテンシのニーズに基づいて制限を調整してください。
なぜスロットリングはマルチスレッドコンテナにすぐに影響するのですか?
複数のスレッドがグループの時間割当を並行して使い切ることができるためです。リクエストが少しのCPU作業しか必要なくても、期間が更新されるまでコンテナは待機します。
テック&AIハブ
もっと読む

ホームAIサーバーはどのようにして各ユーザーのコンテキストを分離しているのですか?
ホームAIサーバーは同じモデルを共有しながら各ユーザーのコンテキストを分離できますが、その分離はモデル自体から生じるものではありません。チャット、メモリー記録、取得したドキュメント、キャッシュエントリ、ツール呼び出しのすべてを認証済みユーザーに紐付けてから、その情報がプロンプトに届くようにすることから生まれます。 二人が別々にサインインできるのに、一方のユーザーの質問が他方のメモを取得してしまう場合、その失敗は通常モデルの周辺のアプリケーションにあります。重要なテストは、アイデンティティがリクエストの全経路で保持されているかどうかです。この記事はその経路をたどり、どこで分離を強制すべきか、どこでよく破られるか、そしていつより強い境界が必要かを示します。 モデルは共有できても、個人のコンテキストは共有できません モデルの重みは共通の推論エンジンです。モデルが通常の推論リクエストを処理している場合、家族や同僚ごとに別々のコピーを用意する必要はありません。分けておくべきは、その重みの周りに特定のリクエストのために組み立てられた情報です。 その情報には、現在のチャット、保存された会話履歴、ユーザーの設定、取得したファイルの抜粋、ベクター検索の結果、ツールの出力、一時キャッシュ、認証情報が含まれます。これらの層が組み合わさって個人のコンテキストを形成します。同じモデルプロセスを通しても、異なるユーザーには異なるコンテキストパッケージが提供されるべきです。 この区別により、アーキテクチャは実用的になります。ホームサーバーは複数の同一モデルのコピーを読み込むことを避けつつ、各アシスタントを個別化するデータの分離を維持できます。分離の境界は、アイデンティティ、ストレージ、検索、セッション、ツールアクセスにあり、単にモデルにプライバシーを尊重するよう指示するプロンプトにはありません。 アイデンティティはリクエストの全過程にわたって追跡されなければなりません 別々のログイン画面は最初のステップに過ぎません。認証はリクエストを行う人物を確定し、認可はその人物がアクセスできるチャット、ファイル、メモリー、アクションを決定します。効果的な分離には、ユーザーがインターフェースを開くときだけでなく、すべてのデータ境界で認証後の認可が必要です。 サーバーは、検証済みのセッションまたはアクセストークンから安定したユーザーIDを導き出すべきです。フォームフィールド、URLパラメーター、チャットメッセージで送信されたユーザーIDを信用してはいけません。そうしないと、クライアントが制御する値を一つ変更するだけで、他人の記録を要求できてしまう可能性があります。 そのサーバー由来のIDはすべてのルックアップの一部となります。会話クエリ、ベクター検索、ファイルパス、キャッシュキー、ツールの認証情報はすべて同じ信頼されたユーザースコープを必要とします。下流のサービスの1つがこれを失うと、フロントエンドは別々のアカウントを表示していても、システムは静かに共有コンテキストに戻ってしまいます。 耐久メモリにはストレージレベルの境界が必要です 長期メモリは通常、リレーショナルデータベース、ドキュメントストア、またはディスク上のファイルに保存されます。各レコードには所有者またはテナント識別子が必要で、すべての読み取り、更新、削除はそのIDに制限されなければなりません。広範なクエリでデータが返された後にフィルタリングするのは遅すぎます。 データベースポリシーは、アプリケーションコードの下に第2の強制ポイントを提供できます。データベースがレコードを返す前に現在のユーザーを評価すると、1つのアプリケーションルートでフィルターが漏れてもクロスユーザーの情報漏洩になる可能性が低くなります。 ファイルベースのメモリも同じ規律が必要です。各ユーザーに専用のディレクトリを割り当て、所有権とアクセス制御ルールを維持し、アプリケーションが認証済みのIDからパスを解決するようにします。ブラウザから提供されたフォルダ名は認可の境界ではなく、無制限のファイルシステムアクセスを持つ共有サービスアカウントは慎重に設定されたディレクトリを回避できます。 プロンプトが構築される前に取得は範囲を限定する必要があります RAGは最も重要な分離ポイントの一つを作り出します。なぜなら、取得されたパッセージが直接モデルの作業コンテキストに挿入されるからです。別のユーザーのドキュメントがプロンプトに入った場合、それをモデルに開示しないように頼むのは信頼できる対処法ではありません。まず取得レイヤーで除外しなければなりません。 権限認識型RAGレイヤーは、ドキュメントアクセス権による検索結果のフィルタリングを、パッセージがプロンプトに入る前に行うことができます。認可の判断は、質問で提供されたIDではなく、検証済みのセッションを使用しなければなりません。 ベクターデータベースは、ユーザーごとに1つの名前空間またはコレクションでレコードを分離するか、共有インデックス内で必須のメタデータフィルターを使用して分離できます。分離のための名前空間またはコレクションは、書き込み、検索、削除の範囲を簡単にし、メタデータフィルタリングは、家庭やチームで共通のドキュメントがある場合の制御された共有をサポートできます。 アプリケーションは検証済みセッションから名前空間を選択すべきであり、プロンプトから受け入れるべきではありません。同じルールはプライベートドキュメントに対してセマンティック検索を行う場合にも適用されます。識別フィルタリングは類似度ランキングの前のクエリパスに属し、結果返却後のクリーンアップステップではありません。 共有ドキュメントにも明示的なモデルが必要です。レコードは1人のユーザー、世帯グループ、またはワークスペースに属することがありますが、そのスコープは権限データとして保存され、一貫して評価されるべきです。ドキュメントを複数の個人インデックスにコピーするのは小規模なシステムでは簡単かもしれませんが、ユーザーや共有フォルダが増えるにつれてグループベースの権限の方が管理しやすくなります。 セッションとキャッシュは誤ってデータを再接続することがあります データベースは完全にフィルタリングできても、キャッシュがコンテキストを漏らすことがあります。チャット履歴が`conversation_id`だけでキャッシュされている場合、衝突や予測可能な識別子を持つ2人のユーザーが同じエントリにアクセスする可能性があります。より安全なキーは信頼されたユーザーIDと会話IDの両方を含みます。 同じ境界はプロンプトキャッシュ、取得チャンクキャッシュ、一時アップロードディレクトリ、メモリ内セッションオブジェクトにも適用されます。テナント認識キャッシュキーは、信頼されたユーザーIDをキャッシュの読み書き両方に渡すことでユーザー間の露出を減らします。 ログアウトは適切な状態を削除または無効化しなければなりません。ブラウザのクッキーをクリアしてもサーバー側のセッション、一時ファイル、またはキャッシュされたプロンプトが残っていると、共有コンピューター上で前のユーザーのコンテキストが露出する可能性があります。期限切れ、削除、アカウント削除は個人データを保持するすべてのストアに伝播すべきです。...

なぜモデルの削除がホームAIサーバーでレイテンシの急増を引き起こすのか?
モデルの追い出しは、ホームAIサーバーに重みを再読み込みさせ、ランタイム状態を再構築させます。コールドスタートを確認し、初回応答の遅延を減らす方法を学びましょう。

NAS移行中にタイムスタンプを最も安全に保持する方法は何ですか?
必要なフィールドを定義し、メタデータ対応のコピー経路をテストし、ソースマニフェストを記録し、コンテンツとメタデータを別々に検証し、切り替え検証が完了するまで古いNASを保持することで、NASのタイムスタンプを保持します。

