JP7329162B1 - 情報処理装置および情報処理方法 - Google Patents

情報処理装置および情報処理方法 Download PDF

Info

Publication number
JP7329162B1
JP7329162B1 JP2023078382A JP2023078382A JP7329162B1 JP 7329162 B1 JP7329162 B1 JP 7329162B1 JP 2023078382 A JP2023078382 A JP 2023078382A JP 2023078382 A JP2023078382 A JP 2023078382A JP 7329162 B1 JP7329162 B1 JP 7329162B1
Authority
JP
Japan
Prior art keywords
threads
execution state
information processing
value
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2023078382A
Other languages
English (en)
Inventor
純 柿島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Internet Initiative Japan Inc
Original Assignee
Internet Initiative Japan Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Internet Initiative Japan Inc filed Critical Internet Initiative Japan Inc
Priority to JP2023078382A priority Critical patent/JP7329162B1/ja
Application granted granted Critical
Publication of JP7329162B1 publication Critical patent/JP7329162B1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】プログラムの動作異常が発生した場合に、動作異常の原因を容易に特定することを目的とする。
【解決手段】
プログラムの実行単位であるプロセス内の複数のスレッドの実行状態の遷移を記録するための変数を設定するように構成された設定部10と、プログラムの実行に応じて記録された、複数のスレッドの実行状態の遷移を示す変数の値を取得するように構成された取得部13と、取得部13によって取得された、複数のスレッドの実行状態の遷移を示す変数の値を未知の入力として学習済みの分類器に与え、学習済みの分類器の演算を行って、プログラムの動作異常の原因に関する分類クラスを出力するように構成された分類部14と、分類部14が出力した分類クラスに基づいて、プログラムの動作異常の原因を提示するように構成された提示部16とを備える。
【選択図】図1

Description

