# ソフトウェアエイジング ## 定義 ソフトウェアエイジング(software aging)は、長時間稼働するソフトウェアにおいて内部状態の累積(メモリリーク・ファイルディスクリプタ枯渇・ガベージコレクション不全・ロック競合の蓄積など)が時間とともに進行し、性能劣化や failure 発生率の上昇として観測される現象である。概念は Parnas 1994(ICSE)で形式化された([[@2010__ACM CSUR__A Survey of Online Failure Prediction Methods]] §5.2 で参照)。 [[@2010__ACM CSUR__A Survey of Online Failure Prediction Methods]] のフレームでは、エイジングは「undetected error が時間とともに symptom として side effect を出す」典型ケースであり、symptom monitoring(系統 2)による予測の主要応用領域である(§2.1 のメモリリーク例、§5.2 全般)。具体的な観測対象は、free physical memory・swap 使用量・file table size・process table size・kernel memory・system cache resident bytes など。 対策は **ソフトウェア若返り**(software rejuvenation)と呼ばれ、IBM xSeries Software Rejuvenation Agent が業界実装の代表([[@2010__ACM CSUR__A Survey of Online Failure Prediction Methods]] §5.2.4.1, Castelli+ 2001)。Grottke & Trivedi 2007 は「aging-related errors」という用語で本領域を AVI(aging, vulnerability, intermittent)障害類の一つとして整理する(本論文 §2.1 で言及)。 ## 横断的知見 - **エイジングは「予測対象として最適な特徴を持つ障害クラス」**: Salfner+ 2010 の taxonomy で言えば「予兆あり・連続変数で観測可能・トレンドが滑らか・予測アルゴリズムが豊富(回帰・時系列分析・関数近似が全て使える)」という条件が揃う(§5.2.1〜§5.2.4 を通読すると、エイジング系の応用が最も手法選択の幅広い領域)。これは突発的なハードウェア故障や設定変更起因の障害とは対照的で、サーベイ([[@2025__CSUR__A Survey of AIOps in the Era of Large Language Models]] §4.1)が「precursor のない障害が多く予測は false negative が高い」と述べる懸念をエイジング系では緩和できる。(Source: [[@2010__ACM CSUR__A Survey of Online Failure Prediction Methods]] §5.2, [[@2025__CSUR__A Survey of AIOps in the Era of Large Language Models]] §4.1) - **エイジング検知の代表手法系譜は本論文の symptom monitoring 系の縮図**: Vaidyanathan & Trivedi 1999(2.1.1, semi-Markov reward model)、Garg+ 1998(2.4.1, robust regression + seasonal Kendall test)、Castelli+ 2001(2.4.1, curve fitting、IBM 実装)、Crowell+ 2002 / Shereshevsky+ 2003(2.4.2, Hölder 指数 + Shewhart 変化点検知)、Singer+ 1997 / Gross+ 2002 / Cassidy+ 2002(2.3.5, MSET + SPRT)が並ぶ。同じドメインの 1 問題を、function approximation(2.1)・system models(2.3)・time series analysis(2.4)の異なる principal approach で攻める実例集として読める。(Source: [[@2010__ACM CSUR__A Survey of Online Failure Prediction Methods]] §5.2) ## 未解決の問い - LLM 推論サーバや継続学習されるモデルにおける「モデルの劣化」(精度ドリフト・catastrophic forgetting・KV キャッシュ肥大化など)はソフトウェアエイジングの一形態として捉えるべきか、それとも別の障害クラスとすべきか。([[ディペンダビリティ]] §未解決の問いと連動) - エイジング指標(memory leak rate・GC pause 増加・file descriptor 増加など)は伝統的に「単一プロセスの状態」だが、Kubernetes・サーバーレスのようにエフェメラルなプロセス管理が標準化された 2020 年代ではプロセスは数分〜数時間で再生成される。エイジングを予測する意味が縮退する代わりに、レイヤーは「ノード」「クラスタ」「ネットワーク」に上がっているはず。本論文の symptom monitoring 系手法をクラスタレベルに移植するための条件は何か。 - Salfner+ 2010 §5.2.4.1 が紹介する Cheng+ 2005 の "health index ∈ [0,1] + 線形外挿で資源枯渇時刻を推定" という 2 段構成は、現代の SRE ダッシュボード(`burn rate`・`exhaustion ETA`)と機能的に同型に見える。SLO ベース運用での error budget burn rate アラート([[エラーバジェット]])は、本質的に「failure prediction の time-to-resource-exhaustion 推定」を SLO 軸でやり直したものではないか。 ## 関連 - 上位 concept: [[障害予測]] / [[プロアクティブ障害管理]] / [[ディペンダビリティ]] - ソース: [[@2010__ACM CSUR__A Survey of Online Failure Prediction Methods]](§2.1, §5.2 全般) - 関連 entity: [[Felix Salfner]] / [[Miroslaw Malek]] ## 出典 - [[@2010__ACM CSUR__A Survey of Online Failure Prediction Methods]] §2.1(メモリリークの fault/error/symptom/failure 進展例)・§5.2(symptom monitoring 系の代表手法群でエイジング応用が多数を占める)