# モニタの分類と設計トレードオフ ## 定義 モニタ(monitor)とは、システム上の活動を観測し、性能統計を収集・解析・表示する道具である。Raj Jain はモニタを実装水準・起動機構・結果提示方法という互いに独立した3軸で分類する。実装水準はソフトウェア/ハードウェア/ファームウェア/ハイブリッドの4種、起動機構は事象駆動(event-driven)対サンプリング型(sampling、timer-driven)の2種、結果提示方法はオンライン対バッチの2種であり、これらは組み合わせて1台のモニタを特徴づける(例: hybrid-sampling-batch monitor)。実装水準による分類が最も一般的とされる(Source: [[@1991__Wiley__The Art of Computer Systems Performance Analysis - Chapter 7 Monitors]] §7.2)。 各軸には固有のトレードオフがある。実装水準の軸では、ソフトウェアモニタは高水準情報を扱いやすく開発・修正が容易な一方、オーバーヘッドが高く入力速度・時間分解能に劣る。ハードウェアモニタは低水準の電気信号を高速・高精度に観測できオーバーヘッドがほぼゼロだが、高水準情報の取得が難しく、専用機材のためコストが高い。ファームウェアモニタは両者の境界に位置し、マイクロコード空間の制約からデータ削減をほとんど行わない。ハイブリッドモニタはハードウェアのデータ収集とソフトウェアのデータ削減を組み合わせ両者の利点を得る(Source: 同 §7.3–§7.6)。起動機構の軸では、事象駆動モニタは対象事象が発生したときのみ活性化されるため、事象がまれならオーバーヘッドはほぼ生じないが、事象が頻繁だと過大なオーバーヘッドを生む。サンプリング型モニタは一定時間間隔で活性化されるためオーバーヘッドが事象頻度に依存せず、頻繁な事象の観測に理想的である(Source: 同 §7.2)。 第8章は、この一般分類論を特に頻繁に使われる2種のモニタへ適用する。プログラム実行モニタ(プロファイラ)は、第7章のソフトウェアモニタ設計論に加えて4つの固有論点――測定単位(モジュール〜機械命令の粒度)、測定技法(トレース対サンプリング、第7章の起動機構軸そのものの再登場)、計装機構(ソース・コンパイラ・ランタイム・OS・ハードウェアのどの段階で計装するか)、プロファイルレポート(自己時間対継承時間の区別、階層的要約)――を持つ。課金ログ(accounting log)は、専用に設計されたモニタではないが「システム使用状況・性能に関する有用な情報を提供する」という機能面からソフトウェアモニタの一種に分類され、専用モニタ開発の代替になりうる。これは第7章の3軸分類(実装水準×起動機構×結果提示方法)には収まらない第4のモニタ類型――「モニタとして設計されていないが事後的にモニタとして機能するデータ源」――を導入する(Source: 同 §7.2, [[@1991__Wiley__The Art of Computer Systems Performance Analysis - Chapter 8 Program Execution Monitors and Accounting Logs]] §8.1.1, §8.3)。 ## 横断的知見 - **1991年のソフトウェアモニタのオーバーヘッド設計指針(数値)が、35年後のトレーシングエージェント実測ベンチマークの数理モデルとして再確認される**: 第7章§7.3は「1事象あたり100命令実行、1MIPSマシンでオーバーヘッド1%に抑えるには入力速度100事象/秒未満」という具体的な数値指針を導く。これは活性化1回あたりの固定コスト×入力速度という線形モデルであり、[[トレーシングオーバーヘッド]]が扱う MooBench(ICPE 2026)のコールツリー深度あたりの追加レイテンシ(ns/depth、線形回帰の傾き $a$)と数理的に同型である。1991年の理論的導出と2026年の実測ベンチマークが同じ線形モデルに帰着することは、事象駆動型モニタのオーバーヘッド特性が計装技術の進歩によらず構造的に不変であることを示す(Source: [[@1991__Wiley__The Art of Computer Systems Performance Analysis - Chapter 7 Monitors]] §7.3, [[トレーシングオーバーヘッド]])。 - **「事象駆動 対 サンプリング型」という1991年の起動機構分類は、[[継続的プロファイリング]]が扱う「タイマーベースサンプリング(99Hz)がオーバーヘッドを予測可能にする」という2020年の原則をそのまま先取りしている**: 両者とも「サンプリングはオーバーヘッドを事象頻度から切り離す」という同一原則を、対象領域(汎用モニタ対CPUプロファイラ)を超えて共有する。ただし1991年モデルはサンプリング頻度を「事象頻度と要求解像度の関数」という一般論にとどめ、99Hzのような周期同期回避のための具体的数値には踏み込まない。原理の発見(1991年)と実装上の精緻化(2020年)の間には約30年の時間差がある(Source: [[@1991__Wiley__The Art of Computer Systems Performance Analysis - Chapter 7 Monitors]] §7.2, [[継続的プロファイリング]])。 - **「モニタの起動機構」という時間軸のサンプリングと、[[サンプリング手法]]が扱う「母集団からのデータサブセット選択」というサンプリングは、同じ語を使いながら対象が異なる**: 第7章のサンプリング型モニタは「いつモニタを起動するか」という時間軸上のサンプリングを扱うのに対し、[[サンプリング手法]](機械学習の訓練データ選定)は「どのデータ点を母集団から選ぶか」という空間(集合)軸のサンプリングを扱う。両者は「全数を扱うコストが高いため部分集合で代替する」という同じ動機を共有するが、モニタのサンプリングは時間方向の間引き、訓練データのサンプリングは空間方向の間引きであり、単純な同一視はできない。この区別自体が、「サンプリング」という語が計算機科学で複数の異なる軸に適用される多義的な概念であることを示す横断的な観察である(Source: [[@1991__Wiley__The Art of Computer Systems Performance Analysis - Chapter 7 Monitors]] §7.2, [[サンプリング手法]])。 - **分散システムモニタの7層モデル(観測・収集・分析・提示・解釈・コンソール・管理)は、[[分散モニタリング]]が扱う実システム(Ganglia)の設計と層構造の対応が取れる**: 詳細は [[分散モニタリング]] の横断的知見を参照。1991年の一般的な層モデルが、2004年の実装(gmond/gmetad)にどう写像されるかを検討している。 - **課金ログを「モニタの代替」とみなす第8章の発想は、第7章の3軸分類が暗黙に前提していた「モニタは観測目的で設計される」という仮定を破る**: 第7章の実装水準・起動機構・結果提示方法という3軸は、いずれもモニタ設計者が観測目的から逆算して選択するパラメータである。これに対し第8章§8.3は、課金・請求という無関係な目的のために常時稼働しているログ機構(課金ログ)を、性能解析用モニタの代わりに転用できると主張する。課金ログは3軸のいずれについても性能解析の都合で最適化されていない(記録粒度は課金要件で決まり、システム水準情報は最初から欠落する)にもかかわらず、「組み込み済みで追加開発が不要」「オーバーヘッドが小さく長期収集できる」という、まさに事象駆動対サンプリングのトレードオフ論(§7.2)が丁寧に設計しようとしていた利点を、設計努力なしに得ている。これは、モニタの理想形を追求する設計論(第7章)と、既存の副産物データを転用する実務論(第8章)という、性能測定の異なる2つのアプローチが本書内で並置されていることを示す(Source: [[@1991__Wiley__The Art of Computer Systems Performance Analysis - Chapter 7 Monitors]] §7.2, [[@1991__Wiley__The Art of Computer Systems Performance Analysis - Chapter 8 Program Execution Monitors and Accounting Logs]] §8.3)。 - **プログラム実行モニタの「測定技法」論点(トレース対サンプリング)は、第7章の起動機構軸(事象駆動対サンプリング型)をプログラム実行という具体的対象に特化した再定式化である**: 第8章§8.1.1は、トレース(明示的フックまたはプロセッサのトレースモード)とサンプリング(システムタイマーによる周期的な状態記録)を「プログラム実行モニタの2つの基本測定技法」として提示するが、この対立構造は第7章§7.2の事象駆動対サンプリング型モニタの分類と同一である。第8章が付け加える具体化は、(1)トレースモードは機械命令水準のモニタにしか適さないほど大量のデータを生む、(2)サンプリングはCPU時間間隔かエラプス時間間隔かを選べ、後者は待ち状態(I/O待ち等)も記録する、という2点であり、一般分類論(第7章)を実装レベルの意思決定(第8章)へ橋渡ししている(Source: 同 §7.2, [[@1991__Wiley__The Art of Computer Systems Performance Analysis - Chapter 8 Program Execution Monitors and Accounting Logs]] §8.1.1)。 ## 未解決の問い - 1991年モデルの「実装水準×起動機構×結果提示方法」という3軸分類は、[[継続的プロファイリング]]が列挙するプロファイラ種別(CPU/Heap/GPU/Mutex/IO)のような後年の分類軸とどう対応づけられるか。後者は「何を観測するか(観測対象の種類)」という第4の軸を暗黙に導入しているようにみえるが、1991年モデルはこの軸を明示的には持たない。 - 「サンプリング型モニタはオーバーヘッドが事象頻度に依存しない」という1991年の原則は、[[トレーシングオーバーヘッド]]が扱う[[トレースサンプリング]](分散トレーシングにおける確率的サンプリング)にどこまで正確に当てはまるか。トレースサンプリングはサンプリング率に応じて記録するトレース数(≒オーバーヘッド)が変わるため、厳密には「オーバーヘッドが事象頻度に依存しない」という1991年モデルの主張(タイマー起動によるオーバーヘッドの分離)とは異なる仕組みでオーバーヘッドを削減している可能性があり、両者の異同を精査する余地がある。 - 1991年モデルの「実装水準」軸(ソフトウェア/ハードウェア/ファームウェア/ハイブリッド)のうち、ファームウェアモニタに相当する現代の実装(NIC上のマイクロプログラムによるオフロード計装等)は、[[eBPF]]ベースの非侵入的手法とどう位置づけの異同があるか。 - 課金ログのような「観測目的で設計されていないが転用可能なデータ源」は、現代のオブザーバビリティスタックでどの構成要素に対応するか。クラウド課金ダッシュボード(コスト・使用量データ)やアクセスログを性能解析・キャパシティ計画に転用する実践は、第8章の課金ログ転用論とどこまで同型か、どこで異なるか(未検証)。 ## 関連 - ソース: [[@1991__Wiley__The Art of Computer Systems Performance Analysis - Chapter 7 Monitors]] — 本概念の初出。モニタの3軸分類・ソフトウェア/ハードウェア/ファームウェア/ハイブリッドモニタの設計論点・分散システムモニタの7層モデル - ソース: [[@1991__Wiley__The Art of Computer Systems Performance Analysis - Chapter 8 Program Execution Monitors and Accounting Logs]] — 第7章の3軸分類をプログラム実行モニタ(測定単位・測定技法・計装機構・プロファイルレポート)へ具体化し、課金ログという「設計されていないモニタ」を追加する - 概念: [[性能測定]](モニタは測定という技法を実行する道具) / [[分散モニタリング]](§7.7の分散システムモニタと対応) / [[トレーシングオーバーヘッド]](事象駆動型オーバーヘッドの現代的実測) / [[継続的プロファイリング]](サンプリング型の現代的実装) / [[サンプリング手法]](「サンプリング」の多義性) - 実体: [[Raj Jain]] - 書籍: [[The Art of Computer Systems Performance Analysis]] ## 出典 - Raj Jain, *The Art of Computer Systems Performance Analysis*, John Wiley & Sons, 1991, Chapter 7, Chapter 8.