本発明は、情報処理装置および情報処理方法に関し、特に、プログラムの動作異常を特定する技術に関する。
近年、高機能なシステムやサービスを提供するために、ソフトウェアに対する要求は高度化および複雑化している。高機能なシステムに実装されるソフトウェアは、膨大なソースコードを有するプログラムで構成され、マルチスレッド処理などの並列化によって、プログラムの実行は一層複雑化している。
運用中のシステムでプロセス障害や動作異常等が発生すると、プログラムにおいて障害や動作異常の原因となっている箇所を特定するのに時間を要する。障害を復旧するまでに長時間を要する場合には、サービス断が長時間にわたり、ユーザに与える影響が多大となる。
従来から、プロセス実行中にシステム障害やプログラムの異常処理により、処理を継続できないようなエラーが発生し、プログラムが強制終了された場合、システム内のコア(core)ファイルにメモリ状態をダンプ(dump)する構成が知られている。例えば、特許文献1は、ハードディスクに出力されたcoreファイルをデバッガに読み込ませてエラーが発生した場所や、そのときの変数の値等を事後的に解析する技術を開示している。
しかし、特許文献1に開示された技術では、プログラムの動作異常が発生した原因とエラーが発生した場所をログ情報からでは特定できないため、ソースコードをさらに解析することで原因とエラーが発生した場所を特定しなければならなかった。
特開2005-301570号公報
このように、従来の技術では、プログラムの動作異常が発生した場合に、動作異常の原因を容易に特定することができなかった。
本発明は、上述した課題を解決するためになされたものであり、プログラムの動作異常が発生した場合に、動作異常の原因を容易に特定することを目的とする。
上述した課題を解決するために、本発明に係る情報処理装置は、プログラムの実行単位であるプロセス内の複数のスレッドの実行状態の遷移を記録するための変数を設定するように構成された設定部と、前記プログラムの実行に応じて記録された、前記複数のスレッドの前記実行状態の遷移を示す変数の値を取得するように構成された取得部と、前記取得部によって取得された、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値を未知の入力として学習済みの分類器に与え、前記学習済みの分類器の演算を行って、前記プログラムの動作異常の原因に関する分類クラスを出力するように構成された分類部と、前記分類部が出力した前記分類クラスに基づいて、前記プログラムの前記動作異常の原因を提示するように構成された提示部とを備える。
また、本発明に係る情報処理装置において、さらに、前記取得部によって取得された、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値に基づいて、前記プログラムにおける前記動作異常の発生箇所を特定するように構成された特定部を備え、前記提示部は、特定された前記動作異常の前記発生箇所を示す情報を提示するように構成されていてもよい。
また、本発明に係る情報処理装置において、さらに、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値に対して予め設定された前記動作異常の原因を正解ラベルとして付した教師データを用いて、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値と、前記動作異常の原因との関係を学習し、前記学習済みの分類器を構築するように構成された学習部を備えていてもよい。
また、本発明に係る情報処理装置において、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値は、前記複数のスレッドのうちの第1スレッドが、第1実行状態において第1命令を実行した後に、または並行して、第2スレッドが第2命令を実行する第2実行状態へ遷移したことを示す第1の値、および、前記第1スレッドが前記第1命令を実行することができないため、前記第1スレッドの前記第1実行状態が正常に終了せず、前記第2実行状態へ遷移しなかったことを示す第2の値のいずれかを含んでいてもよい。
また、本発明に係る情報処理装置において、前記特定部は、前記取得部によって取得された、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値が前記第2の値を含む場合に、前記第2の値によって示される、正常に終了しなかった前記第1実行状態において前記第1スレッドが実行することができなかった前記第1命令が、前記プログラムにおける前記動作異常の前記発生箇所に対応すると特定してもよい。
上述した課題を解決するために、本発明に係る情報処理方法は、プログラムの実行単位であるプロセス内の複数のスレッドの実行状態の遷移を記録するための変数を設定する第1ステップと、前記プログラムの実行に応じて記録された、前記複数のスレッドの前記実行状態の遷移を示す変数の値を取得する第2ステップと、前記第2ステップで取得された、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値を未知の入力として学習済みの分類器に与え、前記学習済みの分類器の演算を行って、前記プログラムの動作異常の原因に関する分類クラスを出力する第3ステップと、前記第3ステップで出力された前記分類クラスに基づいて、前記プログラムの前記動作異常の原因を提示する第4ステップとを備える。
また、本発明に係る情報処理方法において、さらに、前記第2ステップで取得された、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値に基づいて、前記プログラムにおける前記動作異常の発生箇所を特定する第5ステップを備え、前記第4ステップは、特定された前記動作異常の前記発生箇所を示す情報を提示してもよい。
また、本発明に係る情報処理方法において、さらに、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値に対して予め設定された前記動作異常の原因を正解ラベルとして付した教師データを用いて、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値と、前記動作異常の原因との関係を学習し、前記学習済みの分類器を構築する第6ステップを備えていてもよい。
また、本発明に係る情報処理方法において、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値は、前記複数のスレッドのうちの第1スレッドが、第1実行状態において第1命令を実行した後に、または並行して、第2スレッドが第2命令を実行する第2実行状態へ遷移したことを示す第1の値、および、前記第1スレッドが前記第1命令を実行することができないため、前記第1スレッドの前記第1実行状態が正常に終了せず、前記第2実行状態へ遷移しなかったことを示す第2の値のいずれかを含んでいてもよい。
また、本発明に係る情報処理方法において、前記第5ステップは、前記第2ステップで取得された、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値が前記第2の値を含む場合に、前記第2の値によって示される、正常に終了しなかった前記第1実行状態において前記第1スレッドが実行することができなかった前記第1命令が、前記プログラムにおける前記動作異常の前記発生箇所に対応すると特定してもよい。
本発明によれば、プログラムの実行に応じて記録された、複数のスレッドの実行状態の遷移を示す変数の値を未知の入力として学習済みの分類器に与え、学習済みの分類器の演算を行って、プログラムの動作異常の原因に関する分類クラスを出力する。そのため、プログラムの動作異常が発生した場合に、動作異常の原因を容易に特定することができる。
図1は、本発明の実施の形態に係る情報処理装置を含む情報処理システムの構成を示すブロック図である。 図2は、本実施の形態に係る情報処理装置の概要を説明するための図である。 図3は、本実施の形態に係る情報処理装置のハードウェア構成を示すブロック図である。 図4は、本実施の形態に係る学習部による学習処理を説明するための図である。 図5は、本実施の形態に係る情報処理装置の動作を示すフローチャートである。 図6は、本実施の形態に係る情報処理装置の動作を示すフローチャートである。
以下、本発明の好適な実施の形態について、図1から図6を参照して詳細に説明する。以下の説明では、一例として、5Gなどの所定の通信規格に準拠するコアネットワークが備える、通信制御を行うコアネットワーク装置2において実行されるプログラムを、情報処理装置1の処理対象とする。しかし、情報処理装置1が動作異常の原因を特定するプログラムを実装する装置は、コアネットワーク装置2に限定されない。
[情報処理システムの構成]
まず、本発明の実施の形態に係る情報処理装置1を備える情報処理システムの概要について説明する。図1に示すように、情報処理システムは、情報処理装置1と、コアネットワーク装置2とを備え、情報処理装置1とコアネットワーク装置2とは、WAN(Wide Area Network)、LAN(Local Area Network)、インターネットなどのネットワークNWを介して接続されている。
本実施の形態に係る情報処理システムは、コアネットワーク装置2のコンピュータ上で実行されるプログラムの動作異常の原因を推論し、プログラムにおける動作異常の発生箇所を特定する。コアネットワーク装置2は、5Gコアネットワーク内に設けられて通信制御を行う。
コアネットワーク装置2は、プロセッサ、主記憶装置、通信インターフェース、補助記憶装置、および入出力I/Oを備えるコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。コアネットワーク装置2は、例えば、Linux(登録商標)、Windows(登録商標)等の汎用マルチタスクOSを適用した装置である。
コアネットワーク装置2のコンピュータ上で実行されるプログラムは、マルチスレッドのプロセスを含む。プログラムの実行単位であるプロセスは、OSによって管理され、プログラム内で利用される変数および状態を保持し、一つ以上のスレッドから構成される。
スレッドは、CPUから見たプログラムの実行単位であり、各CPUコアに1つのスレッドが割り当てられる。OSは、各プロセスに独立したメモリ領域を割り当てるため、通常各プロセスでメモリ領域は共有しない。一方、スレッドは、プロセス内の同じメモリ領域を共有する。
本実施の形態では、動作異常を推論する対象のプログラムは、1つのプロセスをマルチスレッドとシングルスレッドとの組み合わせにより実行する場合を一例として説明するが、プロセスはマルチプロセスであってもよい。
また、本実施の形態において、スレッドの状態とは、スレッドに割り当てられたCPUコアの状態、各種変数値を保持しているメモリの状態を示す。スレッドの実行状態の遷移とは、プロセス内で命令を逐次または並列もしくは並行実行していく際に、スレッドがソースコードに従って所定の1以上の命令を実行する状態遷移をいう。
例えば、スレッドはCPUコアが命令を実行するために必要なメモリ空間を確保して命令を実行する。このスレッドが命令を実行すると、CPUは次に実行する命令のアドレスを計算し、同じスレッドまたは、別のスレッドに切り替わって次の命令が実行される。このようなスレッドの状態の遷移を、実行状態の遷移という。
スレッドが正常動作している場合においては、スレッドが所定の命令を実行した後、例えば、逐次同一もしくは別のスレッド、または同時に実行する別のスレッドが次の命令を実行する。一方において、スレッドに動作異常が発生した場合には、スレッドが正常に終了せず、次の命令を実行できない状態となる。このように本実施の形態では、スレッドの実行状態の遷移は、正常動作における状態遷移、または、何らかの動作異常によりスレッドが所定の命令をすべて実行できず、次の実行状態へ遷移できなかった状態遷移を示す。
また、本実施の形態では、スレッドの各実行状態で実行される命令から、対応するソースコードの位置を特定することができる。ここで、ソースコードとは、プログラミング言語で記述されたテキストまたはテキストファイル等の文字列からなるコンピュータに対する命令をいう。ソースコードは、プログラムの構造や動作を定義し、スレッドで実行する関数やクラスなどの命令が記述されている。スレッドの生成は、ソースコードにおいて予め明示することができる。なお、スレッドは、実際にはソースコードをマシンコードに変換した命令を実行する。
図2は、プログラムにおけるマルチスレッドおよびシングルスレッドの各スレッドの状態S,S,・・・,St-1,Sを模式的に示した図である。図2において、状態S,S,Sは、シングルスレッドの動作における各実行状態を示している。各状態S~Sにおいて、スレッドは、所定の1以上の命令を実行する。また、破線で囲まれた状態S,・・・,St-1およびS’,・・・,St-1’は、マルチスレッドの動作における各状態を示している。マルチスレッドにおいて四角で囲まれた状態S,・・・,St-1およびS’,・・・,St-1’はそれぞれトランザクションを構成する。
例えば、プログラムにおいてプロセスが正常動作している場合、プロセス内の各スレッドの実行により、状態S,S,・・・,St-1,Sへと順番に、あるいは並行して実行状態が遷移していく。一方、何らかの動作異常が発生すると、あるスレッドの実行状態から次の実行状態へ遷移しない。なお、本実施の形態では、プログラムあるいはプロセスの正常動作、および動作異常といった場合に、特に、プロセス内のスレッドの動作を指すものとする。
スレッドの動作異常の例として、図2に示すデッドロックE2が挙げられる。マルチスレッドにおけるデッドロックとは、2つ以上のスレッドが互いにブロックし合い、それぞれのスレッドが、他方が終了するのを待機する動作異常である。デッドロックは、マルチスレッドにおいてメモリの排他制御の順序性を適切に行わないことにより発生する。
スレッドの動作異常の別の例としては、図2に示すヒープ・エラーE1が挙げられる。ヒープ・エラーは、プログラムが利用するメモリ領域であるヒープ領域の開放が不適切に行われることにより発生する動作異常である。つまり、ヒープ・エラーとは、ハッシュ関数を使ってメモリハントをする場合に、異なるプロセスで同一メモリ番号を使用することで発生する。その他にも、スタックオーバーフロー、無限ループ、スターベーション等が挙げられ、本実施の形態に係る情報処理装置1は、事前に設定されたスレッドにおける既知の動作異常の原因を推論する。
コアネットワーク装置2において、デッドロックE2やヒープ・エラーE1などのスレッドの動作異常が発生すると、スレッドの実行状態は遷移できず、プロセスは強制終了する。プロセスの強制終了を示すシグナルは、ネットワークNWを介して、情報処理装置1へ送出される。情報処理装置1は、プロセスの強制終了シグナルを契機として、対象プロセス内の複数のスレッドの実行状態の遷移を示す変数の値に基づいて、動作異常の原因を推論し、かつ、プログラムにおける動作異常の発生箇所を特定する。
[情報処理装置の機能ブロック]
図1に示すように、情報処理装置1は、設定部10、学習部11、記憶部12、取得部13、分類部14、特定部15、および提示部16を備える。
設定部10は、プログラムの実行単位であるプロセス内の複数のスレッドの実行状態の遷移を記録するための変数を設定する。設定部10が設定する変数の値には、例えば、複数のスレッドのうちの第1スレッドが、第1実行状態において第1命令を実行した後に、または並行して、第2スレッドが次の第2命令を実行する第2実行状態へ遷移したことを示す第1の値を含む。さらに、変数の値には、第1スレッドが第1命令を実行することができないため、第1スレッドの第1実行状態は正常に終了せず、第2実行状態へ遷移しなかったことを示す第2の値を含む。
具体的には、設定部10は、対象プログラムのソースコードにおいて、所定の1以上の命令ごとに、スレッドによる実行状態の遷移を記録するフラグを設定することができる。各実行状態を定義する所定の1以上の命令は、任意に設定することができ、例えば、スレッド間の実行順序、または、ソースコードの記述順序等に応じて設定することができる。
例えば、図2に示すように、プロセスが正常動作している場合において、スレッドが実行されて状態Sから規定の状態Sに遷移する。これは、例えば、スレッド間の実行順序に応じて、第1スレッドが第1命令を実行する状態Sから、第2スレッドが第2命令を実行する状態Sに遷移することを示す。このような正常動作において、設定部10は、状態Sのフラグ値が「1」(第1の値)となるようにフラグを定義することができる。
一方、何らかの動作異常が発生した場合においては、第1スレッドが第1命令を実行することができないため、状態Sが正常に終了せず、状態Sから、第2スレッドが第2命令を実行する次の状態Sに遷移しない。この場合には、設定部10は、状態Sのフラグ値が「0」(第2の値)となるようにフラグを定義する。
例えば、図2に示すように、プロセス内の各スレッドが正常動作している場合、スレッドの状態S~Sまでのフラグの値は「1」となる。
例えば、図2に示すように、マルチスレッドの区間において、デッドロックE2が生じている場合、状態S,S’,・・・,St-1,St-1’のフラグ値はそれぞれ「0」となる。そして、後続のスレッドの状態Sのフラグ値も「0」となる。一方、デッドロックE2が生ずる以前のシングルスレッドの区間における状態S,Sのフラグ値は正常動作を示す「1」である。
また、図2に示すように、状態Sから状態Sに遷移するシングルスレッドの区間においてヒープ・エラーE1が生じている場合を例示する。この場合、スレッドは、状態Sから状態Sへ遷移できなかったため、状態Sのフラグ値は「0」、およびその後の状態Sのフラグ値も「0」となる。さらに、後続のマルチスレッド区間を含むすべてのスレッドの状態S,S’,・・・,St-1,St-1’,Sのフラグ値も「0」となる。
学習部11は、プログラムにおけるプロセス内の複数のスレッドの実行状態の遷移を示すフラグ値に対して予め設定された動作異常の原因を正解ラベルとして付した教師データを用いて、複数のスレッドの実行状態の遷移を示すフラグ値と、動作異常の原因との関係を学習し、学習済みの分類器を構築する。
図4は、学習部11が学習する分類器の一例として用いるニューラルネットワーク構造を示す模式図である。図4に示すように、分類器として、例えば、ニューラルネットワーク構造の機械学習モデルを採用し、入力層、隠れ層、および出力層のノードの数、隠れ層のレイヤ数等を設定する。学習部11は、動作異常の原因を推論するプログラムにおけるプロセス内のスレッドの実行状態の遷移のステップ数1~tに対応した、入力層の入力ノード数を設ける。出力層のノード数は、分類クラスに応じたノード数とすることができる。
図4に示すように、入力層の各ノードは、上から順にスレッドの実行状態S~Sにそれぞれ対応する。隠れ層hのレイヤ数、およびニューラルネットワークのノード間の結合の疎密を含む分類器のサイズや要素は、十分な推論精度が得られる設計であれば限定されず、例えば、ノード間の結合として全結合あるいはスパース化した構造であってもよい。
学習部11は、教師データとして、後述する取得部13によってコアネットワーク装置2から取得されたスレッドの実行状態の遷移を示すフラグ値の実データを用いることができる。また、学習部11によって設定される出力層の分類クラスは、分類する動作異常の原因の数に応じて、2クラスまたは多クラス分類など任意に設定することができる。
図4に示すニューラルネットワークは、入力層xに与えられた複数のスレッドの実行状態の遷移を示すフラグ値に対して、入力の重み付け総和に活性化関数を適用し、閾値処理により決定された出力を出力層yに渡す。出力層の各出力ノードは、動作異常の原因に関する分類クラスを示す。また、出力層yは、入力データが分類クラスに属する確率を出力することができる。
学習部11は、複数のスレッドの実行状態の遷移を示すフラグ値を入力として与えたときの出力が、教師データのラベルに示される動作異常の原因を示す値となるように、ノード間の結線の重みwを調整する。学習部11は、例えば、誤差逆伝搬などを利用して、与えた入力値に対して、得られた出力値を比較し、それぞれの重みwの誤差を調べて逆方向に伝搬していき、最終的に重みwなどのパラメータを決定することができる。このような学習処理を経て、学習部11は、学習済みの分類器を構築する。
記憶部12は、学習部11によって構築された、学習済みの分類器、つまり学習済みのパラメータを記憶する。本実施の形態では、記憶部12は、ニューラルネットワークの学習済み重みを記憶する。なお、記憶部12は、学習前の分類器についても記憶している。
取得部13は、コアネットワーク装置2から、対象のプログラムにおけるプロセス内の複数のスレッドの実行状態の遷移を示すフラグ値を取得する。スレッドの実行状態の遷移を示すフラグ値は、設定部10によって設定されたフラグの値である。なお、取得部13は、コアネットワーク装置2からプロセスの強制終了シグナルを受信したことを契機として、複数のスレッドの実行状態の遷移を示すフラグ値を取得することができる。
分類部14は、取得部13が取得した、複数のスレッドの実行状態の遷移を示すフラグ値を未知の入力として学習済みの分類器に与え、学習済みの分類器の演算を行って、プロセスの動作異常の原因に関する分類クラスを出力する。図4の例では、分類部14は、分類クラスとして、例えば、予め設定された「正常動作」、「ヒープ・エラー」、および「デッドロック」のいずれかの値を出力することができる。
特定部15は、取得部13によって取得された、複数のスレッドの実行状態の遷移を示すフラグ値に基づいて、プログラムにおける動作異常の発生箇所を特定する。取得部13によって取得された、複数のスレッドの実行状態の遷移を示すフラグ値は、学習済み分類器への各入力ノードへの入力値である。
例えば、特定部15は、取得部13によって取得された、複数のスレッドの実行状態の遷移を示すフラグ値が「0」を含む場合に、フラグ値「0」によって示される、正常に終了しなかった第1実行状態(例えば、状態S)において第1スレッドが実行することができなかった第1命令のソースコード上の位置が、プログラムにおける動作異常の発生箇所であると特定する。
具体的には、図2は、分類結果がヒープ・エラーE1であった場合に、スレッドの状態Sのフラグ値が「0」、すなわち状態Sから状態Sに遷移できなかったことを示している。この場合、スレッドの状態Sで示される実行状態のステップに対応するソースコードの位置において、ヒープ・エラーE1が発生したことを特定することができる。つまり、ソースコードにおいて、スレッドの状態Sのフラグが設けられている位置を、ヒープ・エラーE1の発生箇所と特定することができる。
提示部16は、分類部14が出力した分類クラスに基づいて、プログラムの動作異常の原因を提示する。また、提示部16は、特定部15によって特定された、ソースコードにおける動作異常の発生箇所を提示する。提示部16は、例えば、ネットワークNWを介して、外部のサーバ等に分類結果および特定結果を送信することができる。あるいは、提示部16は、コアネットワーク装置2に対して、分類結果および特定結果を送出してもよい。
[情報処理装置のハードウェア構成]
次に、上述した機能を有する情報処理装置1を実現するハードウェア構成の一例について、図3を用いて説明する。
図2に示すように、情報処理装置1は、例えば、バス101を介して接続されるプロセッサ102、主記憶装置103、通信インターフェース104、補助記憶装置105、入出力I/O106を備えるコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。
主記憶装置103には、プロセッサ102が各種制御や演算を行うためのプログラムが予め格納されている。プロセッサ102と主記憶装置103とによって、図1に示した設定部10、学習部11、分類部14、特定部15など情報処理装置1の各機能が実現される。
通信インターフェース104は、情報処理装置1と各種外部電子機器との間をネットワーク接続するためのインターフェース回路である。
補助記憶装置105は、読み書き可能な記憶媒体と、その記憶媒体に対してプログラムやデータなどの各種情報を読み書きするための駆動装置とで構成されている。補助記憶装置105には、記憶媒体としてハードディスクやフラッシュメモリなどの半導体メモリを使用することができる。
補助記憶装置105は、情報処理装置1が実行する情報処理プログラムを格納するプログラム格納領域を有する。また、補助記憶装置105は、分類器の学習を行うための学習プログラムを格納する領域を有する。補助記憶装置105によって、図1で説明した記憶部12が実現される。さらには、例えば、上述したデータやプログラムなどをバックアップするためのバックアップ領域などを有していてもよい。
入出力I/O106は、外部機器からの信号を入力したり、外部機器へ信号を出力したりする入出力装置である。
[情報処理装置の動作]
次に、上述した構成を有する情報処理装置1の動作を、図5および図6のフローチャートを参照して説明する。図5は、情報処理装置1による学習処理を示すフローチャートである。図6は、情報処理装置1による、学習済みの分類器を用いた分類処理および特定処理を示すフローチャートである。
まず、図5に示すように、設定部10は、コアネットワーク装置2において実行されるプログラムのプロセス内の複数のスレッドの実行状態の遷移を記録するためのフラグを設定する(ステップS1)。具体的には、設定部10は、事前に動作異常の原因を推論する対象のプログラムのソースコードにおいて、所定の1以上の命令ごとにスレッドの実行状態の遷移を記録するフラグを設定することができる。設定部10は、例えば、スレッド間の実行順序に応じて、各スレッドが実行する命令ごとに、スレッドの実行状態の遷移を定義することができる。
次に、学習部11は、プロセス内の複数のスレッドの実行状態の遷移を示すフラグ値に対して、予め設定された動作異常の原因を正解ラベルとして付したデータを教師データとして、複数のスレッドの実行状態の遷移を示すフラグ値と、動作異常の原因との関係を学習し、学習済みの分類器を構築する(ステップS2)。
例えば、学習部11は、複数のスレッドの実行状態の遷移を示すフラグ値に対して、「正常動作」、「ヒープ・エラー」、および「デッドロック」等、シングルスレッド、およびマルチスレッドのそれぞれで発生し得る動作異常の原因を正解ラベルとして付した教師データを用いることができる。
次に、学習部11によって構築された学習済みの分類器、すなわち、学習済みのパラメータを、記憶部12に記憶させる(ステップS3)。
次に、図6に示すフローチャートを参照して、分類処理および特定処理を説明する。まず、取得部13は、プロセス内の複数のスレッドの実行状態の遷移を示すフラグ値を取得する(ステップS10)。取得部13は、コアネットワーク装置2から強制終了シグナルを受信したことを契機として、複数のスレッドの実行状態の遷移を示すフラグ値を、ネットワークNWを介してコアネットワーク装置2から取得することができる。
次に、分類部14は、記憶部12から学習済みのパラメータをロードする(ステップS11)。続いて、分類部14は、ステップS10で取得部13が取得した、複数のスレッドの実行状態の遷移を示すフラグ値を未知の入力として学習済みの分類器に与え、学習済み分類器の演算を行って、プロセスの動作異常の原因に関する分類クラスを出力する(ステップS12)。例えば、分類部14は、分類クラスとして、「正常動作」、「ヒープ・エラー」、「デッドロック」等を示す値を出力する。
次に、提示部16は、ステップS12で出力された分類クラスを提示する(ステップS13)。例えば、提示部16は、ネットワークNWを介して外部のサーバ等に推論された動作異常の原因を送出することができる。
次に、特定部15は、ステップS10で取得され、学習済みの分類器に入力値として与えられた、複数のスレッドの実行状態の遷移を示すフラグ値に基づいて、プログラムにおいて動作異常の発生箇所を特定する(ステップS14)。例えば、特定部15は、状態S~Sのフラグ値のうち、次の実行状態へ遷移できなかったことを示すフラグ値「0」が含まれている場合に、フラグ値「0」を有する状態S~Sのうち、最も若いインデックス番号の状態に対応する命令の位置を、動作異常の発生箇所と特定することができる。
例えば、スレッドの状態Sのフラグ値は「1」であり、状態Sのフラグ値は「0」であり、かつ、状態S以降のフラグ値が「0」である場合において、分類結果として得られた分類クラスが「ヒープ・エラー」である場合を考える。この場合、ヒープ・エラーが、スレッドの状態Sに対応する命令の実行中に発生したため、状態S以降の動作に遷移できなかったことがわかる。したがって、特定部15は、ソースコードにおいてスレッドの状態Sに対応する命令が記述された箇所を、ヒープ・エラーの発生箇所として特定する。
次に、提示部16は、ステップS14で特定された動作異常の発生箇所を示す情報を提示する(ステップS15)。例えば、提示部16は、動作異常の発生箇所を示す情報を、ネットワークNWを介して外部のサーバ等に送出することができる。
以上説明したように、本実施の形態に係る情報処理装置1によれば、複数のスレッドの実行状態の遷移を示すフラグ値を未知の入力として学習済みの分類器に与え、学習済みの分類器の演算を行って、プログラムの動作異常の原因に関する分類クラスを出力する。したがって、プログラムの動作異常が発生した場合に、動作異常の原因を容易に特定することができる。
また、本実施の形態に係る情報処理装置1によれば、複数のスレッドの実行状態の遷移を示すフラグ値を参照することで、プログラムにおけるソースコード上の動作異常の発生箇所を容易かつ速やかに特定することができる。
なお、上述した実施の形態では、分類器としてニューラルネットワークを用いる場合について説明した。しかし、分類器は、上述したニューラルネットワークモデルの他、ロジスティック回帰などの識別器を用いることができる。ロジスティック回帰を用いた場合には、各分類クラスを予測できる確率値を分類クラス数だけ得ることができる。その他にも、分類器として、SVM、ナイーブベイズ、ランダムフォレスト、決定木等、さらにニューラルネットワークを多層化したディープラーニングを用いてもよい。
また、上述した実施の形態では、学習処理を行う学習部11および分類処理を行う分類部14の両方の機能部が情報処理装置1に搭載される場合について説明した。しかし、学習部11および分類部14は同一のハードウェア構成として設けられている場合の他、複数のサーバ等によって、学習処理と分類処理とをネットワークNW上の別のサーバ等により分散することもできる。
以上、本発明の情報処理装置および情報処理方法における実施の形態について説明したが、本発明は説明した実施の形態に限定されるものではなく、請求項に記載した発明の範囲において当業者が想定し得る各種の変形を行うことが可能である。
1…情報処理装置、2…コアネットワーク装置、10…設定部、11…学習部、12…記憶部、13…取得部、14…分類部、15…特定部、16…提示部、101…バス、102…プロセッサ、103…主記憶装置、104…通信インターフェース、105…補助記憶装置、106…入出力I/O、NW…ネットワーク。

