Jellyfinは通常、バックグラウンド処理がキューに入り、段階的に処理され、連続的に書き込まれるのではなくバッチ単位でフラッシュされるため、断続的なディスクI/Oが発生します。
ホームサーバーでは、ライブラリのスキャンによって多数のファイルが読み取られ、データベースが更新され、アートワークが取得され、その後ストレージのチェックポイント処理が行われます。別のトランスコードジョブが、さらに別のバーストを加えることもあります。キュー遅延、再生期限の逸脱、空き容量不足によってストレージ経路自体が制約になっていることが示される場合、重要なのはバーストの形状だけではなく、そのパターンです。
バーストをワークロードのフェーズとして観察する
スキャン中や再生中は、ディスク使用率が急上昇して低下し、これを繰り返します。重要な関係は、スケジュールされたジョブと再生セグメントによって、読み取り、書き込み、メタデータのコミットが個別のバッチとして生成されることです。
観測できる影響は、デバイスのグラフに短時間の高キュー状態が現れ、その間に比較的静かな空白が挟まることです。これが、記載された条件によって結果が変わる理由です。キュー遅延
境界は明確です。処理が正常に完了し、遅延も低いバーストは正常ですが、キューの増加やタイムアウトが繰り返される状態は正常ではありません。実際には、ストレージ設定を変更する前にイベントのタイミングを確認します。
ユーザー操作をキューに入った処理まで追跡する
バーストには、繰り返し現れるタイムスタンプまたはトリガーがあります。重要な関係は、リクエストによってライブラリ検索、画像生成、データベース書き込み、セグメント準備などがキューに入り、デバイスにアクセスされる前に処理されることです。
観測できる影響は、キャッシュミス、スキャン、またはトランスコード経路が選択された場合に限り、同じ操作がバーストを発生させることです。これが、記載された条件によって結果が変わる理由です。デバイスのタイミング
境界は明確です。ダイレクト再生では書き込みの大部分を回避できますが、リモートトランスコードや新しいメタデータ項目によって、再び書き込みが発生することがあります。実際には、トレースを比較する際にクライアントとメディアを一定に保ちます。
データベース、メタデータ、一時ファイルへの書き込みを関連付ける
ジョブの種類は分かっているものの、ディスクグラフには複数のピークがあります。重要な関係は、SQLiteのチェックポイント、メタデータのダウンロード、一時セグメントへの書き込みで、ブロックサイズとフラッシュのタイミングが異なることです。
観測できる影響は、データベースのコミット付近に小さな同期書き込みが集中し、一時出力にはより大きなシーケンシャル書き込みが現れることです。これが、記載された条件によって結果が変わる理由です。データベースのチェックポイント
境界は明確です。高速なデータベースでも、低速なメディアマウントや容量が一杯の一時領域を改善することはできません。実際には、全体のスループットだけでなく、パスごとに読み取り遅延と空き容量の指標を確認します。
断続的なI/Oが有害になる境界を示す
バーストの発生源と経路が特定されています。重要な関係は、サービス時間が再生またはジョブの期限を超えると飽和が発生し、次のフェーズまでキューが残り続けることです。
観測できる影響は、再生がバッファリングしたり、スケジュールされたジョブが予定時間を超過したり、デバイスでawait時間とエラーの増加が報告されたりすることです。これが、記載された条件によって結果が変わる理由です。ストレージ遅延の境界
境界は明確です。遅延が一定範囲に収まり、次のトリガーまでにジョブが完了するなら、バーストは制約要因ではありません。実際には、ハードウェアを交換する前に、キュー遅延、ジョブの所要時間、空き容量を測定します。
テック&AIハブ
もっと読む

ホームサーバーにサービスを追加すると、Home Assistantのアーキテクチャはなぜ変化するのか?
サービスを追加して共有状態、キュー、デバイス、更新サイクル、または障害ドメインが増えると、単にコンテナが増えるだけでなく、Home Assistantのアーキテクチャが変わります。

キャッシュを容量と取り違えずにHome Assistantのパフォーマンスを測定する方法
ウォーム状態での結果は、容量ではなく再利用を示します。コールドスタート、ウォーム時の定常状態、繰り返し負荷、テールレイテンシ、そして最初に飽和するリソースを測定してください。

Home Assistantで家全体を制御するには、どれくらいの自動化同時実行数が必要ですか?
家全体の自動化の多くは、重複実行数に上限を設けるだけで十分です。実行時間×トリガー発生率で同時実行数を見積もり、その後、下流システムが安全に処理できる容量を上限にします。

