(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024168027
(43)【公開日】2024-12-05
(54)【発明の名称】監視装置,監視プログラムおよび監視方法
(51)【国際特許分類】
G06F 11/07 20060101AFI20241128BHJP
【FI】
G06F11/07 196
G06F11/07 140J
G06F11/07 160
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2023084410
(22)【出願日】2023-05-23
(71)【出願人】
【識別番号】598057291
【氏名又は名称】エフサステクノロジーズ株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(72)【発明者】
【氏名】牧野 幸雄
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042GA11
5B042JJ29
5B042MA08
5B042MC08
5B042MC38
(57)【要約】
【課題】センサ値に基づき異常を検出する監視装置がフェールセーフ処理を適切に実行できるようにする。
【解決手段】監視装置2は、複数のセンサ3の各々と通信可能に接続された第1プロセッサ#0と、複数のセンサ3の各々と通信可能に接続された第2プロセッサ#0と、を備える。第1プロセッサ#0は、各センサ3からセンサ値を取得する第1ポーリング処理を第1監視周期で実行し、取得されたセンサ値が第1閾値を超えた第1センサ3を検出した場合、第1センサ3を第1ポーリング処理の対象から除外し、第2プロセッサ#1は、1以上の第1センサ3の各々からセンサ値を取得する第2ポーリング処理を、第1監視周期よりも短い第2監視周期で実行し、取得されたセンサ値が、第1閾値とは異なる第2閾値であって異常を検出するための第2閾値を超えた第2センサ3を検出した場合、第2センサ3の計測対象の機器4のフェールセーフ処理を実行する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
複数のセンサの各々と通信可能に接続された第1プロセッサと、
前記複数のセンサの各々と通信可能に接続された第2プロセッサと、を備え、
前記第1プロセッサは、
前記複数のセンサの各々からセンサ値を取得する第1ポーリング処理を第1監視周期で実行し、
前記第1プロセッサにより取得されたセンサ値が第1閾値を超えた第1センサを検出した場合、前記第1センサを前記第1ポーリング処理の対象から除外し、
前記第2プロセッサは、
1以上の前記第1センサの各々からセンサ値を取得する第2ポーリング処理を、前記第1監視周期よりも短い第2監視周期で実行し、
前記第2プロセッサにより取得されたセンサ値が、前記第1閾値とは異なる第2閾値であって異常を検出するための前記第2閾値を超えた第2センサを検出した場合、前記第2センサの計測対象の機器のフェールセーフ処理を実行する、
監視装置。
【請求項2】
前記第2プロセッサは、
前記第2プロセッサにより取得されたセンサ値が前記第1閾値以下の第3センサを検出した場合、前記第3センサを前記第2ポーリング処理の対象から除外し、
前記第1プロセッサは、
前記第3センサを含めた1以上の前記センサの各々からセンサ値を取得する前記第1ポーリング処理を実行する、
請求項1に記載の監視装置。
【請求項3】
前記第1プロセッサ及び前記第2プロセッサの各々からアクセス可能な記憶領域を備え、
前記記憶領域は、前記複数のセンサの各々について、前記第1閾値,前記第2閾値,最新のセンサ値,並びに前記第1プロセッサ及び前記第2プロセッサのいずれか一方を示す第1情報を対応付けた管理情報を記憶し、
前記第1プロセッサは、前記管理情報に基づき前記第1ポーリング処理を実行し、
前記第2プロセッサは、前記管理情報に基づき前記第2ポーリング処理を実行する、
請求項1又は請求項2に記載の監視装置。
【請求項4】
前記第1プロセッサは、
前記第1ポーリング処理において、前記管理情報の前記第1情報に前記第1プロセッサを示す情報が設定された1以上の前記センサの各々から取得したセンサ値を前記管理情報に格納し、
前記第1センサを検出した場合、前記管理情報の前記第1センサの前記第1情報に前記第2プロセッサを示す情報を設定し、
前記第2プロセッサは、
前記第2ポーリング処理において、前記管理情報の前記第1情報に前記第2プロセッサを示す情報が設定された前記1以上の第1センサの各々から取得したセンサ値を前記管理情報に格納する、
請求項3に記載の監視装置。
【請求項5】
前記1以上の第1センサの数が所定の上限数を超える場合に、前記1以上の第1センサのうちの所定の条件を満たす第4センサを前記第2ポーリング処理の対象から除外し、
除外した前記第4センサを前記第1ポーリング処理の対象に含める、
制御部を備える、
請求項1又は請求項2に記載の監視装置。
【請求項6】
複数のセンサの各々と通信可能に接続された第1プロセッサと、前記複数のセンサの各々と通信可能に接続された第2プロセッサと、を備えるコンピュータの前記第1プロセッサに、
前記複数のセンサの各々からセンサ値を取得する第1ポーリング処理を第1監視周期で実行し、
前記第1プロセッサにより取得されたセンサ値が第1閾値を超えた第1センサを検出した場合、前記第1センサを前記第1ポーリング処理の対象から除外し、
前記第2プロセッサに、
1以上の前記第1センサの各々からセンサ値を取得する第2ポーリング処理を、前記第1監視周期よりも短い第2監視周期で実行し、
前記第2プロセッサにより取得されたセンサ値が、前記第1閾値とは異なる第2閾値であって異常を検出するための前記第2閾値を超えた第2センサを検出した場合、前記第2センサの計測対象の機器のフェールセーフ処理を実行する、
処理を実行させる、監視プログラム。
【請求項7】
複数のセンサの各々と通信可能に接続された第1プロセッサと、前記複数のセンサの各々と通信可能に接続された第2プロセッサと、を備えるコンピュータの前記第1プロセッサが、
前記複数のセンサの各々からセンサ値を取得する第1ポーリング処理を第1監視周期で実行し、
前記第1プロセッサにより取得されたセンサ値が第1閾値を超えた第1センサを検出した場合、前記第1センサを前記第1ポーリング処理の対象から除外し、
前記第2プロセッサが、
1以上の前記第1センサの各々からセンサ値を取得する第2ポーリング処理を、前記第1監視周期よりも短い第2監視周期で実行し、
前記第2プロセッサにより取得されたセンサ値が、前記第1閾値とは異なる第2閾値であって異常を検出するための前記第2閾値を超えた第2センサを検出した場合、前記第2センサの計測対象の機器のフェールセーフ処理を実行する、
処理を実行する、監視方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、監視装置,監視プログラムおよび監視方法に関する。
【背景技術】
【0002】
複数のデバイス(機器)に搭載される複数のセンサの各々から、デバイスの状態の計測結果であるセンサ値を所定周期で取得する(ポーリングする)ことで、デバイスの状態を監視する監視装置が知られている。
【0003】
監視装置は、センサ値が閾値を超えた場合にデバイスが正常状態から異常状態に遷移したと判断して該当デバイスの異常をオペレータに通知する。また、監視装置は、デバイスの異常種類によっては、当該デバイスの動作停止等のフェールセーフ処理を行なう。
【0004】
状態の監視対象となるデバイスとしては、例えば、CPU(Central Processing Unit),メモリ,PSU(Power Supply Unit),バッテリ等が挙げられる。これらのデバイスの状態をセンシングするセンサの各々は、センサ値として、例えば、CPU温度,メモリ温度,PSU温度,バッテリ温度等を計測する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】国際公開第2021/100160号パンフレット
【特許文献2】特開2019-186618号公報
【特許文献3】特開2011-34320号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
監視装置は、センサ値を一定周期で取得してデバイスの状態を監視するため、デバイスの異常発生のタイミングによっては、デバイスの異常発生から1周期近く遅延してデバイスの異常を検出する場合がある。
【0007】
この場合、デバイスが異常状態から正常状態に自律的に復帰可能なフェールセーフ処理、例えば監視装置からの制御によるCPUのクロックダウン等のソフトウェア処理が間に合わず、例えばハードウェアによるフェールセーフ処理が動作することがある。ハードウェアによるフェールセーフ処理とは、デバイスが異常状態から正常状態に自律的に復帰不可能な処理、例えばデバイスにおけるヒューズの作動等が挙げられる。
【0008】
このようなハードウェアによるフェールセーフ処理が動作すると、デバイスを備えるコンピュータ(システム)の停止,デバイスの交換作業の発生等により、コンピュータの継続動作が阻害され得る。また、デバイスの交換作業に伴う機材費,人件費等のコストが発生し得る。
【0009】
1つの側面では、本発明は、センサ値に基づき異常を検出する監視装置がフェールセーフ処理を適切に実行できるようにすることを目的の1つとする。
【課題を解決するための手段】
【0010】
1つの側面では、監視装置は、複数のセンサの各々と通信可能に接続された第1プロセッサと、前記複数のセンサの各々と通信可能に接続された第2プロセッサと、を備えてよい。前記第1プロセッサは、前記複数のセンサの各々からセンサ値を取得する第1ポーリング処理を第1監視周期で実行し、前記第1プロセッサにより取得されたセンサ値が第1閾値を超えた第1センサを検出した場合、前記第1センサを前記第1ポーリング処理の対象から除外してよい。前記第2プロセッサは、1以上の前記第1センサの各々からセンサ値を取得する第2ポーリング処理を、前記第1監視周期よりも短い第2監視周期で実行し、前記第2プロセッサにより取得されたセンサ値が、前記第1閾値とは異なる第2閾値であって異常を検出するための前記第2閾値を超えた第2センサを検出した場合、前記第2センサの計測対象の機器のフェールセーフ処理を実行してよい。
【発明の効果】
【0011】
1つの側面では、本発明は、センサ値に基づき異常を検出する監視装置がフェールセーフ処理を適切に実行できる。
【図面の簡単な説明】
【0012】
【
図1】一実施形態に係るシステムのハードウェア構成例を示すブロック図である。
【
図2】一実施形態に係る監視装置のソフトウェア構成例を示すブロック図である。
【
図3】比較例に係る異常検出のタイミングを示す図である。
【
図4】一実施形態に係る監視装置による異常検出のタイミングの一例を示す図である。
【
図7】センサ情報の変化例を説明するための図である。
【
図8】異常判定部によるフェールセーフ処理の一例を説明するための図である。
【
図9】ポーリング上限数制御の一例を説明するための図である。
【
図10】一実施形態に係る動作制御部の動作例を説明するためのフローチャートである。
【
図11】一実施形態に係る処理部#0の動作例を説明するためのフローチャートである。
【
図12】一実施形態に係る処理部#1の動作例を説明するためのフローチャートである。
【
図13】一実施形態に係る動作制御部のポーリング上限数制御の動作例を説明するためのフローチャートである。
【発明を実施するための形態】
【0013】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形又は技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【0014】
〔A〕ハードウェア構成例
図1は、一実施形態に係るシステム1のハードウェア構成例を示すブロック図である。
図1に例示するように、システム1は、監視装置2,複数(m個:mは2以上の整数)のセンサ3,及び複数(n個:nは2以上の整数)のデバイス4を備えてよい。
【0015】
センサ3は、計測(センシング)対象であるデバイス4の状態を計測し、計測結果(センサ値)を出力する。センサ3により計測される状態としては、例えば、温度,電圧,電流,回転数等の、コンピュータの異常の検出に用いられる種々の状態が挙げられる。
【0016】
センサ3は、計測対象であるデバイス4に備えられた内蔵センサであってもよいし、デバイス4とは別体に設けられた外付センサであってもよい。なお、センサ3の数mは、デバイス4の数nと同一であってもよいし、異なってもよい。例えば、1つのセンサ3が複数のデバイス4の状態を計測してもよいし、複数のセンサ3が1つのデバイス4の状態を計測してもよい。
【0017】
デバイス4は、センサ3による状態の計測対象の機器である。デバイス4としては、例示的に、プロセッサ(例えばCPU),メモリ,PSU,バッテリ,HDD(Hard Disk Drive),SSD(Solid State Drive),ファン,システムボード等の種々のコンピュータが備える種々のコンポーネントが挙げられる。
【0018】
少なくとも1つのセンサ3と少なくとも1つのデバイス4とは、サーバ5に備えられてもよい。
図1の例では、m個のセンサ3及びn個のデバイス4がサーバ5に備えられるものとする。サーバ5は、コンピュータ又は情報処理装置の一例である。
【0019】
監視装置2は、コンピュータ又は情報処理装置の一例であり、複数のデバイス4の状態の計測結果である複数のセンサ値を複数のセンサ3の各々から所定周期で取得する(ポーリングする)ことで、複数のデバイス4の状態を監視する。また、監視装置2は、センサ値から異常を検出したデバイス4のフェールセーフ処理を実行する。
【0020】
図1に示すように、監視装置2は、HW構成として、例示的に、複数(
図1の例では2個)のプロセッサ2a,グラフィック処理装置2b,メモリ2c,記憶部2d,IF(Interface)部2e,IO部2f,読取部2gを備えてよい。
【0021】
プロセッサ2aは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ2aは、監視装置2内の各ブロックとバス2jで相互に通信可能に接続されてよい。
図1に示す例では、プロセッサ2aは、マルチプロセッサであってよい。なお、プロセッサ2aは、複数のプロセッサコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
【0022】
プロセッサ2aとしては、例えば、CPU,MPU,APU,DSP,ASIC,FPGA等の集積回路(IC:Integrated Circuit)が挙げられる。なお、プロセッサ2aとして、これらの集積回路の2以上の組み合わせが用いられてもよい。MPUはMicro Processing Unitの略称である。APUはAccelerated Processing Unitの略称である。DSPはDigital Signal Processorの略称であり、ASICはApplication Specific ICの略称であり、FPGAはField-Programmable Gate Arrayの略称である。
【0023】
グラフィック処理装置2bは、IO部2fのうちのモニタ等の出力装置に対する画面表示制御を行なう。また、グラフィック処理装置2bは、機械学習モデルを利用した機械学習処理及び推論処理を実行するアクセラレータとしての構成を有してもよい。グラフィック処理装置2bとしては、種々の演算処理装置、例えば、GPU(Graphics Processing Unit),APU,DSP,ASIC又はFPGA等の集積回路(IC)が挙げられる。
【0024】
メモリ2cは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。メモリ2cとしては、例えばDRAM(Dynamic Random Access Memory)等の揮発性メモリ,PM(Persistent Memory)等の不揮発性メモリ、の一方又は双方が挙げられる。
【0025】
記憶部2dは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。記憶部2dとしては、HDD等の磁気ディスク装置,SSD等の半導体ドライブ装置,不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ,SCM(Storage Class Memory),ROM(Read Only Memory)等が挙げられる。
【0026】
記憶部2dは、監視装置2の各種機能の全部若しくは一部を実現するプログラム2h(監視プログラム)を格納してよい。
【0027】
例えば、監視装置2のプロセッサ2aは、記憶部2dに格納されたプログラム2hをメモリ2cに展開して実行することにより、後述する監視装置2(例えば、
図2に示す制御部20)としての機能を実現できる。なお、プログラム2hは、例えば、複数のプログラムに分割され、複数のプロセッサ2aの各々に分散して格納されてもよい。当該複数のプログラムは、少なくとも一部の機能が互いに共通(重複)してもよい。複数のプロセッサ2aは、互いに協調して、それぞれに格納されたプログラムを実行することで、監視装置2の各種機能の全部若しくは一部を実現してもよい。
【0028】
IF部2eは、監視装置2とセンサ3の間,監視装置2とデバイス4との間,監視装置2と図示しないコンピュータ(例えばシステム1の管理者が使用する管理装置)との間等の接続及び通信の制御等を行なう通信IFの一例である。例えば、IF部2eは、イーサネット(登録商標),インフィニバンド,ミリネット,I2C(Inter-Integrated Circuit)等の種々の通信規格に準拠したアダプタを含んでよい。当該アダプタは、無線及び有線の一方又は双方の通信方式に対応してよい。また、当該アダプタは、例えば、FC(Fibre Channel)等の光通信に準拠してもよい。
【0029】
また、プログラム2hは、当該通信IFを介して、図示しないネットワークから監視装置2にダウンロードされ、記憶部2dに格納されてもよい。
【0030】
さらに、例えば、IF部2eは、
図1に実線で示す通信路1aを介して、センサ3の各々と相互に通信可能に接続されてよく、
図1に破線で示す通信路1bを介して、デバイス4の各々と通信可能に接続されてよい。通信路1a及び1bの一方又は双方は、例えば、I2Cの通信規格に準拠したケーブル又はバスを含んでよい。
【0031】
なお、監視装置2とサーバ5とは、同一のコンピュータ(システム)として、例えば単一の筐体に実装されてもよいし、互いに離間して(例えば同じサーバラック内,同じデータセンタ内,別施設等に)設置されてもよい。監視装置2とサーバ5とが互いに離間して設置される場合、監視装置2とサーバ5との間の通信路1a及び1bは、上述したI2Cの通信規格に準拠したケーブル又はバスに代えて又は加えて、LAN,インターネット等のネットワーク部分を含んでもよい。
【0032】
IO部2fは、入力装置及び出力装置の一方又は双方を含んでよい。入力装置としては、例えば、キーボード,マウス,タッチパネル等が挙げられる。出力装置としては、例えば、モニタ,プロジェクタ,プリンタ等の表示装置が挙げられる。また、IO部2fは、入力装置及び出力装置が一体となったタッチパネル等を含んでもよい。出力装置は、グラフィック処理装置2bに接続されてもよい。
【0033】
読取部2gは、記録媒体2iに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部2gは、記録媒体2iを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部2gとしては、例えば、USB(Universal Serial Bus)等に準拠したアダプタ,記録ディスクへのアクセスを行なうドライブ装置,SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体2iにはプログラム2hが格納されてもよく、読取部2gが記録媒体2iからプログラム2hを読み出して記憶部2dに格納してもよい。
【0034】
記録媒体2iとしては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的なコンピュータ読取可能な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク,CD(Compact Disc),DVD(Digital Versatile Disc),ブルーレイディスク,HVD(Holographic Versatile Disc)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等の半導体メモリが挙げられる。
【0035】
上述した監視装置2のハードウェア構成は例示である。従って、監視装置2内でのハードウェアの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。例えば、監視装置2は、IO部2f及び読取部2g等を省略してもよい。
【0036】
また、サーバ5は、
図1に例示する監視装置2のHW構成と同様のHW構成を備えてよい。サーバ5が備えるHW構成には、m個のセンサ3のうちの少なくとも1つと、n個のデバイス4のうちの少なくとも1つとが含まれてよい。サーバ5のプロセッサ(CPU)は、記憶部に格納されたプログラムをメモリに展開して実行することにより、サーバ5としての機能を実現できる。
【0037】
〔B〕ソフトウェア構成例
図2は、一実施形態に係る監視装置2のソフトウェア構成例を示すブロック図である。
図2に示すように、監視装置2は、例示的に、メモリ部21,動作制御部22,複数(
図2の例では2つ)の処理部23,通信部28及び出力部29を備えてよい。動作制御部22,複数の処理部23,通信部28及び出力部29は、制御部20の一例である。
【0038】
メモリ部21は、記憶領域の一例であり、監視装置2が利用する種々のデータを記憶する。メモリ部21は、例えば、監視装置2のメモリ2c及び記憶部2d(
図1参照)のうちの一方又は双方が有する記憶領域により実現されてもよい。メモリ部21は、複数の処理部23の各々からアクセス可能であってよい。
【0039】
図2に示すように、メモリ部21は、例示的に、センサ情報21a及びプロセッサ情報21bを記憶可能であってよい。以下、センサ情報21a及びプロセッサ情報21bの各々をテーブル形式で表記するが、これに限定されるものではなく、センサ情報21a及びプロセッサ情報21bの各々は、DB(Database)形式を含む種々の形式のデータであってもよい。
【0040】
複数の処理部23の各々は、ポーリング処理を実行する。一実施形態では、各処理部23は、互いに異なるプロセッサ2aにより実行される機能ブロックであってよい。
【0041】
以下、処理部23を区別する場合には、「処理部#0」及び「処理部#1」と表記する。また、処理部#0が動作するプロセッサ2aを「プロセッサ#0」と表記し、処理部#1が動作するプロセッサ2aを「プロセッサ#1」と表記する。プロセッサ#0は、複数のセンサ3の各々と通信可能に接続された第1プロセッサの一例であり、プロセッサ#1は、複数のセンサ3の各々と通信可能に接続された第2プロセッサの一例である。
【0042】
一実施形態に係る処理部#0及び#1は、例えば、以下の(1)~(4)の処理を実行してよい。
【0043】
(1)処理部#0は、複数のセンサ3の各々からセンサ値を取得する第1ポーリング処理を第1監視周期で実行する。
【0044】
(2)処理部#0は、処理部#0により取得されたセンサ値が第1閾値を超えた第1センサを検出した場合、第1センサを第1ポーリング処理の対象から除外する。
【0045】
(3)処理部#1は、1以上の第1センサの各々からセンサ値を取得する第2ポーリング処理を、第1監視周期よりも短い第2監視周期で実行する。
【0046】
(4)処理部#1により取得されたセンサ値が、第1閾値とは異なる第2閾値であって異常を検出するための第2閾値を超えた第2センサを検出した場合、第2センサの計測対象の機器のフェールセーフ処理を実行する。
【0047】
上述した処理部#1によれば、処理部#0による第1ポーリング処理により、センサ値が第1閾値を超えたことが検出された1以上のセンサ3を対象として、第1ポーリング処理の第1監視周期よりも短い第2監視周期で第2ポーリング処理を実行できる。そして、処理部#1によれば、第2ポーリング処理において、異常を検出するための第2閾値を超えたセンサ3を検出した場合、当該センサ3の計測対象のデバイス4のフェールセーフ処理を実行できる。
【0048】
このように、処理部#1(プロセッサ#1)は、センサ値が第1閾値以下である他のセンサ3に対するポーリング処理の影響を受けずに、センサ値が第1閾値を超えたセンサ3について、第1監視周期よりも短い第2監視周期でポーリングを行なうことができる。これにより、処理部#1は、処理部#0が第1監視周期で単独でポーリング処理を行なう場合と比較して、センサ値が第2閾値を超えたことを早期に検出できる。
【0049】
従って、処理部#1は、センサ値が第2閾値を超えたセンサ3に対して、ソフトウェア処理のフェールセーフ処理を適切に実行することができる。例えば、処理部#1により、センサ値が第2閾値を超えたセンサ3に対するフェールセーフ処理を追随させることができるため、デバイス4におけるハードウェアによるフェールセーフの発生を抑止できる。
【0050】
図3は、比較例に係る異常検出のタイミングを示す図であり、
図4は、一実施形態に係る監視装置2による異常検出のタイミングの一例を示す図である。なお、
図3及び
図4では、センサ値がCPU温度である場合を例に挙げる。
【0051】
図3に示す比較例では、単一のプロセッサ2aが複数(例えば10個)のセンサ3の各々からポーリングを行なうものとする。なお、Pi(iは1以上の整数)は、プロセッサ2aによるi回目のポーリングで所定のセンサ3からCPU温度を取得したタイミングを示す。
【0052】
図3に示すように、プロセッサ2aは、P1~P3において、CPU温度が警告閾値以下であるため、ポーリングを継続する。プロセッサ2aは、P4において、CPU温度が警告閾値を超えたことを検出し、当該センサ3に関する警告(例えば管理者への通知等)を行なう。P4の後、時刻tにおいてCPU温度が異常閾値を超えるが、次のポーリングタイミングであるP5まで、プロセッサ2aは異常を検出しない。プロセッサ2aは、P5において、CPU温度が異常閾値を超えたことを検出し、当該所定のセンサ3の計測対象のデバイス4のフェールセーフ処理(例えばソフトウェア処理によるCPUのクロックダウン等)の実行を試みる。
【0053】
しかし、上述したように、異常検出タイミングによっては、ソフトウェア処理によるフェールセーフ処理が間に合わず、ハードウェアによるフェールセーフ処理が動作してしまう場合がある。ハードウェアによるフェールセーフ処理の実行を抑制するためには、センサ値が異常閾値を超えた後、可能な限り早いタイミングで異常が検出されることが重要である。
【0054】
図4の符号A1には、処理部#0(プロセッサ#0)が複数(例えば10個)のセンサ3の各々に対して第1ポーリング処理を行なう例を示す。
【0055】
また、
図4の符号A2には、当該複数のセンサ3のうち、センサ値が第1閾値を超えたセンサ3について、処理部#1が第2ポーリング処理を行なう例を示す。
【0056】
なお、Piは、処理部#0によるi回目のポーリングで所定のセンサ3からCPU温度を取得したタイミングを示し、Qj(jは1以上の整数)は、処理部#1によるj回目のポーリングで当該所定のセンサ3からCPU温度を取得したタイミングを示す。
【0057】
符号A1に示すように、処理部#0は、P1~P3において、CPU温度が警告閾値以下であるため、第1ポーリング処理を継続する。処理部#0は、P4において、CPU温度が警告閾値を超えたことを検出し、当該CPU温度を計測する所定のセンサ3を、第1ポーリング処理の対象から除外する。処理部#0は、P5以降は、10個のセンサ3のうちの所定のセンサ3を除いた9個のセンサ3に対して第1ポーリング処理を行なう。警告閾値は第1閾値の一例である。
図4に示す警告閾値は、
図3に示す警告閾値と同一であってもよいし、異なってもよい。
【0058】
符号A2に示すように、処理部#1は、所定のセンサ3について、処理部#0のポーリング間隔よりも短い(例えば1/4の)ポーリング間隔で、Q1(P4)から第2ポーリング処理を実行する。処理部#1は、Q2において、CPU温度が異常閾値以下であるため、第2ポーリング処理を継続する。
【0059】
処理部#1は、Q3において、CPU温度が異常閾値を超えたことを検出する、すなわち、当該所定のセンサ3のセンサ値が異常を示すことを検出(異常検出)する。処理部#1は、異常検出をトリガとし、当該所定のセンサ3の計測対象のデバイス4のフェールセーフ処理(例えばソフトウェア処理によるCPUのクロックダウン等)の実行を試みる。異常閾値は第2閾値の一例である。
図4に示す異常閾値は、
図3に示す異常閾値と同一であってもよいし、異なってもよい。
【0060】
このように、処理部#1が異常を検出するタイミングであるQ3(符号A2参照)は、
図3に示すプロセッサ2aが異常を検出するタイミングであるP5よりも、Q4~Q5(P5)の期間(第2ポーリング処理の2回分の期間)だけ早い。これにより、処理部#1は、比較例と比較して、センサ値が異常閾値を超過してからソフトウェアにより異常が検出されるまでのタイムラグを低減することができ、ソフトウェア処理のフェールセーフ処理を適切に実行することができる。
【0061】
また、処理部#1は、処理部#0による他の9個のセンサ3に対する第1ポーリング処理の影響(例えば処理負荷,処理時間等)を受けずに、警告閾値を超えた所定のセンサ3に対する第2ポーリング処理の実行に専念することができる。これにより、ポーリング対象のセンサ3の数に依らず、異常検出を適切なタイミングで行なうことができる。
【0062】
図2の説明に戻り、動作制御部22は、一実施形態に係る監視装置2の全体の動作を制御する。動作制御部22は、プロセッサ#0及び#1のいずれか一方により実行されてもよいし、プロセッサ#0及び#1とは異なるプロセッサ2aにより実行されてもよい。或いは、動作制御部22の機能を2以上のプロセッサ2aに分散して配置する場合、動作制御部22は、当該2以上のプロセッサ2aにより実行されてもよい。
【0063】
通信部28は、処理部23からの要求に応じて、複数のセンサ3の各々から通信路1aを介してセンサ値のポーリングを行なう。また、通信部28は、処理部23からの要求に応じて、通信路1aを介して複数のデバイス4のうちのいずれかのデバイス4に制御コマンドを送信することで、当該デバイス4のソフトウェア処理によるフェールセーフを実行する。
【0064】
出力部29は、出力データを出力する。出力データとしては、例えば、メモリ部21に格納されたセンサ情報21a,プロセッサ情報21b,処理部23による種々の判定結果のうちの少なくとも1種類の情報が挙げられる。
【0065】
出力部29は、出力データの「出力」において、例えば、出力データをサーバ5又は管理者が使用する管理装置(図示省略)に送信(提供)してもよい。或いは、出力部29は、出力データの「出力」において、出力データをメモリ部21に蓄積して、サーバ5又は管理装置から取得可能に管理してもよい。又は、出力部29は、出力データの「出力」において、出力データを示す情報をサーバ5又は管理装置の出力装置に画面出力してもよく、その他の種々の態様により出力データを出力してもよい。
【0066】
以下、動作制御部22による処理及び処理部23による処理の一例を、メモリ部21が記憶するセンサ情報21a及びプロセッサ情報21bを参照しながら説明する。
【0067】
〔B-1〕センサ情報及びプロセッサ情報の説明
図5は、センサ情報21aの一例を示す図である。
図5には、センサ情報21aの初期状態の一例を示す。センサ情報21aは、複数のセンサ3の各々について、警告閾値,異常閾値,最新のセンサ値,並びにプロセッサ#0及び#1のいずれか一方を示す第1情報を対応付けた管理情報の一例である。
【0068】
図5に例示するように、センサ情報21aは、センサ3を管理するための情報であり、ID(Identifier),バス番号,アドレス,コマンド,警告閾値,異常閾値,取得値,実施プロセッサ,優先度,プロセッサ変更時刻の項目を含んでよい。
【0069】
IDは、センサ3の識別情報の一例であり、例えば、m個のセンサ3の間で一意の値(例えば有効数字1以上)であってよい。バス番号は、センサ3と接続される通信路1aのバス(例えばI2Cバス)の番号であり、通信部28によるコマンドの送出先を示す。アドレスは、通信路1a上のセンサ3に割り当てられたアドレスであり、例えば、同一のI2Cバス上(同一のバス番号内)で一位である。コマンドは、処理部23がセンサ3に送信する、センサ3からセンサ値を取得するためのコマンドである。センサ3は、当該コマンドの受信に応じてセンサ値を計測し、計測したセンサ値を処理部23に応答する。
【0070】
警告閾値は、センサ3により状態を監視されるデバイス4が警告状態に遷移したことを処理部23が判断するための閾値である。異常閾値は、センサ3により状態を監視されるデバイス4が異常状態に遷移したことを処理部23が判断するための閾値である。警告閾値及び異常閾値の各々の単位は、センサ3に応じて異なってよい。
【0071】
取得値は、処理部23からのコマンドの送信に応じてセンサ3により計測され、処理部23がセンサ3から取得(受信)した値である。取得値には、最新のセンサ値が設定されてよい。なお、取得値の初期値は0であってよい。
【0072】
実施プロセッサは、センサ値(取得値)を取得するプロセッサ2a、換言すれば、当該センサ3に対するポーリング処理を実施するプロセッサ2aを特定するための情報である。実施プロセッサには、プロセッサ#0及び#1のいずれかの識別情報(例えば#0又は#1)が設定されてよい。実施プロセッサの初期値は#0であってよい。
【0073】
優先度は、センサ3の優先度を示す情報であり、例えば、1が最高優先度,5が最低優先度となる1~5の5段階の数値により示されてよい。優先度は、計測対象のデバイス4,センサ3,センサ値のうちの少なくとも1つの重要度に応じて設定されてよい。プロセッサ変更時刻は、実施プロセッサが#0から#1に変化したときの時刻情報である。時刻情報は、絶対的な時刻を示すタイムスタンプであってもよいし、他のエントリに設定された時刻情報との間の時間的な前後関係を判別できるような相対的なタイミングを示す情報(例えばカウンタ値)等であってもよい。プロセッサ変更時刻の初期値は未設定(-)であってよい。また、実施プロセッサが#1から#0に変化した際に初期値にリセットされてもよい。
【0074】
上述したセンサ情報21aのうち、ID,バス番号,アドレス,コマンド,警告閾値,異常閾値は、例えば、システム1の運用前に事前に定義されてよい。なお、優先度,プロセッサ変更時刻の項目は、省略されてもよい。
【0075】
図6は、プロセッサ情報21bの一例を示す図である。
図6に例示するように、プロセッサ情報21bは、プロセッサ2aを管理するための情報であり、プロセッサ(処理部),ポーリング周期[ms](ミリ秒),ポーリング上限数の項目を含んでよい。
【0076】
プロセッサ(処理部)は、プロセッサ2aの識別情報の一例である。プロセッサ(処理部)には、プロセッサ#0及び#1のいずれかの識別情報(例えば#0又は#1)が設定されてよい。
【0077】
ポーリング周期は、プロセッサ2aによるポーリング処理の実行時間の間隔を示す情報である。プロセッサ#0のポーリング周期は第1監視周期の一例であり、プロセッサ#1のポーリング周期は第2監視周期の一例である。
【0078】
図6には、プロセッサ#0のポーリング周期が比較例に係るプロセッサ2aのポーリング周期と同程度である1000msに設定され、プロセッサ#1のポーリング周期がプロセッサ#0のポーリング周期の1/4である250msに設定される例を示す。プロセッサ#0及び#1のポーリング周期の割合は、例えば1/2~1/10程度であってもよく、或いは、プロセッサ2aの性能,センサ3の数m,その他システム1の要件(仕様)等に応じた種々の割合であってもよい。
【0079】
ポーリング上限数は、プロセッサ#1に設定される、第2ポーリング処理の対象となるセンサ3の数の上限である。なお、プロセッサ情報21bは、ポーリング上限数に加えて又は代えて、ポーリング下限数の項目を含んでもよい。ポーリング下限数は、プロセッサ#0に設定される、第1ポーリング処理の対象となるセンサ3の数の下限である。なお、ポーリング上限数(又は下限数)の項目は、省略されてもよい。
【0080】
上述したプロセッサ情報21bの各々の項目は、例えば、システム1の運用前に事前に定義されてよく、監視装置2の起動時等のタイミングで、固定値として設定されてよい。
【0081】
〔B-2〕動作制御部の説明
動作制御部22は、監視装置2の起動後に、センサ情報21aの初期化,処理部#0及び#1(プロセッサ#0及び#1)の起動及び初期設定,処理部#1が実行するポーリング数の制御等を行なってよい。
【0082】
(センサ情報21aの初期化処理)
動作制御部22は、監視装置2の起動後に、センサ情報21aを初期化してよい。センサ情報21aの初期化には、例えば、ID,バス番号,アドレス,コマンド,警告閾値,異常閾値を、事前に定義された固定値に設定する処理と、取得値,実施プロセッサ,優先度,プロセッサ変更時刻を、上述した初期値に設定する処理と、が含まれてよい。
【0083】
(処理部#0及び#1(プロセッサ#0及び#1)の起動及び初期設定処理)
動作制御部22は、プロセッサ#0及び#1の起動(動作制御部22が他のプロセッサ2aにより動作する場合),プロセッサ#0及び#1への処理部#0及び#1のプロセス(インスタンス)の割り当て等を行なってよい。
【0084】
また、動作制御部22は、処理部#0及び#1の初期設定として、プロセッサ情報21bに基づき、処理部#0及び#1の各々にポーリング周期を割り当ててよい。
図6の例では、動作制御部22は、プロセッサ#0にポーリング周期として1000msを設定し、プロセッサ#1にポーリング周期として250msを設定する。これにより、処理部#0及び#1の各々がポーリング処理を実行可能となる。
【0085】
(処理部#1が実行するポーリング数の制御)
また、動作制御部22は、プロセッサ情報21bを参照し、処理部#1が実行するポーリング数(センサ3の数)の制御を行なってもよい。なお、当該制御は、処理部#0及び#1の一方又は双方が実行してもよい。
【0086】
図4を参照して説明したように、処理部#1は、第1ポーリング処理によりセンサ値が警告閾値を超えたセンサ3を第2ポーリング処理の対象とする。第2ポーリング処理は、第1ポーリング処理よりも短い(例えば1/4の)ポーリング周期で実行されるため、第2ポーリング処理の対象となるセンサ3の数が多くなると、ポーリング周期内で第2ポーリング処理が完了しなくなる虞がある。
【0087】
そこで、動作制御部22は、第2ポーリング処理を第2監視周期内で確実に実行できるように、第2ポーリング処理の対象となるセンサ3の数を、プロセッサ情報21bのポーリング上限数以下に抑えるような制御を行なってよい。当該制御の詳細は後述する。
【0088】
〔B-3〕処理部の説明
処理部23は、センサ情報21aを参照し、自身の処理部23(プロセッサ2a)によるポーリング対象であるセンサ3の各々に対して、ポーリング処理を実行する。
【0089】
図2に示すように、処理部23(処理部#0及び#1の各々)は、例示的に、実施判定部24,収集部25,異常判定部26,情報更新部27を備えてよい。
【0090】
実施判定部24は、センサ情報21aのエントリを順番に(例えばID順に)探索し、実施プロセッサとして自身のプロセッサ#0又は#1が設定されたエントリを特定する。当該エントリは、自身のプロセッサ#0又は#1によるポーリング対象のセンサ3を示すエントリである。
【0091】
収集部25は、実施判定部24が特定した1以上のエントリが示す1以上のセンサ3の各々に対してポーリング処理を行なう。例えば、収集部25は、通信部28を介して、1以上のセンサ3の各々にセンサ値を取得するためのコマンドを送信し、当該センサ3から受信したセンサ値をセンサ情報21aの取得値に設定してよい。一例として、収集部25は、実施判定部24が特定した1以上のエントリの各々に設定されているバス番号及びアドレスに、当該1以上のエントリの各々に設定されているコマンドを送信してよい。
【0092】
異常判定部26は、収集部25が取得した(例えばセンサ情報21aに設定した)取得値と、警告閾値及び異常閾値の一方又は双方とを比較し、取得値の異常の有無を判定する。
【0093】
情報更新部27は、異常判定部26による判定結果に基づき、センサ情報21aを更新する。
【0094】
異常判定部26による判定処理及び情報更新部27による更新処理は、例えば、処理部#0又は#1に応じて異なってよい。以下、処理部#0及び#1のそれぞれにおける、異常判定部26及び情報更新部27の処理の一例を説明する。
【0095】
(処理部#0の異常判定部26及び情報更新部27による処理)
処理部#0の異常判定部26は、センサ情報21aにおいて、処理部#0のポーリング処理対象のセンサ3のエントリに設定されている、取得値と警告閾値とを比較し、取得値が警告閾値を超えているか否かを判定する。
【0096】
処理部#0の情報更新部27は、センサ情報21aにおいて、異常判定部26により取得値が警告閾値を超えていると判定されたセンサ3(第1センサ)のエントリ(更新対象エントリ)を更新する。例えば、情報更新部27は、更新対象エントリの実施プロセッサに#1を設定することで、当該更新対象エントリが示すセンサ3を、処理部#0による第1ポーリング処理の対象から除外してよい。
【0097】
また、処理部#0の情報更新部27は、更新対象エントリのプロセッサ変更時刻を設定してよい。
【0098】
図7は、センサ情報21aの変化例を説明するための図である。
図7の符号B1には、センサ情報21aにおける、実施プロセッサ:#0であるエントリ(ID:#0~#m-1)のそれぞれについて、収集部25により取得値が設定された状態を示す。
【0099】
符号B1に示すように、処理部#0の異常判定部26は、センサ情報21aのID:#1のエントリにおいて、取得値:65[℃]が警告閾値:60[℃]を超過したと判定する。情報更新部27は、センサ情報21aのID:#1のエントリにおいて、実施プロセッサを#0から#1に更新するとともに、プロセッサ変更時刻を未設定(-)からt1に更新する。
【0100】
(処理部#1の異常判定部26及び情報更新部27による処理)
処理部#1の異常判定部26は、センサ情報21aにおいて、処理部#0のポーリング処理対象のセンサ3のエントリに設定されている、取得値と異常閾値とを比較し、取得値が異常閾値を超えているか否かを判定する。
【0101】
取得値が異常閾値を超えている場合、異常判定部26は、取得値が異常閾値を超えているセンサ3(第2センサ)の監視対象(計測対象)のデバイス4のフェールセーフ処理を実行する。
【0102】
図8は、異常判定部26によるフェールセーフ処理の一例を説明するための図である。
図8には、センサ3(第2センサ)がCPU温度センサであり、当該センサ3の監視対象のデバイス4がCPUである場合を例に挙げる。
【0103】
図8に例示するように、処理部#1の異常判定部26は、収集部25により通信路1aを介してセンサ3から取得されたCPU温度(取得値)が異常閾値を超えている場合、通信路1bを介して、デバイス4にCPU使用率制限を指示する制御コマンドを送信する。CPU使用率制限を指示する制御コマンドの送信は、フェールセーフ処理の一例である。
【0104】
また、処理部#1の異常判定部26は、取得値が異常閾値以下である場合、取得値が警告閾値以下か否かを判定する。
【0105】
処理部#1の情報更新部27は、センサ情報21aにおいて、異常判定部26により取得値が警告閾値以下であると判定されたエントリ(更新対象エントリ)を更新する。取得値が警告閾値以下であるセンサ3(第3センサ)は、処理部#0による第1ポーリング処理のセンサ3に含めることが可能である。そこで、例えば、情報更新部27は、更新対象エントリの実施プロセッサに#0を設定することで、当該更新対象エントリが示すセンサ3を、処理部#1による第2ポーリング処理の対象から除外してよい。
【0106】
また、処理部#1の情報更新部27は、更新対象エントリのプロセッサ変更時刻を未設定に更新してよい。
【0107】
図7の符号B2には、センサ情報21aにおける、実施プロセッサ:#1であるエントリ(ID:#1)について、収集部25により取得値:55[℃]が設定された状態を示す。
【0108】
符号B2に示すように、処理部#1の異常判定部26は、センサ情報21aのID:#1のエントリにおいて、取得値:55[℃]が警告閾値:60[℃]以下になったと判定する。情報更新部27は、センサ情報21aのID:#1のエントリにおいて、実施プロセッサを#1から#0に更新するとともに、プロセッサ変更時刻をt1から未設定(-)に更新する。
【0109】
これにより、取得値が警告閾値以下に低下したセンサ3を処理部#1による処理対象から除外し、処理部#0による処理対象に戻すことができるため、処理部#1の処理負荷の増加を抑制できる。従って、処理部#1は、第2ポーリング処理を第2監視周期内に安定して完了させることができる。
【0110】
また、一実施形態に係る異常判定部26及び情報更新部27は、双方の処理部23(プロセッサ2a)からアクセス可能なセンサ情報21aを参照及び更新することによって、センサ値の異常を検出する。このように、センサ情報21aを用いることで処理部23(プロセッサ2a)間の通信頻度を低減させることができるため、ポーリング処理に割り当てることのできる各処理部23の処理リソースを増加させることができる。
【0111】
図9は、ポーリング上限数制御の一例を説明するための図である。
図9の符号C1には、処理部#0による第1ポーリング処理によって、ID:#1,#2,#3の3つのセンサ3の取得値が警告閾値を超えたと判定され、当該3つのセンサ3の実施プロセッサがプロセッサ#1に変更された状態を示す。
図9の符号C1の状態において、第1ポーリング処理によって、ID:#0のセンサ3の取得値が警告閾値を超えたと判定された場合を想定する。
【0112】
この場合、センサ情報21aでは、情報更新部27によって、ID:#0のセンサ3の実施プロセッサがプロセッサ#1に更新され、プロセッサ変更時刻がt0に更新される。この場合、プロセッサ#1の第2ポーリング処理の対象のセンサ3の数が4つになり、
図6のプロセッサ情報21bではプロセッサ#1のポーリング上限数である3を超過する。
【0113】
そこで、動作制御部22は、実施プロセッサがプロセッサ#1であるセンサ3(第2センサ)のうちの、ポーリング上限数を超える数の、所定の条件を満たすセンサ3(第4センサ:
図9の例では1つのセンサ3)を選択する。そして、動作制御部22は、例えば処理部#0又は#1の情報更新部27を介して、選択したセンサ3の実施プロセッサをプロセッサ#0に更新する。
【0114】
なお、動作制御部22によるポーリング上限数の制御は、実施プロセッサがプロセッサ#1であるセンサ3の数がポーリング上限数を超える都度実行されてよい。このため、以下の説明では、動作制御部22は、実施プロセッサをプロセッサ#0に更新するセンサ3(第4センサ)を1つ選択するものとする。
【0115】
動作制御部22は、第4センサとして、所定の条件を満たすセンサ3を選択してよい。例えば、
図9の符号C2に示すように、動作制御部22は、実施プロセッサがプロセッサ#1であるID:#0,#1,#2,#3の4つのセンサ3のうちの、センサ情報21aにおける優先度が最も低いセンサ3を1つ選択してよい。なお、優先度が最も低いセンサ3が複数存在する場合、動作制御部22は、優先度が最も低いセンサ3のうちのプロセッサ変更時刻が最も古いセンサ3を選択してよい。
【0116】
図9の符号C2では、t2がt3よりも過去である場合において、動作制御部22が、優先度が3であるID:#2,#3のセンサ3のうちの、ID:#2のセンサ3をFIFO(First In, First Out)によって選択する例を示す。この場合、動作制御部22は、下記のように、処理部#0によるID:#0のセンサ3の実施プロセッサ及びプロセッサ変更時刻の更新を維持しつつ、ID:#2のセンサ3について、実施プロセッサ及びプロセッサ変更時刻を更新する。すなわち、動作制御部22は、選択したID:#2のセンサ3を、プロセッサ#0の第1ポーリング処理の対象に含める。
ID:#0,実施プロセッサ:#1,プロセッサ変更時刻:t0
ID:#2,実施プロセッサ:#0,プロセッサ変更時刻:未設定(-)
【0117】
これにより、第2ポーリング処理を第2監視周期内に実行させつつ、優先度の高いセンサ3を優先して第2ポーリング処理の対象にすることができる。この場合、例えば、サーバ5の継続稼働にとって優先度の高いデバイス4についての異常を早期に検出できるようになるため、当該デバイス4に対して異常判定部26によるフェールセーフ処理を適切に実行できる。従って、ハードウェアによるフェールセーフ処理が動作する可能性を低減できるため、サーバ5の可用性の向上を実現することができる。
【0118】
なお、動作制御部22によるセンサ3の選択の際に、最も低い優先度が1である(実施プロセッサがプロセッサ#1である全てのセンサ3(第2センサ)の優先度が1である)場合、サーバ5のシステム的に危険な状態であるといえる。この場合、動作制御部22は、出力部29を介してサーバ5,管理装置等に警告を通知してもよく、また、通信部28を介してサーバ5のシステムを停止してもよい。
【0119】
〔C〕動作例
次に、一実施形態に係る監視装置2の動作例を説明する。
図10は、一実施形態に係る動作制御部22の動作例を説明するためのフローチャートである。
【0120】
〔C-1〕動作制御部の動作例
図10に例示するように、監視装置2が起動すると、動作制御部22は、センサ情報21aを初期化(
図5参照)し(ステップS1)、処理部#0及び#1を起動する(ステップS2)。例えば、動作制御部22は、プロセッサ#0に処理部#0のプロセスを、プロセッサ#1に処理部#1のプロセスを、それぞれ割り当ててよい。
【0121】
動作制御部22は、プロセッサ情報21bを参照して、処理部#0及び#1の各々にポーリング周期を設定する(ステップS3)。
【0122】
動作制御部22は、処理部#0及び#1のそれぞれによるポーリング処理を開始(起動)する(ステップS4)。
【0123】
動作制御部22は、管理装置等から、センサ3の監視終了指示を受信するまで(ステップS5,ステップS5でNO)、処理部#0及び#1にステップS4のポーリング処理を繰り返し実行させる。
【0124】
監視終了指示を受信した場合(ステップS5でYES)、動作制御部22は、処理部#0及び#1を停止し(ステップS6)、処理が終了する。
【0125】
〔C-2〕処理部の動作例
図11は、一実施形態に係る処理部#0の動作例を説明するためのフローチャートであり、
図12は、一実施形態に係る処理部#1の動作例を説明するためのフローチャートである。
図11及び
図12は、
図10に示すステップS4の一例である。なお、
図11及び
図12に示す処理は、それぞれ、処理部#0及び#1におけるポーリング周期1回分の処理に相当する。
【0126】
図11に例示するように、処理部#0の実施判定部24は、カウント用の変数であるセンサIDを#0に設定する(ステップS11)。
【0127】
実施判定部24は、センサ情報21aを参照し、センサIDの実施プロセッサが#0(自身の処理部#0)であるか否かを判定する(ステップS12)。センサIDの実施プロセッサが#0ではない(#1である)場合(ステップS12でNO)、実施判定部24は、センサIDをインクリメントし(ステップS13)、処理がステップS12に移行する。
【0128】
センサIDの実施プロセッサが#0である場合(ステップS12でYES)、収集部25は、センサ情報21aのセンサIDのコマンドを、バス番号及びアドレスが示すセンサ3に送信する(ステップS14)。
【0129】
収集部25は、センサ3から取得した応答をセンサ情報21aの取得値に格納する(ステップS15)。
【0130】
異常判定部26は、センサIDの取得値が警告閾値を超過したか否かを判定する(ステップS16)。センサIDの取得値が警告閾値を超過していない場合(ステップS16でNO)、処理がステップS18に移行する。
【0131】
センサIDの取得値が警告閾値を超過している場合(ステップS16でYES)、情報更新部27は、センサ情報21aのセンサIDの実施プロセッサを#1に設定し(ステップS17)、処理がステップS18に移行する。なお、ステップS17において、情報更新部27は、センサ情報21aのセンサIDのプロセッサ変更時刻に時刻情報を設定してよい。
【0132】
ステップS18において、実施判定部24は、m個の全てのセンサIDについて処理を実施、例えばステップS12の処理を実施したか否かを判定する。未実施のセンサIDが存在する場合(ステップS18でNO)、処理がステップS13に移行する。m個の全てのセンサIDについて処理を実施した場合(ステップS18でYES)、処理が終了する。
【0133】
図12に例示するように、処理部#1の実施判定部24は、カウント用の変数であるセンサIDを#0に設定する(ステップS21)。
【0134】
実施判定部24は、センサ情報21aを参照し、センサIDの実施プロセッサが#1(自身の処理部#1)であるか否かを判定する(ステップS22)。センサIDの実施プロセッサが#1ではない(#0である)場合(ステップS22でNO)、実施判定部24は、センサIDをインクリメントし(ステップS23)、処理がステップS22に移行する。
【0135】
センサIDの実施プロセッサが#1である場合(ステップS22でYES)、収集部25は、センサ情報21aのセンサIDのコマンドを、バス番号及びアドレスが示すセンサ3に送信する(ステップS24)。
【0136】
収集部25は、センサ3から取得した応答をセンサ情報21aの取得値に格納する(ステップS25)。
【0137】
異常判定部26は、センサIDの取得値が異常閾値を超過したか否かを判定する(ステップS26)。センサIDの取得値が異常閾値を超過している場合(ステップS26でYES)、異常判定部26は、センサIDの監視対象であるデバイス4のフェールセーフ処理を実施し(ステップS27)、処理がステップS30に移行する。
【0138】
センサIDの取得値が異常閾値を超過していない場合(ステップS26でNO)、異常判定部26は、センサIDの取得値が警告閾値以下か否かを判定する(ステップS28)。センサIDの取得値が警告閾値を超過している場合(ステップS28でNO)、処理がステップS30に移行する。
【0139】
センサIDの取得値が警告閾値以下である場合(ステップS28でYES)、情報更新部27は、センサ情報21aのセンサIDの実施プロセッサを#0に設定し(ステップS29)、処理がステップS30に移行する。なお、ステップS29において、情報更新部27は、センサ情報21aのセンサIDのプロセッサ変更時刻を未設定に更新してよい。
【0140】
ステップS30において、実施判定部24は、m個の全てのセンサIDについて処理を実施、例えばステップS22の処理を実施したか否かを判定する。未実施のセンサIDが存在する場合(ステップS30でNO)、処理がステップS23に移行する。m個の全てのセンサIDについて処理を実施した場合(ステップS30でYES)、処理が終了する。
【0141】
〔C-3〕ポーリング上限数制御の動作例
図13は、一実施形態に係る動作制御部22のポーリング上限数制御の動作例を説明するためのフローチャートである。
図13に示す処理は、例えば、センサ情報21aの実施プロセッサが処理部#0により更新されたことを動作制御部22が検出した場合に、当該実施プロセッサの更新後のセンサ情報21aに基づき実行されてよい。
【0142】
図13に例示するように、動作制御部22は、センサ情報21aにおいて実施プロセッサが#1であるセンサ3の合計数が、プロセッサ情報21bのプロセッサ#1のポーリング上限数を超過したか否かを判定する(ステップS31)。超過していない場合(ステップS31でNO)、処理が終了する。
【0143】
実施プロセッサが#1であるセンサ3の合計数がポーリング上限数を超過した場合(ステップS31でYES)、処理がステップS32に移行する。ステップS32において、動作制御部22は、センサ情報21aにおいて実施プロセッサが#1であるセンサ3の優先度が全て1(最高優先度)であるか否かを判定する。
【0144】
実施プロセッサが#1であるセンサ3の優先度に1以外が存在する場合(ステップS32でNO)、動作制御部22は、センサ情報21aにおいて実施プロセッサが#1であるセンサ3のうち、優先度が最下位のセンサ3を1つ選択する(ステップS33)。なお、ステップS33において、優先度が最下位のセンサ3が複数存在する場合、動作制御部22は、当該複数のセンサ3のうちの、プロセッサ変更時刻が古いセンサ3を選択してよい。
【0145】
そして、動作制御部22は、センサ情報21aにおいて、選択したセンサ3の実施プロセッサを#0に設定し(ステップS34)、処理が終了する。なお、ステップS34において、動作制御部22は、センサ情報21aにおいて、選択したセンサ3のプロセッサ変更時刻を未設定に更新してよい。
【0146】
ステップS32において、センサ情報21aにおいて実施プロセッサが#1であるセンサ3の優先度が全て1である場合(ステップS32でYES)、処理がステップS35に移行する。ステップS35では、動作制御部22は、サーバ5又は管理装置等に警告を通知し、サーバ5のシステムを停止して、処理が終了する。
【0147】
なお、
図13に示す処理の動作主体は、動作制御部22に限定されるものではなく、処理部#1であってもよい。或いは、処理部#0が、センサ情報21aにおいて取得値が警告閾値を超えたセンサ3の実施プロセッサを#1に設定する前に、実施プロセッサを#1に設定したと仮定した状態のセンサ情報21aに基づき、
図13に示す処理を実行してもよい。
【0148】
〔D〕その他
上述した実施形態に係る技術は、以下のように変形、変更して実施することができる。
【0149】
例えば、
図2に示す監視装置2が備える機能ブロック22~29は、任意の組み合わせで併合してもよく、それぞれ分割してもよい。また、
図2に示すメモリ部21が格納する情報21a,21bは、任意の組み合わせで併合してもよく、それぞれ分割してもよい。
【0150】
〔E〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【0151】
(付記1)
複数のセンサの各々と通信可能に接続された第1プロセッサと、
前記複数のセンサの各々と通信可能に接続された第2プロセッサと、を備え、
前記第1プロセッサは、
前記複数のセンサの各々からセンサ値を取得する第1ポーリング処理を第1監視周期で実行し、
前記第1プロセッサにより取得されたセンサ値が第1閾値を超えた第1センサを検出した場合、前記第1センサを前記第1ポーリング処理の対象から除外し、
前記第2プロセッサは、
1以上の前記第1センサの各々からセンサ値を取得する第2ポーリング処理を、前記第1監視周期よりも短い第2監視周期で実行し、
前記第2プロセッサにより取得されたセンサ値が、前記第1閾値とは異なる第2閾値であって異常を検出するための前記第2閾値を超えた第2センサを検出した場合、前記第2センサの計測対象の機器のフェールセーフ処理を実行する、
監視装置。
【0152】
(付記2)
前記第2プロセッサは、
前記第2プロセッサにより取得されたセンサ値が前記第1閾値以下の第3センサを検出した場合、前記第3センサを前記第2ポーリング処理の対象から除外し、
前記第1プロセッサは、
前記第3センサを含めた1以上の前記センサの各々からセンサ値を取得する前記第1ポーリング処理を実行する、
付記1に記載の監視装置。
【0153】
(付記3)
前記第1プロセッサ及び前記第2プロセッサの各々からアクセス可能な記憶領域を備え、
前記記憶領域は、前記複数のセンサの各々について、前記第1閾値,前記第2閾値,最新のセンサ値,並びに前記第1プロセッサ及び前記第2プロセッサのいずれか一方を示す第1情報を対応付けた管理情報を記憶し、
前記第1プロセッサは、前記管理情報に基づき前記第1ポーリング処理を実行し、
前記第2プロセッサは、前記管理情報に基づき前記第2ポーリング処理を実行する、
付記1又は付記2に記載の監視装置。
【0154】
(付記4)
前記第1プロセッサは、
前記第1ポーリング処理において、前記管理情報の前記第1情報に前記第1プロセッサを示す情報が設定された1以上の前記センサの各々から取得したセンサ値を前記管理情報に格納し、
前記第1センサを検出した場合、前記管理情報の前記第1センサの前記第1情報に前記第2プロセッサを示す情報を設定し、
前記第2プロセッサは、
前記第2ポーリング処理において、前記管理情報の前記第1情報に前記第2プロセッサを示す情報が設定された前記1以上の第1センサの各々から取得したセンサ値を前記管理情報に格納する、
付記3に記載の監視装置。
【0155】
(付記5)
前記1以上の第1センサの数が所定の上限数を超える場合に、前記1以上の第1センサのうちの所定の条件を満たす第4センサを前記第2ポーリング処理の対象から除外し、
除外した前記第4センサを前記第1ポーリング処理の対象に含める、
制御部を備える、
付記1~付記4のいずれか1項に記載の監視装置。
【0156】
(付記6)
複数のセンサの各々と通信可能に接続された第1プロセッサと、前記複数のセンサの各々と通信可能に接続された第2プロセッサと、を備えるコンピュータの前記第1プロセッサに、
前記複数のセンサの各々からセンサ値を取得する第1ポーリング処理を第1監視周期で実行し、
前記第1プロセッサにより取得されたセンサ値が第1閾値を超えた第1センサを検出した場合、前記第1センサを前記第1ポーリング処理の対象から除外し、
前記第2プロセッサに、
1以上の前記第1センサの各々からセンサ値を取得する第2ポーリング処理を、前記第1監視周期よりも短い第2監視周期で実行し、
前記第2プロセッサにより取得されたセンサ値が、前記第1閾値とは異なる第2閾値であって異常を検出するための前記第2閾値を超えた第2センサを検出した場合、前記第2センサの計測対象の機器のフェールセーフ処理を実行する、
処理を実行させる、監視プログラム。
【0157】
(付記7)
前記第2プロセッサに、
前記第2プロセッサにより取得されたセンサ値が前記第1閾値以下の第3センサを検出した場合、前記第3センサを前記第2ポーリング処理の対象から除外し、
前記第1プロセッサに、
前記第3センサを含めた1以上の前記センサの各々からセンサ値を取得する前記第1ポーリング処理を実行する、
処理を実行させる、付記6に記載の監視プログラム。
【0158】
(付記8)
前記第1プロセッサに、
前記第1プロセッサ及び前記第2プロセッサの各々からアクセス可能な記憶領域が記憶する管理情報であって、前記複数のセンサの各々について、前記第1閾値,前記第2閾値,最新のセンサ値,並びに前記第1プロセッサ及び前記第2プロセッサのいずれか一方を示す第1情報を対応付けた前記管理情報に基づき、前記第1ポーリング処理を実行し、
前記第2プロセッサに、
前記管理情報に基づき前記第2ポーリング処理を実行する、
処理を実行させる、
付記6又は付記7に記載の監視プログラム。
【0159】
(付記9)
前記第1プロセッサに、
前記第1ポーリング処理において、前記管理情報の前記第1情報に前記第1プロセッサを示す情報が設定された1以上の前記センサの各々から取得したセンサ値を前記管理情報に格納し、
前記第1センサを検出した場合、前記管理情報の前記第1センサの前記第1情報に前記第2プロセッサを示す情報を設定し、
前記第2プロセッサに、
前記第2ポーリング処理において、前記管理情報の前記第1情報に前記第2プロセッサを示す情報が設定された前記1以上の第1センサの各々から取得したセンサ値を前記管理情報に格納する、
処理を実行させる、付記8に記載の監視プログラム。
【0160】
(付記10)
前記コンピュータに、
前記1以上の第1センサの数が所定の上限数を超える場合に、前記1以上の第1センサのうちの所定の条件を満たす第4センサを前記第2ポーリング処理の対象から除外し、
除外した前記第4センサを前記第1ポーリング処理の対象に含める、
処理を実行させる、付記6~付記9のいずれか1項に記載の監視プログラム。
【0161】
(付記11)
複数のセンサの各々と通信可能に接続された第1プロセッサと、前記複数のセンサの各々と通信可能に接続された第2プロセッサと、を備えるコンピュータの前記第1プロセッサが、
前記複数のセンサの各々からセンサ値を取得する第1ポーリング処理を第1監視周期で実行し、
前記第1プロセッサにより取得されたセンサ値が第1閾値を超えた第1センサを検出した場合、前記第1センサを前記第1ポーリング処理の対象から除外し、
前記第2プロセッサが、
1以上の前記第1センサの各々からセンサ値を取得する第2ポーリング処理を、前記第1監視周期よりも短い第2監視周期で実行し、
前記第2プロセッサにより取得されたセンサ値が、前記第1閾値とは異なる第2閾値であって異常を検出するための前記第2閾値を超えた第2センサを検出した場合、前記第2センサの計測対象の機器のフェールセーフ処理を実行する、
処理を実行する、監視方法。
【0162】
(付記12)
前記第2プロセッサが、
前記第2プロセッサにより取得されたセンサ値が前記第1閾値以下の第3センサを検出した場合、前記第3センサを前記第2ポーリング処理の対象から除外し、
前記第1プロセッサが、
前記第3センサを含めた1以上の前記センサの各々からセンサ値を取得する前記第1ポーリング処理を実行する、
処理を実行する、付記11に記載の監視方法。
【0163】
(付記13)
前記第1プロセッサが、
前記第1プロセッサ及び前記第2プロセッサの各々からアクセス可能な記憶領域が記憶する管理情報であって、前記複数のセンサの各々について、前記第1閾値,前記第2閾値,最新のセンサ値,並びに前記第1プロセッサ及び前記第2プロセッサのいずれか一方を示す第1情報を対応付けた前記管理情報に基づき、前記第1ポーリング処理を実行し、
前記第2プロセッサが、
前記管理情報に基づき前記第2ポーリング処理を実行する、
処理を実行する、
付記11又は付記12に記載の監視方法。
【0164】
(付記14)
前記第1プロセッサが、
前記第1ポーリング処理において、前記管理情報の前記第1情報に前記第1プロセッサを示す情報が設定された1以上の前記センサの各々から取得したセンサ値を前記管理情報に格納し、
前記第1センサを検出した場合、前記管理情報の前記第1センサの前記第1情報に前記第2プロセッサを示す情報を設定し、
前記第2プロセッサが、
前記第2ポーリング処理において、前記管理情報の前記第1情報に前記第2プロセッサを示す情報が設定された前記1以上の第1センサの各々から取得したセンサ値を前記管理情報に格納する、
処理を実行する、付記13に記載の監視方法。
【0165】
(付記15)
前記コンピュータが、
前記1以上の第1センサの数が所定の上限数を超える場合に、前記1以上の第1センサのうちの所定の条件を満たす第4センサを前記第2ポーリング処理の対象から除外し、
除外した前記第4センサを前記第1ポーリング処理の対象に含める、
処理を実行する、付記11~付記14のいずれか1項に記載の監視方法。
【符号の説明】
【0166】
1 システム
1a,1b 通信路
2 監視装置
20 制御部
21 メモリ部
21a センサ情報
21b プロセッサ情報
22 動作制御部
23 処理部
24 実施判定部
25 収集部
26 異常判定部
27 情報更新部
28 通信部
29 出力部
3 センサ
4 デバイス
5 サーバ