Claims (10)

  1. プログラムの実行単位であるプロセス内の複数のスレッドの実行状態の遷移を記録するための変数を設定するように構成された設定部と、
    前記プログラムの実行に応じて記録された、前記複数のスレッドの前記実行状態の遷移を示す変数の値を取得するように構成された取得部と、
    前記取得部によって取得された、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値を未知の入力として学習済みの分類器に与え、前記学習済みの分類器の演算を行って、前記プログラムの動作異常の原因に関する分類クラスを出力するように構成された分類部と、
    前記分類部が出力した前記分類クラスに基づいて、前記プログラムの前記動作異常の原因を提示するように構成された提示部と
    を備える情報処理装置。
  2. 請求項1に記載の情報処理装置において、
    さらに、前記取得部によって取得された、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値に基づいて、前記プログラムにおける前記動作異常の発生箇所を特定するように構成された特定部を備え、
    前記提示部は、特定された前記動作異常の前記発生箇所を示す情報を提示するように構成されている
    ことを特徴とする情報処理装置。
  3. 請求項2に記載の情報処理装置において、
    さらに、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値に対して予め設定された前記動作異常の原因を正解ラベルとして付した教師データを用いて、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値と、前記動作異常の原因との関係を学習し、前記学習済みの分類器を構築するように構成された学習部を備える
    ことを特徴とする情報処理装置。
  4. 請求項3に記載の情報処理装置において、
    前記複数のスレッドの前記実行状態の遷移を示す前記変数の値は、前記複数のスレッドのうちの第1スレッドが、第1実行状態において第1命令を実行した後に、または並行して、第2スレッドが第2命令を実行する第2実行状態へ遷移したことを示す第1の値、および、前記第1スレッドが前記第1命令を実行することができないため、前記第1スレッドの前記第1実行状態が正常に終了せず、前記第2実行状態へ遷移しなかったことを示す第2の値のいずれかを含む
    ことを特徴とする情報処理装置。
  5. 請求項4に記載の情報処理装置において、
    前記特定部は、前記取得部によって取得された、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値が前記第2の値を含む場合に、前記第2の値によって示される、正常に終了しなかった前記第1実行状態において前記第1スレッドが実行することができなかった前記第1命令が、前記プログラムにおける前記動作異常の前記発生箇所に対応すると特定する
    ことを特徴とする情報処理装置。
  6. プログラムの実行単位であるプロセス内の複数のスレッドの実行状態の遷移を記録するための変数を設定する第1ステップと、
    前記プログラムの実行に応じて記録された、前記複数のスレッドの前記実行状態の遷移を示す変数の値を取得する第2ステップと、
    前記第2ステップで取得された、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値を未知の入力として学習済みの分類器に与え、前記学習済みの分類器の演算を行って、前記プログラムの動作異常の原因に関する分類クラスを出力する第3ステップと、
    前記第3ステップで出力された前記分類クラスに基づいて、前記プログラムの前記動作異常の原因を提示する第4ステップと
    を備える情報処理方法。
  7. 請求項6に記載の情報処理方法において、
    さらに、前記第2ステップで取得された、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値に基づいて、前記プログラムにおける前記動作異常の発生箇所を特定する第5ステップを備え、
    前記第4ステップは、特定された前記動作異常の前記発生箇所を示す情報を提示する
    ことを特徴とする情報処理方法。
  8. 請求項7に記載の情報処理方法において、
    さらに、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値に対して予め設定された前記動作異常の原因を正解ラベルとして付した教師データを用いて、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値と、前記動作異常の原因との関係を学習し、前記学習済みの分類器を構築する第6ステップを備える
    ことを特徴とする情報処理方法。
  9. 請求項8に記載の情報処理方法において、
    前記複数のスレッドの前記実行状態の遷移を示す前記変数の値は、前記複数のスレッドのうちの第1スレッドが、第1実行状態において第1命令を実行した後に、または並行して、第2スレッドが第2命令を実行する第2実行状態へ遷移したことを示す第1の値、および、前記第1スレッドが前記第1命令を実行することができないため、前記第1スレッドの前記第1実行状態が正常に終了せず、前記第2実行状態へ遷移しなかったことを示す第2の値のいずれかを含む
    ことを特徴とする情報処理方法。
  10. 請求項9に記載の情報処理方法において、
    前記第5ステップは、前記第2ステップで取得された、前記複数のスレッドの前記実行状態の遷移を示す前記変数の値が前記第2の値を含む場合に、前記第2の値によって示される、正常に終了しなかった前記第1実行状態において前記第1スレッドが実行することができなかった前記第1命令が、前記プログラムにおける前記動作異常の前記発生箇所に対応すると特定する
    ことを特徴とする情報処理方法。
JP2023078382A 2023-05-11 2023-05-11 情報処理装置および情報処理方法 Active JP7329162B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2023078382A JP7329162B1 (ja) 2023-05-11 2023-05-11 情報処理装置および情報処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2023078382A JP7329162B1 (ja) 2023-05-11 2023-05-11 情報処理装置および情報処理方法

Publications (1)

Publication Number Publication Date
JP7329162B1 true JP7329162B1 (ja) 2023-08-17

Family

ID=87563126

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023078382A Active JP7329162B1 (ja) 2023-05-11 2023-05-11 情報処理装置および情報処理方法

Country Status (1)

Country Link
JP (1) JP7329162B1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7496481B1 (ja) 2024-02-15 2024-06-06 株式会社インターネットイニシアティブ プロセス管理装置およびプロセス管理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010522905A (ja) * 2006-09-29 2010-07-08 フィッシャー−ローズマウント システムズ, インコーポレイテッド プロセスプラントにおける異常状態の多変量検出
JP2011232814A (ja) * 2010-04-23 2011-11-17 Nec Corp プログラム検証装置、方法及びプログラム
JP2012138044A (ja) * 2010-12-28 2012-07-19 Toshiba Corp プロセス状態監視装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010522905A (ja) * 2006-09-29 2010-07-08 フィッシャー−ローズマウント システムズ, インコーポレイテッド プロセスプラントにおける異常状態の多変量検出
JP2011232814A (ja) * 2010-04-23 2011-11-17 Nec Corp プログラム検証装置、方法及びプログラム
JP2012138044A (ja) * 2010-12-28 2012-07-19 Toshiba Corp プロセス状態監視装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7496481B1 (ja) 2024-02-15 2024-06-06 株式会社インターネットイニシアティブ プロセス管理装置およびプロセス管理方法

Similar Documents

Publication Publication Date Title
CN113011828B (zh) 更新或重新训练并更新动态人工智能/机器学习模型
Gao et al. Task failure prediction in cloud data centers using deep learning
US10936936B2 (en) Systems and methods for intelligently configuring and deploying a control structure of a machine learning-based dialogue system
Yadwadkar et al. Wrangler: Predictable and faster jobs using fewer resources
US7730364B2 (en) Systems and methods for predictive failure management
US8112758B2 (en) Methods and apparatus for resource allocation in partial fault tolerant applications
US11860721B2 (en) Utilizing automatic labelling, prioritizing, and root cause analysis machine learning models and dependency graphs to determine recommendations for software products
CN112668988A (zh) 使用人工智能(ai)的媒体到工作流生成
JP7329162B1 (ja) 情報処理装置および情報処理方法
US10732873B1 (en) Timeout mode for storage devices
US20210200535A1 (en) Scalable code repository with green master
US20230107316A1 (en) Automatic data transfer between a source and a target using semantic artificial intelligence for robotic process automation
KR102502324B1 (ko) 로봇 프로세스 자동화를 위한 머신 학습 모델 재훈련 파이프라인
Pinto et al. Hadoop distributed computing clusters for fault prediction
Tran et al. Proactive stateful fault-tolerant system for kubernetes containerized services
WO2016118792A1 (en) Text classification using bi-directional similarity
US20200364104A1 (en) Identifying a problem based on log data analysis
US11935129B2 (en) Methods for automatically determining injury treatment relation to a motor vehicle accident and devices thereof
US20230289648A1 (en) Generating validated quantum function invocations
US11797770B2 (en) Self-improving document classification and splitting for document processing in robotic process automation
US20220100964A1 (en) Deep learning based document splitter
EP3905144A1 (en) Machine learning model retraining pipeline for robotic process automation
EP4140098A1 (en) Automated reasoning for event management in cloud platforms
Wang et al. SaaS software performance issue diagnosis using independent component analysis and restricted Boltzmann machine
US20240118991A1 (en) Application scenario injection and validation system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230511

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20230511

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230803

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230804

R150 Certificate of patent or registration of utility model

Ref document number: 7329162

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150